Поделиться через


Конфигурация сервера: кэш проверки доступа

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

При доступе к объектам базы данных SQL Server проверка доступа кэшируется во внутренней структуре, называемой кэшем результатов проверки доступа. В экземпляре SQL Server с высокой скоростью выполнения нерегламентированного запроса можно заметить множество записей маркера проверки доступа, имеющих класс 65535 в представлении sys.dm_os_memory_cache_entries . Записи маркера проверки доступа с классом 65535 представляют специальные записи кэша. Эти записи кэша используются для накопительных проверок разрешений для запросов.

Например, можно выполнить следующий запрос:

SELECT *
FROM t1
INNER JOIN t2
INNER JOIN t3;

В этом случае SQL Server вычисляет совокупную проверку разрешений для этого запроса. Эта проверка определяет, имеет ли пользователь разрешения SELECT для t1, t2и t3. Эти результаты совокупной проверки разрешений внедряются в запись маркера проверки доступа и вставляются в хранилище кэша проверки доступа с идентификатором 65535. Если один пользователь повторно использует или выполняет этот запрос несколько раз, SQL Server однократно повторно использует запись кэша маркера проверки доступа.

Чтобы оптимизировать использование этого кэша, вы можете применять различные методы параметризации запросов или преобразовать шаблоны часто используемых запросов для использования хранимых процедур.

Параметр access check cache bucket count определяет количество хэш-контейнеров, используемых для кэша результатов проверки доступа.

Параметр access check cache quota определяет количество записей, хранящихся в кэше результатов проверки доступа. При достижении максимального количества записей самые старые записи удаляются из кэша результатов проверки доступа.

Замечания

Значение по умолчанию 0 указывает на то, что этими параметрами управляет SQL Server. Значения по умолчанию преобразуются в следующие внутренние конфигурации:

SQL Server 2016 (13.x) и более поздних версий

Параметр конфигурации Архитектура сервера Количество записей по умолчанию
access check cache quota x64 1024
access check cache bucket count x64 256

SQL Server 2008 (10.x) до SQL Server 2014 (12.x)

Параметр конфигурации Архитектура сервера Количество записей по умолчанию
access check cache quota x86 1024
x64 и IA-64 28,192,048
access check cache bucket count x86 256
x64 и IA-64 2048

В редких случаях производительность может быть улучшена путем изменения этих параметров. Например, если используется слишком много памяти, возможно, придется уменьшить размер кэша результатов проверки доступа. Также может потребоваться увеличить размер кэша результатов проверки доступа, если при пересчете разрешений возникнет высокая загрузка ЦП.

Рекомендуем изменять эти параметры только под руководством службы поддержки пользователей Майкрософт. Если вы хотите изменить access check cache bucket count значения и access check cache quota значения, используйте соотношение 1:4. Например, если изменить access check cache bucket count значение 512на, следует изменить access check cache quota значение 2048на .