Leer en inglés

Compartir a través de


Degradación del rendimiento en SQL Server con el cumplimiento de criterios comunes habilitado

Síntomas

Cuando tenga habilitada la opción de configuración de cumplimiento de criterios comunes en SQL Server, es posible que observe una degradación en el rendimiento de SQL Server.

Cumplimiento de criterios comunes

Después de habilitar la opción de cumplimiento de criterios comunes en SQL Server, puede experimentar bloqueos en espera y sobrecarga de auditoría de cumplimiento de criterios comunes cuando varias autenticaciones simultáneas usan el mismo inicio de sesión.

Después de habilitar esta opción, puede experimentar una degradación lenta en el rendimiento. Además, es posible que vea esperas altas LCK_M_SCH_M en las estadísticas de rendimiento. LCK_M_SCH_M es un bloqueo de modificación de esquema que impide el acceso a una tabla mientras se produce una operación de lenguaje de definición de datos (DDL). También encontrará registros de proceso bloqueados en los que una LOGIN_STATS tabla de la base de datos maestra espera mucho tiempo. Esta tabla se usa para contener estadísticas de inicio de sesión. Cuando hay muchos inicios de sesión y cierres de sesión, puede haber contención en esta tabla.

Para comprender por qué se produce un LCK_M_SCH_M evento de espera, ejecute los siguientes comandos:

SQL
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

Al habilitar el cumplimiento de criterios comunes, también se habilita una medida de seguridad denominada Protección de la información residual (RIP). RIP requiere que una asignación de memoria se sobrescriba con un patrón de bits conocido antes de que la memoria se reasigne a un nuevo recurso. Por lo tanto, con muchos inicios de sesión y cierres de sesión, hay una degradación del rendimiento en la memoria porque se debe sobrescribir la asignación de memoria.

Solución alternativa

Si el cumplimiento de criterios comunes no es un requisito estricto, considere la posibilidad de deshabilitarlo para reducir la sobrecarga de auditoría y mejorar el rendimiento. Para deshabilitar la opción, ejecute los siguientes comandos:

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

Más información

Configuración del servidor habilitada para el cumplimiento de criterios comunes