Конфигурация сервера: кэш проверки доступа
Область применения: 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
на .