Tengo curiosidad, una de las ediciones SQL 2012 Enterprise con 128 GB de RAM de base de datos es de 370 GB y la cantidad creciente de memoria utilizada por el empleado de memoria de bloqueos (OBJECTSTORE_LOCK_Manager) que muestra 7466016 KB. También puedo confirmar eso mirando el contador de rendimientoselect * from sys.dm_os_performance_counters where counter_name = 'Lock Memory (KB)'
Sin embargo, cuando ejecuto la consulta
select count(*) from sys.dm_tran_locks
muestra solo 16 cerraduras. Entonces, ¿qué está usando más de 7 GB de bloqueos? ¿Hay una manera de averiguarlo?
¿Significa eso que una vez que se ha asignado la memoria para los bloqueos, SQL aún no se ha desasignado? En las últimas 1 hora no veo un recuento de bloqueos superior a 500 pero la memoria de bloqueo permanece igual.
La memoria máxima del servidor es de 106 GB. No utilizamos páginas de bloqueo en la memoria y no veo ninguna presión de memoria ni ningún error en el registro de errores en las últimas 12 horas. El contador de MBytes disponible muestra más de 15 GB de memoria disponible.
El monitor de actividad muestra constantemente 0 tareas de espera, por lo que obviamente no hay bloqueo.
Teniendo en cuenta que el bloqueo del servidor SQL toma aproximadamente 100 bytes de memoria, 7 GB es mucha memoria y trata de averiguar quién lo está usando.
Ejecuté una transacción de informe de tablero de tablero del servidor por conteo de bloqueo que dice "actualmente no se están ejecutando transacciones de bloqueo en el sistema. Sin embargo, la memoria de bloqueo todavía se muestra como se indicó anteriormente. DB está más ocupado durante las horas de la noche.