it-source

SQL Server에서 SqlDataReader로 데이터를 가져오는 방식은 무엇입니까?

criticalcode 2023. 7. 15. 10:14
반응형

SQL Server에서 SqlDataReader로 데이터를 가져오는 방식은 무엇입니까?

이 코드를 호출할 때:

using (var connection = new SqlConnection(connectionString))
{
    var command = new SqlCommand("SELECT * FROM Table", connection);
    connection.Open();
    using (var reader = command.ExecuteReader())
    {
        while(reader.Read())
        {
            // Do something here
        }
    }
}

내부적으로 무슨 일이 일어납니까?네트워크 수준에서 어떻게 작동합니까?각 호출에 대해 데이터베이스에 대한 새로운 왕복 이동을 수행합니까?Read또는 내부적으로 배치 읽기가 구현되어 있습니까?

방금 ODP.NET에서 제공하는 정보를 읽었기 때문에 물어봅니다.FetchSize쌍방의 재산OracleCommand그리고.OracleDataReader데이터베이스에 대한 한 번의 왕복으로 얼마나 많은 레코드를 미리 로드해야 하는지에 대한 정의로 이해합니다.SQL Server가 비슷한 방식으로 작동하는지, 어딘가에 구성할 수 있는 비슷한 동작이 있는지 궁금합니다.이러한 구성을 찾을 수 없습니다.SqlCommand,SqlDataReader또는CommandBehavior.

데이터는 SqlConnection 크기의 패킷으로 sql 서버에서 클라이언트로 스트리밍됩니다.PacketSize 속성입니다.클라이언트가 네트워크 카드의 버퍼가 채워질 만큼 빨리 결과를 읽을 수 없으면 프로토콜은 이를 감지하여 수신을 중지하고 SQL 서버의 네트워크 카드가 버퍼를 가득 채워서 모든 데이터 전송을 중지합니다.프로토콜 수준으로 내려가려면 TDS 프로토콜을 확인하십시오.

네트워크 통신의 정확한 세부 사항은 코드 샘플 외부의 많은 부분에 의존한다고 생각합니다. 부분적으로는 SQL Server 연결 풀링 때문입니다. 하지만 당신이 찾고 있는 것은SqlConnection.PacketSize속성(MSDN).

언급URL : https://stackoverflow.com/questions/6033451/how-does-fetching-data-from-sql-server-to-sqldatareader-work

반응형