블록 커서
많은 애플리케이션은 네트워크를 통해 데이터를 가져오는 데 상당한 시간을 소비합니다. 이 시간의 일부는 실제로 네트워크를 통해 데이터를 가져오는 데 소요되며, 그 중 일부는 드라이버가 데이터 행을 요청하는 호출과 같은 네트워크 오버헤드에 소요됩니다. 애플리케이션에서 블록 또는 팻, 커서를 효율적으로 사용하는 경우 한 번에 둘 이상의 행을 반환할 수 있는 후자의 시간을 줄일 수 있습니다.
애플리케이션에는 항상 블록 커서를 사용하는 옵션이 있습니다. 한 번에 하나의 행만 가져올 수 있는 데이터 원본에서는 드라이버에서 블록 커서를 시뮬레이션해야 합니다. 이 작업은 여러 개의 단일 행 페치를 수행하여 수행할 수 있습니다. 성능 향상을 제공할 가능성은 낮지만 애플리케이션에 대한 기회가 열립니다. 그런 다음 DBMS가 기본적으로 블록 커서를 구현하고 해당 DBMS와 연결된 드라이버가 이를 노출함에 따라 이러한 애플리케이션의 성능이 향상됩니다.
블록 커서가 있는 단일 인출에서 반환되는 행을 행 집합이라고 합니다. 행 집합을 결과 집합과 혼동하지 않는 것이 중요합니다. 결과 집합은 데이터 원본에서 유지되지만 행 집합은 애플리케이션 버퍼에서 유지 관리됩니다. 결과 집합은 고정되어 있지만 행 집합은 그렇지 않습니다. 새 행 집합을 가져올 때마다 위치와 내용이 변경됩니다. 기존 SQL 정방향 전용 커서와 같은 단일 행 커서가 현재 행을 가리키는 것처럼 블록 커서는 현재 행으로 간주될 수 있는 행 집합을 가리킵니다.
여러 행을 가져올 때 단일 행에서 작동하는 작업을 수행하려면 애플리케이션에서 먼저 현재 행인 행을 나타내야 합니다. 현재 행은 SQLGetData 호출 및 배치된 업데이트 및 삭제 문에 필요합니다. 블록 커서가 먼저 행 집합을 반환하는 경우 현재 행은 행 집합의 첫 번째 행입니다. 현재 행을 변경하기 위해 애플리케이션은 SQLSetPos 또는 SQLBulkOperations(책갈피로 업데이트)를 호출합니다. 다음 그림에서는 결과 집합, 행 집합, 현재 행, 행 집합 커서 및 블록 커서의 관계를 보여 줍니다. 자세한 내용은 이 섹션의 뒷부분에 있는 블록 커서 사용, SQLSetPos 를 사용한 위치 지정 업데이트 및 삭제 문 및 데이터 업데이트를 참조하세요.
커서가 블록 커서인지 여부는 스크롤 가능 여부와 무관합니다. 예를 들어 보고서 애플리케이션의 대부분의 작업은 행을 검색하고 인쇄하는 데 소요됩니다. 이 때문에 전방 전용 블록 커서에서 가장 빠르게 작동합니다. 앞으로 전용 커서를 사용하여 스크롤 가능한 커서의 비용을 방지하고 블록 커서를 사용하여 네트워크 트래픽을 줄입니다.
이 섹션에서는 다음 항목을 다룹니다.