cursor threshold 옵션

cursor threshold 옵션을 사용하여 커서 키 집합이 비동기적으로 생성되는 커서 집합의 행 개수를 지정할 수 있습니다. 커서에서 결과 집합에 대해 키 집합을 생성할 때 쿼리 최적화 프로그램은 해당 결과 집합에 대해 반환될 행 개수를 계산합니다. 쿼리 최적화 프로그램의 계산 결과, 반환된 행 개수가 이 임계값보다 크면 커서가 계속 채워지는 동안 사용자가 커서에서 행을 인출할 수 있도록 커서가 비동기적으로 생성됩니다. 그렇지 않으면 커서가 동기적으로 생성되고 모든 행이 반환될 때까지 쿼리가 대기합니다.

cursor threshold를 -1로 설정하면 모든 키 집합이 동기적으로 생성되므로 작은 커서 집합에 유리합니다. cursor threshold를 0으로 설정하면 모든 커서 키 집합이 비동기적으로 생성됩니다. 다른 값을 사용하면 쿼리 최적화 프로그램이 커서 집합에 있는 예상 행 개수를 비교하여 이 값이 cursor threshold에 설정된 수를 초과하면 비동기적으로 키 집합을 작성합니다. 결과 집합이 작을수록 동기적 작성 성능이 향상되므로 cursor threshold를 너무 낮게 설정하지 않는 것이 좋습니다.

[!참고]

SQL Server에서는 키 집합 커서 또는 정적 Transact-SQL 커서를 비동기적으로 생성할 수 없습니다. OPEN 또는 FETCH 등의 Transact-SQL 커서 작업은 일괄 처리되므로 Transact-SQL 커서를 비동기적으로 생성하지 않아도 됩니다. SQL Server에서는 각 커서 작업의 클라이언트 왕복 때문에 짧은 대기 시간 OPEN이 문제가 되는 비동기 키 집합 또는 정적 API(응용 프로그래밍 인터페이스) 서버 커서를 계속 지원합니다.

키 집합의 예상 행 개수를 결정하는 최적화 프로그램의 정확도는 커서에 있는 각 테이블 통계의 통용성에 따라 다릅니다.

cursor threshold 옵션은 고급 옵션입니다. sp_configure 시스템 저장 프로시저를 사용하여 설정을 변경하면 show advanced options를 1로 설정해야만 cursor threshold를 변경할 수 있습니다. 이 설정은 서버를 다시 시작하지 않아도 즉시 적용됩니다.