Saltar al contenido
Categoría: SQL Server
2026-01-21

Optimized Locking en SQL Server 2025 para la mejora de la concurrencia de tu base de datos

SQL Server 2025 introduce una esperada mejora en la gestión de la concurrencia con el bloqueo optimizado. Esta funcionalidad, que estaba disponible previamente en Azure SQL Database, llega a SQL Server 2025, prometiendo una gestión más eficiente de las transacciones sin necesidad de modificar el código existente.

¿Qué es el Bloqueo Optimizado?

El Optimized Locking es una técnica avanzada para la gestión de bloqueos en bases de datos que reduce el consumo de memoria y mejora la concurrencia entre transacciones.

Para ello utiliza dos estrategias clave, Transaction ID Locking (bloqueo por identificador de transacción) y Lock After Qualification (bloqueo después de la calificación).

  • Transaction ID Locking (TID Locking): En lugar de bloquear cada fila modificada por una transacción, SQL Server asigna un identificador único (TID) a cada transacción. Las filas modificadas se marcan con este TID, y se utiliza un único bloqueo sobre el TID en lugar de varios bloqueos por fila. Esto reduce la cantidad de bloqueos necesarios y mejora el rendimiento.
  • Lock After Qualification (LAQ): En este enfoque, SQL Server evalúa los predicados de las consultas utilizando la versión más reciente confirmada de la fila, sin necesidad de adquirir un bloqueo inicial. Si el predicado se cumple, se adquiere un bloqueo exclusivo para modificar la fila, lo que mejora la concurrencia al evitar bloqueos innecesarios.

¿En qué beneficia esto?

La implementación de bloqueo optimizado ofrece varios beneficios clave:

  • Reducción del consumo de memoria: Al mantener menos bloqueos activos, se libera memoria para otras operaciones.
  • Mejora de la concurrencia: Las transacciones pueden ejecutarse de manera más simultánea, lo que incrementa el rendimiento general del sistema.
  • Evita la escalada de bloqueos: Al liberar rápidamente los bloqueos de fila, se reduce la probabilidad de que el sistema escale los bloqueos a nivel de página o tabla, lo que mejora la escalabilidad.

Requisitos

Para aprovechar las ventajas del bloqueo optimizado en SQL Server 2025, es necesario habilitar algunas características adicionales:

  • Accelerated Database Recovery (ADR): Debe estar habilitada para usar el bloqueo optimizado.
  • Read Committed Snapshot Isolation (RCSI): Es recomendado habilitar read committed snapshot isolation para un mayor beneficio utilizando Optimized Locking, ya que la técnica Lock After Qualification solamente funciona si RCSI esta habilitado

¿Cómo activar Optimized Locking?

Una vez que se cumplen estos requisitos, se puede activar el bloqueo optimizado a nivel de base de datos con el siguiente comando SQL:

ALTER DATABASE [DatabaseName] SET OPTIMIZED_LOCKING = ON;

Para verificar si el bloqueo optimizado está habilitado:

SELECT DATABASEPROPERTYEX([DatabaseName], 'IsOptimizedLockingOn');

ó

SELECT name, is_memory_optimized_enabled, is_optimized_locking_on

FROM sys.databases

WHERE name = ‘DatabaseName;

GO

Demostración del funcionamiento.

Seleccionamos nuestra base de datos:

Verificamos el estado actual del optimized locking

Ejecutamos varias actualizaciones al mismo tiempo sobre una misma tabla:

BEGIN TRANSACTION;
    UPDATE Products 
    SET Stock = Stock - 1 
    WHERE ProductID = 1;
    WAITFOR DELAY '00:00:05';
COMMIT TRANSACTION;
GO

Comprobamos los bloqueos:

Y vemos las estadísticas de los tiempos de espera relacionados con los bloqueos de objetos.

SELECT 
    wait_type AS WaitType,
    waiting_tasks_count AS TasksWaiting,
    wait_time_ms AS WaitTimeMS,
    max_wait_time_ms AS MaxWaitTimeMS,
    signal_wait_time_ms AS WaitTimeSignalMS
FROM sys.dm_os_wait_stats
WHERE wait_type LIKE 'LCK%'
ORDER BY wait_time_ms DESC;
GO

Ahora vamos a habilitar el optimized locking sobre la base de datos.

Para poder habilitar optimized locking debe de estar habilitado el ADR

ALTER DATABASE OptimizedLockingDemo
SET OPTIMIZED_LOCKING = ON;
GO

Verificamos el estado del optimized locking tras el cambio:

Ejecutamos varias actualizaciones al mismo tiempo sobre una misma tabla:

BEGIN TRANSACTION;
    UPDATE Products 
    SET Stock = Stock - 1 
    WHERE ProductID = 1;
    WAITFOR DELAY '00:00:05';
COMMIT TRANSACTION;
GO

Comprobamos los bloqueos:

Y vemos las estadísticas de los tiempos de espera relacionados con los bloqueos de objetos.

SELECT 
    wait_type AS WaitType,
    waiting_tasks_count AS TasksWaiting,
    wait_time_ms AS WaitTimeMS,

Comparación con el Modelo Tradicional de Bloqueo

Antes de la llegada del bloqueo optimizado, SQL Server utilizaba un modelo de bloqueo tradicional que se basaba en la creación de bloqueos explícitos sobre filas, páginas o tablas. Este enfoque implicaba ciertos problemas:

  • Escalada de bloqueos: Cuando una consulta bloquea muchas filas, SQL Server puede escalar esos bloqueos a nivel de página o tabla, afectando el acceso a datos no conflictivos.
  • Alto consumo de memoria: Cada bloqueo consume memoria, lo que afecta el rendimiento en entornos con alta concurrencia.
  • Contención: Las operaciones de lectura y escritura en registros compartidos por múltiples transacciones generan conflictos, aumentando los tiempos de espera y reduciendo el rendimiento.
  • Escalabilidad limitada: En entornos de alta concurrencia, como bases de datos de comercio electrónico o redes sociales, los cuellos de botella se convierten en un problema significativo.

Con el bloqueo optimizado, SQL Server resuelve estos problemas al utilizar técnicas más eficientes para gestionar las transacciones.

Aunque la lógica de las transacciones y los niveles de aislamiento siguen siendo los mismos (por ejemplo, READ COMMITTED y SNAPSHOT), el comportamiento interno de SQL Server ha mejorado significativamente.

Las mejoras de rendimiento son más evidentes en escenarios de alta concurrencia, como:

  • Cargas masivas de datos.
  • Procesos de ETL que manejan grandes volúmenes de datos.
  • Consultas UPDATE/DELETE con condiciones complejas.
  • Sistemas con múltiples usuarios modificando simultáneamente grandes cantidades de datos.

Conclusión:

El bloqueo optimizado en SQL Server 2025 representa una mejora fundamental en la manera en que SQL Server gestiona la concurrencia y el rendimiento de las bases de datos. Esta funcionalidad permite una mayor eficiencia y escalabilidad sin sacrificar la integridad de los datos ni requerir cambios en el código existente.

Al reducir los bloqueos innecesarios y mejorar la gestión de los recursos del sistema, el bloqueo optimizado abre la puerta a bases de datos más rápidas y escalables, particularmente en entornos con alta concurrencia.

Otras Fuentes

  1. Bloqueo optimizado – SQL Server | Microsoft Learn
  2. What’s New in SQL Server 2025 – Brent Ozar Unlimited®
  3. SQL Server 2025: Optimized Locking—A Game Changer for Concurrency and Scalability
  4. What’s new in SQL Server 2025 – Microsoft Tech Community
  5. How Optimized Locking in SQL Server 2025 handles concurrent updates | by Sergio Govoni | CodeX | Medium

Complete este formulario para recibir la guía de Windows Server en Azure
*Obligatorio
Complete este formulario para recibir la guía de Windows Server en Azure
Gracias por rellenar el formulario [name]. ¡Aquí tienes tu eBook Gratis!
Complete este formulario para recibir 4 best practices to implement a comprehensive Zero Trust security approach
*Obligatorio
Complete este formulario para recibir 4 best practices to implement a comprehensive Zero Trust security approach
Gracias por rellenar el formulario [name]. ¡Aquí tienes tu eBook Gratis!
Complete este formulario para recibir Cloud Migration Essentials
*Obligatorio
Complete este formulario para recibir Cloud Migration Essentials
Gracias por rellenar el formulario [name]. ¡Aquí tienes tu eBook Gratis!
Complete este formulario para recibir Cloud security Advice for Nonprofit Leaders
*Obligatorio
Complete este formulario para recibir Cloud security Advice for Nonprofit Leaders
Gracias por rellenar el formulario [name]. ¡Aquí tienes tu eBook Gratis!
Complete este formulario para recibir Prevent data leaks with Microsoft 365 Business Premium
*Obligatorio
Complete este formulario para recibir Prevent data leaks with Microsoft 365 Business Premium
Gracias por rellenar el formulario [name]. ¡Aquí tienes tu eBook Gratis!
Complete this form to recieve the guide of Windows Server on Azure
*Required
Complete this form to recieve the guide of Windows Server on Azure
Thank you for filling out the form [name]. Here's your Free eBook!
Complete this form to recieve 4 best practices to implement a comprehensive Zero Trust security approach
*Required
Complete this form to recieve 4 best practices to implement a comprehensive Zero Trust security approach
Thank you for filling out the form [name]. Here's your Free eBook!
Complete this form to recieve Cloud Migration Essentials
*Required
Complete this form to recieve Cloud Migration Essentials
Thank you for filling out the form [name]. Here's your Free eBook!
Complete this form to recieve Cloud security Advice for Nonprofit Leaders
*Required
Complete este formulario para recibir Cloud security Advice for Nonprofit Leaders
Thank you for filling out the form [name]. Here's your Free eBook!
Complete this form to recieve Prevent data leaks with Microsoft 365 Business Premium
*Obligatorio
Complete this form to recieve Prevent data leaks with Microsoft 365 Business Premium
Thank you for filling out the form [name]. Here's your Free eBook!
Complete this form to recieve Cloud Migration Simplified Ebook.
*Obligatorio
Complete this form to recieve Prevent data leaks with Microsoft 365 Business Premium
Thank you for filling out the form [name]. Here's your Free eBook!