Снижение производительности в SQL Server с поддержкой соответствия общим критериям

Симптомы

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

Соответствие общим критериям

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

После включения этого параметра может возникнуть замедление снижения производительности. Кроме того, в статистике производительности может отображаться большое LCK_M_SCH_M число ожиданий. LCK_M_SCH_M — это блокировка изменения схемы, которая предотвращает доступ к таблице во время операции языка определения данных (DDL). Вы также найдете заблокированные записи процесса, в которых LOGIN_STATS таблица в базе данных master ожидает долгое время. Эта таблица используется для хранения статистики входа. При наличии большого количества имен входа и выхода в эту таблицу может возникнуть спор.

Чтобы понять, почему LCK_M_SCH_M происходит событие ожидания, выполните следующие команды:

CREATE EVENT SESSION [CreateDumpOnLCKMSCHM] ON SERVER
ADD EVENT sqlos.wait_info(
    ACTION(package0.callstack,sqlserver.create_dump_all_threads)
    WHERE (([opcode]=('Begin')) AND ([wait_type]=('LCK_M_SCH_M'))))
ADD TARGET package0.event_file(SET filename=N'CreateDumpOnLCKMSCHM',max_file_size=(128))
GO

ALTER EVENT SESSION [TestCreateDump] ON SERVER
STATE = START
GO

WHILE ((SELECT COUNT(1) FROM sys.dm_server_memory_dumps) < 5)
BEGIN
       WAITFOR DELAY '00:00:00.100'

END

ALTER EVENT SESSION [CreateDumpOnLCKMSCHM] ON SERVER
STATE = STOP

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

Обходное решение

Если соблюдение общих критериев не является строгим требованием, попробуйте отключить его, чтобы сократить затраты на аудит и повысить производительность. Чтобы отключить этот параметр, выполните следующие команды:

sp_configure 'common criteria compliance enabled', 0
GO
RECONFIGURE
GO

После изменения конфигурации перезапустите службы SQL Server, чтобы изменения вступили в силу.

Дополнительная информация

Конфигурация сервера с поддержкой соответствия общим критериям