Конфигурация сервера: пороговое значение курсора

Область применения: SQL Server

В этой статье описывается настройка cursor threshold параметра конфигурации сервера в SQL Server с помощью SQL Server Management Studio или Transact-SQL. Параметр cursor threshold указывает количество строк в наборе курсоров, с помощью которых наборы ключей курсоров создаются асинхронно. Когда курсоры создают набор ключей для результирующий набор, оптимизатор запросов оценивает количество строк, возвращаемых для этого результирующий набор. Если оптимизатор запросов определяет, что число возвращенных строк превышает указанное пороговое значение, курсор формируется асинхронно, позволяя пользователю извлекать из него строки при продолжающемся процессе его заполнения. В противном случае курсор формируется синхронно, и запрос ожидает, пока не будут возвращены все строки.

Ограничения

SQL Server не поддерживает асинхронное создание управляемых набором ключей или статических курсоров Transact-SQL. Операции курсора Transact-SQL, такие как OPEN или FETCH пакетные, поэтому не требуется асинхронное создание курсоров Transact-SQL. SQL Server продолжает поддерживать асинхронные серверные курсоры на основе набора ключей или статических курсоров интерфейса программирования приложений (API), где низкая задержка OPEN является проблемой из-за обхода клиента для каждой операции курсора.

Точность определения приблизительного количества строк в наборе ключей зависит от валюты, используемой в статистике по каждой таблице курсора с помощью оптимизатора запросов.

Рекомендации

Это расширенный параметр, и изменять его следует только опытным администраторам баз данных или сертифицированным по SQL Server специалистам.

Если задано значение cursor threshold -1, все наборы ключей создаются синхронно, что обеспечивает преимущества небольших наборов курсоров. Если задано значение cursor threshold 0, все наборы ключей курсоров создаются асинхронно. С другими значениями оптимизатор запросов сравнивает количество ожидаемых строк в наборе курсоров и создает набор ключей асинхронно, если он превышает набор чисел.cursor threshold Не устанавливайте cursor threshold слишком низко, так как небольшие результирующие наборы лучше строятся синхронно.

Разрешения

sp_configure Разрешения на выполнение без параметров или только с первым параметром предоставляются всем пользователям по умолчанию. Чтобы выполнить sp_configure оба параметра для изменения параметра конфигурации или запуска RECONFIGURE инструкции, пользователю необходимо предоставить ALTER SETTINGS разрешение на уровне сервера. Разрешение ALTER SETTINGS неявным образом предоставлено предопределенным ролям сервера sysadmin и serveradmin.

Использование SQL Server Management Studio

  1. В обозревателе объектов щелкните правой кнопкой мыши сервер и выберите пункт Свойства.

  2. Щелкните узел Дополнительно.

  3. В разделе "Прочие" измените cursor threshold параметр на нужное значение.

Использование Transact-SQL

  1. Соединитесь с ядром СУБД .

  2. На стандартной панели выберите пункт Создать запрос.

  3. Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. В этом примере описывается использование хранимой процедуры sp_configure для задания значения параметра cursor threshold равным 0 , при котором наборы ключей курсора формируются асинхронно.

    USE master;
    GO
    
    EXECUTE sp_configure 'show advanced options', 1;
    GO
    
    RECONFIGURE;
    GO
    
    EXECUTE sp_configure 'cursor threshold', 0;
    GO
    
    RECONFIGURE;
    GO
    
    EXECUTE sp_configure 'show advanced options', 0;
    GO
    
    RECONFIGURE;
    GO
    

Дополнительные сведения см. в разделе "Параметры конфигурации сервера".

Дальнейшие действия. После настройки параметра порогового значения курсора

Параметр вступает в силу немедленно, без перезапуска сервера.