You are on page 1of 24

Fundamentos de los Bloqueos

en SQL Server
Enrique Puig | MAP | MCITP
e.puig@Outlook.es
@epuignouselles

Moderador: Freddy Angarita


Gracias a nuestros auspiciadores

Database Security as Easy as A-B-C

http://www.greensql.com

Hardcore Developer and IT SQL Server Performance


Training Try PlanExplorer today!

http://www.pluralsight.com http://www.sqlsentry.com
Próximos SQL Saturday

6 de Diciembre de 2014
https://www.sqlsaturday.com/351/register.aspx

24 de Enero de 2015
https://www.sqlsaturday.com/346/register.aspx

18 de Abril de 2015
https://www.sqlsaturday.com/368/register.aspx

9 de Mayo de 2015
https://www.sqlsaturday.com/373/register.aspx
Capítulo Global PASS en Español

Reuniones semanales todos los miércoles a


las 12PM UTC-5 (Hora de Colombia)

https://www.facebook.com/SpanishPASSVC

4 4
Asistencia Técnica

Si requiere asistencia Use el botón de Zoom Escriba sus preguntas


durante la sesión debe para ajustar su pantalla en la sección de
usar la sección de al tamaño deseado preguntas que esta en el
preguntas que esta en el menú de la derecha
menú de la derecha.

5
Enrique Puig

Enrique Puig es ingeniero informático especializado en SQL Server. Ponente


habitual de eventos como Pass 24 horas, Virtual Spanish Chapters, Webcasts
de Microsoft y Eventos de Lanzamiento. Adicionalmente mantiene su blg
personal (www.sqlserverpasion.com). Actualmente es el DBA de producción en
RipLife Gaming and Technologies.

6 6
Objetivos

Comprender que son los bloqueos y para que sirven

Introducir mecanismos de monitorización de bloqueos

Introducir técnicas para combatir a los bloqueos

7
Agenda

• ¿Qué son los bloqueos?


• Niveles de aislamiento
• Tipos de bloqueos
• Combatiendo los bloqueos
• Conclusiones
• Preguntas

8 8
¿Qué son los Bloqueos?
• Modelos de Aislamiento
• Bloqueos (pesimista)
• Versionado de filas (optimista)
A •Atomicidad
• Aseguran el Aislamiento
• Leyendo datos consistentes
• Si no son consistentes esperas
C •Consistencia

I •Aislamiento

D •Durabilidad

9 9
Niveles de Aislamiento – Bloqueos

ALTA BAJA

READ UNCOMMITED

CONSISTENCIA
CONCURRENCIA

READ COMMITED

REPEATABLE READ

SERIALIZABLE
BAJA ALTA

10 10
Tipos de Bloqueos básicos y compatibilidades

Shared Lock (S)


• Lecturas de datos
Exclusive Lock (X)
• Modificaciones de datos
• INSERT / DELETE / UPDATE
Compatibilidades:

Shared (S) Exclusive (X)


Shared (S) N C C: CONFLICT
N: NO CONFLICT
Exclusive (X) C C

11 11
¿Qué es lo que se bloquea?

Se bloquean recursos: Table


File
• KEY / RID
• PAGE
Object
• FILE Page
• OBJECT
• … Row
Escalado de bloqueos
• Mecanismo de conversión
• Muchos bloqueos de bajo nivel a pocos bloqueos de alto nivel
• Numero de bloqueos >5000
• Disminuyen los recursos para gestionar bloqueos
• Aumentan los conflictos por concurrencia

12 12
Hints para control de granularidad

Hint Descripción
ROWLOCK Solicita bloqueo a nivel de fila (KEY/RID)
TABLOCK Solicita bloqueo a nivel de tabla
PAGLOCK Solicita bloqueo a nivel de página de datos
TABLOCKX Solicita bloqueo exclusivo a nivel de Tabla
NOLOCK Desestima bloqueos adquiridos y produce
lecturas sucias “Dirty reads”

13 13
DEMO

14
Combatiendo los bloqueos

• SCAN vs. SEEK


Indexación • Lock Scalation cofig

Row • SNAPSHOT
• READ COMMITED SNAPSHOT
Versioning • Impacto en TempDB

• READ UNCOMMITED
Dirty Reads • NOLOCK
• Vista inconsistente de datos

15 15
Combatiendo los bloqueos - Indexación
Lo mas común: Key/RID Locks
Tipo Tabla:HEAP

TRN 1: RID Lock


update dbo.tab Blocked by TRN1
set val=99
where id=22; TRN2: TABLE SCAN

Id:1 Id:4 Id:10 Id:3 Id:22 Id:18 Id:19 Id:33 Id:89 Id:40
TRN 2:
Val:12 Val:10 Val:21 Val:34 Val:99 Val:14 Val:22 Val:8 Val:62 Val:99
update dbo.tab
set val=99
where id=40; TRN1: TABLE SCAN

16 16
Combatiendo los bloqueos - Indexación
Lo mas común: Key/RID Locks
Tipo Tabla: CLUSTERED INDEX
TRN 1 Root TRN 2
Index Seek Index Seek
TRN 1:
update dbo.tab
set val=99
where id=22;
Int. Int

TRN 2:
Id:1 Id:4 Id:10 Id:3 Id:22 Id:18 Id:19 Id:33 Id:89 Id:40
update dbo.tab
Val:12 Val:10 Val:21 Val:26 Val:99 Val:32 Val:22 Val:8 Val:62 Val:99
set val=99
where id=40;

Sin Transacciones bloqueadas!


17 17
DEMO

18
Combatiendo los bloqueos – Versionado de filas

SNAPSHOT / READ COMMITED NAPSHOT


IMPLICACIONES
• Impacto en TempDB (row versions)
• Configuraciones adicionales sobre las BBDDs
• Cambio estructura de las páginas

19 19
DEMO

20
Conclusiones

• Bloqueos pueden causar deterioro en el rendimiento de nuestras Apps


• Necesarios para mantener la coherencia de los datos (modelo pesimista)
• No son problemas físicos, más bien lógicos
• Más hardware no lo solucionará
• Para solucionarlo:
• Revisa estrategias de indexación
• Considera utilizar SNAPSHOT | READ COMMITED SNAPSHOT
• Dimensiona acorde (TempDB)
• Evita realizar lecturas sucias (Dirty Reads)
• NOLOCK | READ UNCOMMITED
• Pueden causar problemas y mostrar datos erróneos

21 21
Preguntas?
A continuación …

Optimización de motores SQL Server


desde el código hasta la administración
Julián Castiblanco
Gracias por participar

You might also like