locks (opción)

Utilice la opción locks para establecer el número máximo de bloqueos disponibles y limitar así la cantidad de memoria que el Database Engine (Motor de base de datos) utiliza para los mismos. El valor predeterminado es 0, lo que permite al Database Engine (Motor de base de datos) asignar y cancelar la asignación de estructuras de bloqueo de manera dinámica, basándose en los requisitos variables del sistema.

Cuando se inicia el servidor con un valor de 0 para locks, el administrador de bloqueos obtendrá suficiente memoria del Database Engine (Motor de base de datos) para un grupo inicial de 2.500 estructuras de bloqueo. A medida que se agota el grupo de bloqueos, se adquiere más memoria para el grupo.

Generalmente, si se necesita más memoria para el grupo de bloqueos que la disponible en el conjunto de memoria del Database Engine (Motor de base de datos), y hay más memoria en el equipo (no se ha alcanzado el umbral especificado en la opción max server memory), el Database Engine (Motor de base de datos) asignará memoria de manera dinámica para satisfacer la solicitud de bloqueos. No obstante, si la asignación de esa memoria puede causar la paginación en el sistema operativo (por ejemplo, si se está ejecutando otra aplicación en el mismo equipo que una instancia de SQL Server y está utilizando esa memoria), no se asignará más espacio para bloqueos. El grupo de bloqueos dinámicos no obtendrá más del 60% de la memoria asignada para el Database Engine (Motor de base de datos). Cuando el grupo de bloqueos alcanza el 60% de la memoria obtenida por una instancia del Database Engine (Motor de base de datos), o cuando ya no queda más memoria disponible en el equipo, se generará un error si se producen más solicitudes de bloqueos.

La configuración recomendada es permitir que SQL Server utilice los bloqueos de manera dinámica. No obstante, puede establecer la opción locks y suplantar la capacidad de SQL Server para asignar recursos de bloqueo de manera dinámica. Cuando se selecciona un valor para locks distinto de 0, el Database Engine (Motor de base de datos) no puede asignar más bloqueos que el número especificado en el valor locks. Aumente este valor si SQL Server muestra un mensaje en el que se indica que se ha superado el número de bloqueos disponibles. Como cada bloqueo consume memoria (96 bytes por bloqueo), el aumento de este valor puede requerir el aumento de la cantidad de memoria dedicada al servidor.

La opción locks también afecta al momento en el que se produce la extensión de bloqueo. Cuando se selecciona el valor 0 para locks, la extensión de bloqueo se produce cuando la memoria utilizada por las estructuras de bloqueo actuales alcanza el 40% del conjunto de memoria del Database Engine (Motor de base de datos). Cuando se selecciona un valor distinto de 0 para locks, la extensión de bloqueo se produce cuando el número de bloqueos alcanza el 40% del valor especificado para locks.

locks es una opción avanzada. Si utiliza el procedimiento almacenado del sistema sp_configure para cambiar el valor, sólo podrá cambiar la opción locks cuando el valor de show advanced options sea 1. El valor surte efecto una vez reiniciado el servidor.

En los equipos que utilizan el acceso no uniforme a memoria (NUMA), el valor de los bloqueos es por nodo NUMA, lo que implica que un valor de 10.000 en un equipo de cuatro nodos permite 40.000 bloqueos. El número de nodos NUMA se puede determinar utilizando la consulta siguiente:

SELECT COUNT(DISTINCT parent_node_id)
FROM sys.dm_os_schedulers 
WHERE parent_node_id <> 32

Vea también

Conceptos

Versiones de filas y bloqueo
Concentración de bloqueos (motor de base de datos)
Establecer las opciones de configuración del servidor

Otros recursos

RECONFIGURE (Transact-SQL)
sp_configure (Transact-SQL)

Ayuda e información

Obtener ayuda sobre SQL Server 2005