커서 위치의 중요성
모든 커서는 임시 리소스를 사용하여 데이터를 저장합니다. 이러한 리소스는 메모리, 디스크 페이징 파일, 임시 디스크 파일 또는 데이터베이스의 임시 스토리지일 수 있습니다. 이러한 리소스가 클라이언트 컴퓨터에 있는 경우 커서를 클라이언트 쪽 커서라고 합니다. 이러한 리소스가 서버에 있는 경우 커서를 서버 쪽 커서라고 합니다.
클라이언트 쪽 커서
ADO에서는 adUseClient CursorLocationEnum을 사용하여 클라이언트 쪽 커서를 호출합니다. 비 키 집합 클라이언트 쪽 커서를 사용하면 서버는 네트워크를 통해 전체 결과 집합을 클라이언트 컴퓨터로 보냅니다. 클라이언트 컴퓨터는 커서 및 결과 집합에 필요한 임시 리소스를 제공하고 관리합니다. 클라이언트 쪽 애플리케이션은 전체 결과 집합을 탐색하여 필요한 행을 결정할 수 있습니다.
정적 및 키 집합 기반 클라이언트 쪽 커서가 너무 많은 행을 포함하는 경우 워크스테이션에 상당한 부하가 발생할 수 있습니다. 모든 커서 라이브러리는 수천 개의 행을 사용하여 커서를 작성할 수 있지만, 이러한 큰 행 집합을 가져오도록 설계된 애플리케이션은 성능이 좋지 않을 수 있습니다. 물론 예외도 있습니다. 일부 애플리케이션의 경우 대용량 클라이언트 쪽 커서가 완벽하게 적합할 수 있으며 성능이 문제가 되지 않을 수 있습니다.
클라이언트 쪽 커서의 명백한 이점 한 가지는 빠른 응답입니다. 결과 집합이 클라이언트 컴퓨터에 다운로드되면 행 탐색 속도가 매우 빠릅니다. 커서의 리소스 요구 사항이 서버가 아닌 개별 클라이언트에 배치되므로 일반적으로 클라이언트 쪽 커서를 사용하여 애플리케이션을 확장하기가 더 용이할 수 있습니다.
서버 쪽 커서
ADO에서는 adUseServer CursorLocationEnum을 사용하여 서버 쪽 커서를 호출합니다. 서버 쪽 커서를 사용하면 서버 컴퓨터에서 제공하는 리소스를 사용하여 결과 집합을 관리합니다. 서버 쪽 커서는 네트워크를 통해 요청된 데이터만 반환합니다. 이 유형의 커서는 특히 과도한 네트워크 트래픽이 문제가 되는 경우 클라이언트 쪽 커서보다 나은 성능을 제공할 수 있습니다.
그러나 서버 쪽 커서는 적어도 일시적으로는 모든 활성 클라이언트에 귀중한 서버 리소스를 소비한다는 점을 유의해야 합니다. 서버 하드웨어가 활성 클라이언트에서 요청한 모든 서버 쪽 커서를 관리할 수 있도록 적절하게 계획해야 합니다. 또한 서버 쪽 커서는 단일 행 액세스만 제공하므로 속도가 느려질 수 있습니다. 사용할 수 있는 일괄 처리 커서가 없습니다.
서버 쪽 커서는 레코드를 삽입, 업데이트 또는 삭제할 때 유용합니다. 서버 쪽 커서를 사용하면 동일한 연결에서 여러 개의 활성 문을 사용할 수 있습니다.