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
'it-source' 카테고리의 다른 글
MongoDB는 $exists 연산자로 필드의 존재를 확인할 때 인덱스를 사용할 수 있습니까? (0) | 2023.07.15 |
---|---|
Asp.net Core에서 웹 UI를 만드는 데 레이저 페이지가 권장되는 이유는 무엇입니까? (0) | 2023.07.15 |
Postgre를 사용하여 DataJpaTest 실행SQL (0) | 2023.07.15 |
Spring Boot에서 포함된 Tomcat 예외 처리 (0) | 2023.07.15 |
JPA Query를 사용하여 데이터를 DB에 삽입하는 방법은 무엇입니까? (0) | 2023.07.15 |