Compartir a través de


Configuración del servidor: bloqueos

Se aplica a:SQL Server

En este artículo se describe cómo configurar la opción de configuración de servidor locks en SQL Server mediante SQL Server Management Studio o Transact-SQL. La opción locks establece el número máximo de bloqueos disponibles, que limita la cantidad de memoria que usa el motor de base de datos de SQL Server para ellos. El valor predeterminado es 0, lo que permite al Motor de base de datos asignar y cancelar la asignación de estructuras de bloqueo de manera dinámica a partir de los requisitos variables del sistema.

Importante

Esta característica se quitará en una versión futura de SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan.

Recomendaciones

Esta opción es una opción avanzada y solo debe cambiarla un profesional de base de datos experimentado.

Cuando el servidor se inicia con locks establecido en 0, el administrador de bloqueos adquiere suficiente memoria del motor de base de datos para un grupo inicial de 2500 estructuras de bloqueo. A medida que se agota el grupo de bloqueos, se adquiere más memoria para el grupo.

Por lo general, si se requiere más memoria para el grupo de bloqueos que está disponible en el grupo de memoria del motor de base de datos y hay más memoria disponible (no se ha alcanzado el umbral de max server memory (MB)), el motor de base de datos asigna memoria dinámicamente para satisfacer la solicitud de bloqueos. Sin embargo, si la asignación de esa memoria causara paginación a nivel del sistema operativo (por ejemplo, si otra aplicación se está ejecutando en el mismo equipo que una instancia de SQL Server y utiliza esa memoria), no se asigna más espacio de bloqueo. El grupo de bloqueo dinámico no adquiere más del 60 % de la memoria asignada al motor de base de datos. Una vez que el grupo de bloqueos alcanza el 60 % de la memoria adquirida por una instancia del motor de base de datos, o no hay más memoria disponible en el equipo, las solicitudes adicionales para bloqueos generan un error.

La configuración recomendada es permitir que SQL Server utilice los bloqueos de manera dinámica. Sin embargo, puede establecer locks e invalidar la capacidad de SQL Server para asignar recursos de bloqueo dinámicamente. Cuando locks se establece en un valor distinto de 0, el motor de base de datos no puede asignar más bloqueos que el valor especificado en locks. Aumente este valor si SQL Server muestra un mensaje que superó 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 cuando se produce la extensión de bloqueo. Cuando locks se establece en 0, la extensión de bloqueo se produce cuando la memoria usada por las estructuras de bloqueo actual alcanza el 40 % del grupo de memoria del motor de base de datos. Cuando locks no se establece en 0, la extensión de bloqueo se produce cuando el número de bloqueos alcanza el 40 % del valor especificado para locks.

Permisos

De forma predeterminada, todos los usuarios tienen permisos de ejecución en sp_configure sin ningún parámetro o solo con el primero. Para ejecutar sp_configure con ambos parámetros y cambiar una opción de configuración, o para ejecutar la instrucción RECONFIGURE, un usuario debe tener el permiso ALTER SETTINGS en el servidor. Los roles fijos de servidor ALTER SETTINGS y serveradmin tienen el permiso de forma implícita.

Usar SQL Server Management Studio

  1. En el Explorador de objetos, haga clic con el botón derecho en un servidor y seleccione Propiedades.

  2. Seleccione el nodo Avanzado.

  3. En Paralelismo, escriba el valor deseado para la opción locks.

    Utilice la opción locks para establecer el número máximo de bloqueos disponibles, lo que limita la cantidad de memoria que SQL Server utiliza para ellos.

Uso de Transact-SQL

  1. Conéctese con el Motor de base de datos.

  2. En la barra Estándar, seleccione Nueva consulta.

  3. Copie y pegue el ejemplo siguiente en la ventana de consulta y seleccione Ejecutar. En este ejemplo se muestra cómo usar sp_configure para establecer el valor de la opción de locks para establecer el número de bloqueos disponibles para todos los usuarios en 20000.

    USE master;
    GO
    
    EXECUTE sp_configure 'show advanced options', 1;
    GO
    
    RECONFIGURE;
    GO
    
    EXECUTE sp_configure 'locks', 20000;
    GO
    
    RECONFIGURE;
    GO
    
    EXECUTE sp_configure 'show advanced options', 0;
    GO
    
    RECONFIGURE;
    GO
    

Para obtener más información, vea Opciones de configuración de servidor.

Seguimiento Después de configurar la opción de bloqueos

El servidor debe reiniciarse para que el valor surta efecto.