SlideShare una empresa de Scribd logo
1 de 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 
Training 
http://www.pluralsight.com 
SQL Server Performance 
Try PlanExplorer today! 
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 
4 
4 
Reuniones semanales todos los miércoles a 
las 12PM UTC-5 (Hora de Colombia) 
https://www.facebook.com/SpanishPASSVC
5 
Asistencia Técnica 
Si requiere asistencia 
durante la sesión debe 
usar la sección de 
preguntas que esta en el 
menú de la derecha. 
Use el botón de Zoom 
para ajustar su pantalla 
al tamaño deseado 
Escriba sus preguntas 
en la sección de 
preguntas que esta en el 
menú de la derecha
6 
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
7 
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
8 
Agenda 
• ¿Qué son los bloqueos? 
• Niveles de aislamiento 
• Tipos de bloqueos 
• Combatiendo los bloqueos 
• Conclusiones 
• Preguntas 
8
9 
¿Qué son los Bloqueos? 
A •Atomicidad 
C •Consistencia 
I •Aislamiento 
D •Durabilidad 
• Modelos de Aislamiento 
9 
• Bloqueos (pesimista) 
• Versionado de filas (optimista) 
• Aseguran el Aislamiento 
• Leyendo datos consistentes 
• Si no son consistentes esperas
Niveles de Aislamiento – Bloqueos 
ALTA BAJA 
10 
10 
READ UNCOMMITED 
READ COMMITED 
REPEATABLE READ 
SERIALIZABLE 
CONCURRENCIA 
CONSISTENCIA 
BAJA ALTA
Tipos de Bloqueos básicos y compatibilidades 
11 
Shared Lock (S) 
• Lecturas de datos 
Exclusive Lock (X) 
• Modificaciones de datos 
• INSERT / DELETE / UPDATE 
Compatibilidades: 
11 
Shared (S) Exclusive (X) 
Shared (S) N C 
Exclusive (X) C C 
C: CONFLICT 
N: NO CONFLICT
¿Qué es lo que se bloquea? 
12 
Se bloquean recursos: 
• KEY / RID 
• PAGE 
• FILE 
• OBJECT 
• … 
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 
Row 
Page 
Object 
File 
Table
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
15 
Combatiendo los bloqueos 
15 
• SCAN vs. SEEK 
Indexación • Lock Scalation cofig 
• SNAPSHOT 
• READ COMMITED SNAPSHOT 
• Impacto en TempDB 
Row 
Versioning 
• READ UNCOMMITED 
• NOLOCK 
• Vista inconsistente de datos 
Dirty Reads
Combatiendo los bloqueos - Indexación 
TRN2: TABLE SCAN 
16 
Lo mas común: Key/RID Locks 
Tipo Tabla:HEAP 
16 
Id:10 
Val:21 
Id:22 
Val:99 
Id:19 
Val:22 
Id:89 
Val:62 
Id:4 
Val:10 
Id:1 
Val:12 
Id:18 
Val:14 
Id:40 
Val:99 
Id:3 
Val:34 
Id:33 
Val:8 
TRN1: TABLE SCAN 
RID Lock 
Blocked by TRN1 
TRN 1: 
update dbo.tab 
set val=99 
where id=22; 
TRN 2: 
update dbo.tab 
set val=99 
where id=40;
Combatiendo los bloqueos - Indexación 
Lo mas común: Key/RID Locks 
Tipo Tabla: CLUSTERED INDEX 
17 
17 
Root 
Int. Int 
Id:10 
Val:21 
Id:22 
Val:99 
Id:19 
Val:22 
Id:89 
Val:62 
Id:4 
Val:10 
Id:1 
Val:12 
Id:18 
Val:32 
Id:40 
Val:99 
Id:3 
Val:26 
Id:33 
Val:8 
TRN 1: 
update dbo.tab 
set val=99 
where id=22; 
TRN 2: 
update dbo.tab 
set val=99 
where id=40; 
TRN 1 
Index Seek 
TRN 2 
Index Seek 
Sin Transacciones bloqueadas!
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
21 
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
Preguntas?
A continuación … 
Optimización de motores SQL Server 
desde el código hasta la administración 
Julián Castiblanco
Gracias por participar

Más contenido relacionado

Destacado

Frontend Web Parte 3 Usabilidad
Frontend Web Parte 3 UsabilidadFrontend Web Parte 3 Usabilidad
Frontend Web Parte 3 Usabilidad
Toni Martin Avila
 
Sql Saturday CR - Introducción al Optimizador
Sql Saturday CR - Introducción al OptimizadorSql Saturday CR - Introducción al Optimizador
Sql Saturday CR - Introducción al Optimizador
JOSE AHIAS LOPEZ PORTILLO
 
Multiplica tu productividad usando un preprocesador de css
Multiplica tu productividad usando un preprocesador de cssMultiplica tu productividad usando un preprocesador de css
Multiplica tu productividad usando un preprocesador de css
Leonidas Esteban González
 

Destacado (19)

Instalación FrontEnd
Instalación FrontEndInstalación FrontEnd
Instalación FrontEnd
 
Frontend Web Parte 3 Usabilidad
Frontend Web Parte 3 UsabilidadFrontend Web Parte 3 Usabilidad
Frontend Web Parte 3 Usabilidad
 
Robert kiyosaki el cuadrante del flujo de dinero
Robert kiyosaki el cuadrante del flujo de dineroRobert kiyosaki el cuadrante del flujo de dinero
Robert kiyosaki el cuadrante del flujo de dinero
 
Frontend Web Parte 1
Frontend Web Parte 1Frontend Web Parte 1
Frontend Web Parte 1
 
Transacciones en MySQL
Transacciones en MySQLTransacciones en MySQL
Transacciones en MySQL
 
Sql Saturday CR - Introducción al Optimizador
Sql Saturday CR - Introducción al OptimizadorSql Saturday CR - Introducción al Optimizador
Sql Saturday CR - Introducción al Optimizador
 
Introducción a Node.js
Introducción a Node.jsIntroducción a Node.js
Introducción a Node.js
 
Scio Talks - Gobierna el Frontend 1er parte
Scio Talks - Gobierna el Frontend 1er parteScio Talks - Gobierna el Frontend 1er parte
Scio Talks - Gobierna el Frontend 1er parte
 
24 HOP edición Español - Durabilidad diferida de transacciones y mejoras en g...
24 HOP edición Español - Durabilidad diferida de transacciones y mejoras en g...24 HOP edición Español - Durabilidad diferida de transacciones y mejoras en g...
24 HOP edición Español - Durabilidad diferida de transacciones y mejoras en g...
 
Sql Server - Troubleshooting De Bloqueos (Parte I)
Sql Server - Troubleshooting De Bloqueos (Parte I)Sql Server - Troubleshooting De Bloqueos (Parte I)
Sql Server - Troubleshooting De Bloqueos (Parte I)
 
Multiplica tu productividad usando un preprocesador de css
Multiplica tu productividad usando un preprocesador de cssMultiplica tu productividad usando un preprocesador de css
Multiplica tu productividad usando un preprocesador de css
 
Curso node.js
Curso node.js Curso node.js
Curso node.js
 
Curso de javascript y node avanzado
Curso de javascript y node avanzadoCurso de javascript y node avanzado
Curso de javascript y node avanzado
 
Servidor API REST con Node.js
Servidor API REST con Node.jsServidor API REST con Node.js
Servidor API REST con Node.js
 
Transacciones
TransaccionesTransacciones
Transacciones
 
Mejoras del lenguaje T-SQL 2012 (parte 1) | SolidQ Summit 2012
Mejoras del lenguaje T-SQL 2012 (parte 1) | SolidQ Summit 2012Mejoras del lenguaje T-SQL 2012 (parte 1) | SolidQ Summit 2012
Mejoras del lenguaje T-SQL 2012 (parte 1) | SolidQ Summit 2012
 
Front End & Responsive Web Design | DevFest Merida
Front End & Responsive Web Design | DevFest MeridaFront End & Responsive Web Design | DevFest Merida
Front End & Responsive Web Design | DevFest Merida
 
Las Herramientas de un Frontend
Las Herramientas de un FrontendLas Herramientas de un Frontend
Las Herramientas de un Frontend
 
Introducción al desarrollo web frontend
Introducción al desarrollo web frontendIntroducción al desarrollo web frontend
Introducción al desarrollo web frontend
 

Similar a 24 HOP edición Español - Fundamentos de los bloqueos en sql server enrique puig

24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala
24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala
24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala
SpanishPASSVC
 
24 HOP edición Español - Optimizacion de motores sql server desde el codigo h...
24 HOP edición Español - Optimizacion de motores sql server desde el codigo h...24 HOP edición Español - Optimizacion de motores sql server desde el codigo h...
24 HOP edición Español - Optimizacion de motores sql server desde el codigo h...
SpanishPASSVC
 
1_1_1_Aspectos Generales del Lenguaje PLSQL.pptx
1_1_1_Aspectos Generales del Lenguaje PLSQL.pptx1_1_1_Aspectos Generales del Lenguaje PLSQL.pptx
1_1_1_Aspectos Generales del Lenguaje PLSQL.pptx
Matiasnueno
 

Similar a 24 HOP edición Español - Fundamentos de los bloqueos en sql server enrique puig (20)

24 HOP Español - Utilizando cdc para cargar dw on line - Miguel Egea
24 HOP Español - Utilizando cdc para cargar dw on line - Miguel Egea24 HOP Español - Utilizando cdc para cargar dw on line - Miguel Egea
24 HOP Español - Utilizando cdc para cargar dw on line - Miguel Egea
 
24 HOP edición Español - Escenarios de seguridad para modeloscubos tabulares ...
24 HOP edición Español - Escenarios de seguridad para modeloscubos tabulares ...24 HOP edición Español - Escenarios de seguridad para modeloscubos tabulares ...
24 HOP edición Español - Escenarios de seguridad para modeloscubos tabulares ...
 
SQL Server 2014 Delayed Durability visto desde una aplicación - Alejandro Cor...
SQL Server 2014 Delayed Durability visto desde una aplicación - Alejandro Cor...SQL Server 2014 Delayed Durability visto desde una aplicación - Alejandro Cor...
SQL Server 2014 Delayed Durability visto desde una aplicación - Alejandro Cor...
 
Optimización de motores sql server 24 horas SQL Pass
Optimización de motores sql server 24 horas SQL PassOptimización de motores sql server 24 horas SQL Pass
Optimización de motores sql server 24 horas SQL Pass
 
24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala
24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala
24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala
 
SQL Server 2016 Strech Database desde cada ángulo - Kenneth Ureña
SQL Server 2016 Strech Database desde cada ángulo - Kenneth UreñaSQL Server 2016 Strech Database desde cada ángulo - Kenneth Ureña
SQL Server 2016 Strech Database desde cada ángulo - Kenneth Ureña
 
In-Memory OLTP en SQL Server 2016
In-Memory OLTP en SQL Server 2016In-Memory OLTP en SQL Server 2016
In-Memory OLTP en SQL Server 2016
 
MySQL Cluster: El ‘qué’ y el ‘cómo’.
MySQL Cluster: El ‘qué’ y el ‘cómo’.MySQL Cluster: El ‘qué’ y el ‘cómo’.
MySQL Cluster: El ‘qué’ y el ‘cómo’.
 
No-SQL, Azure Table Storage y MongoDB
No-SQL, Azure Table Storage y MongoDBNo-SQL, Azure Table Storage y MongoDB
No-SQL, Azure Table Storage y MongoDB
 
24 HOP edición Español - Optimizacion de motores sql server desde el codigo h...
24 HOP edición Español - Optimizacion de motores sql server desde el codigo h...24 HOP edición Español - Optimizacion de motores sql server desde el codigo h...
24 HOP edición Español - Optimizacion de motores sql server desde el codigo h...
 
No SQL MSATS MongoDB | SolidQ Summit 2014
No SQL MSATS MongoDB | SolidQ Summit 2014No SQL MSATS MongoDB | SolidQ Summit 2014
No SQL MSATS MongoDB | SolidQ Summit 2014
 
Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2
 
03 24 hopes_2014_eladiorincon
03 24 hopes_2014_eladiorincon03 24 hopes_2014_eladiorincon
03 24 hopes_2014_eladiorincon
 
DB1 Unidad 9: Concurrencia
DB1 Unidad 9: ConcurrenciaDB1 Unidad 9: Concurrencia
DB1 Unidad 9: Concurrencia
 
Analizando la performance del subsistema de IO
Analizando la performance del subsistema de IOAnalizando la performance del subsistema de IO
Analizando la performance del subsistema de IO
 
OTN Tour 2015 AROUG
OTN Tour 2015 AROUGOTN Tour 2015 AROUG
OTN Tour 2015 AROUG
 
24 HOP edición Español - Patrones de escalalidad en microsoft azure sql datab...
24 HOP edición Español - Patrones de escalalidad en microsoft azure sql datab...24 HOP edición Español - Patrones de escalalidad en microsoft azure sql datab...
24 HOP edición Español - Patrones de escalalidad en microsoft azure sql datab...
 
1_1_1_Aspectos Generales del Lenguaje PLSQL.pptx
1_1_1_Aspectos Generales del Lenguaje PLSQL.pptx1_1_1_Aspectos Generales del Lenguaje PLSQL.pptx
1_1_1_Aspectos Generales del Lenguaje PLSQL.pptx
 
In-Memory OLTP en SQL Server 2014
In-Memory OLTP en SQL Server 2014In-Memory OLTP en SQL Server 2014
In-Memory OLTP en SQL Server 2014
 
Migración a sql server 2008
Migración a sql server 2008Migración a sql server 2008
Migración a sql server 2008
 

Más de SpanishPASSVC

Más de SpanishPASSVC (20)

Creación de un modelo de análisis predictivo en la nube
Creación de un modelo de análisis predictivo en la nubeCreación de un modelo de análisis predictivo en la nube
Creación de un modelo de análisis predictivo en la nube
 
AlwaysON Lecciones Aprendidas
AlwaysON Lecciones AprendidasAlwaysON Lecciones Aprendidas
AlwaysON Lecciones Aprendidas
 
Data Science con Microsoft R Server y SQL Server 2016
Data Science con Microsoft R Server y SQL Server 2016Data Science con Microsoft R Server y SQL Server 2016
Data Science con Microsoft R Server y SQL Server 2016
 
Mejoras de Rendimiento para Replicación Transaccional
Mejoras de Rendimiento para Replicación TransaccionalMejoras de Rendimiento para Replicación Transaccional
Mejoras de Rendimiento para Replicación Transaccional
 
Como leer planes de ejecución
Como leer planes de ejecuciónComo leer planes de ejecución
Como leer planes de ejecución
 
AlwaysOn en SQL Server 2016
AlwaysOn en SQL Server 2016AlwaysOn en SQL Server 2016
AlwaysOn en SQL Server 2016
 
VMs de alto rendimiento para SQL Server en AWS y Azure
VMs de alto rendimiento para SQL Server en AWS y AzureVMs de alto rendimiento para SQL Server en AWS y Azure
VMs de alto rendimiento para SQL Server en AWS y Azure
 
Tecnicas avanzadas de monitoreo
Tecnicas avanzadas de monitoreoTecnicas avanzadas de monitoreo
Tecnicas avanzadas de monitoreo
 
Principios de diseño para procesos de ETL
Principios de diseño para procesos de ETLPrincipios de diseño para procesos de ETL
Principios de diseño para procesos de ETL
 
Planeando e implementando servicios de datos con Microsoft Azure
Planeando e implementando servicios de datos con Microsoft AzurePlaneando e implementando servicios de datos con Microsoft Azure
Planeando e implementando servicios de datos con Microsoft Azure
 
Mejores prácticas para SQL Server en ambientes virtualizados
Mejores prácticas para SQL Server en ambientes virtualizadosMejores prácticas para SQL Server en ambientes virtualizados
Mejores prácticas para SQL Server en ambientes virtualizados
 
Mejores prácticas de Data Warehouse con SQL Server
Mejores prácticas de Data Warehouse con SQL ServerMejores prácticas de Data Warehouse con SQL Server
Mejores prácticas de Data Warehouse con SQL Server
 
La receta de la abuela para mejores cargas de datos
La receta de la abuela para mejores cargas de datosLa receta de la abuela para mejores cargas de datos
La receta de la abuela para mejores cargas de datos
 
Introducción a Azure Machine Learning
Introducción a Azure Machine LearningIntroducción a Azure Machine Learning
Introducción a Azure Machine Learning
 
Cuadros de mando el todo es más que la suma de las partes
Cuadros de mando el todo es más que la suma de las partesCuadros de mando el todo es más que la suma de las partes
Cuadros de mando el todo es más que la suma de las partes
 
Automatizando la generación de Datawarehouses a través de metadatos
Automatizando la generación de Datawarehouses a través de metadatosAutomatizando la generación de Datawarehouses a través de metadatos
Automatizando la generación de Datawarehouses a través de metadatos
 
Descubriendo el corazón de la optimización “Estadísticas más que un concepto”
Descubriendo el corazón de la optimización “Estadísticas más que un concepto”Descubriendo el corazón de la optimización “Estadísticas más que un concepto”
Descubriendo el corazón de la optimización “Estadísticas más que un concepto”
 
Administrando soluciones de Power BI
Administrando soluciones de Power BIAdministrando soluciones de Power BI
Administrando soluciones de Power BI
 
Vista 360 grados de DataZen - Juan Alvarado
Vista 360 grados de DataZen - Juan AlvaradoVista 360 grados de DataZen - Juan Alvarado
Vista 360 grados de DataZen - Juan Alvarado
 
JSON Support en SQL Server 2016
JSON Support en SQL Server 2016JSON Support en SQL Server 2016
JSON Support en SQL Server 2016
 

24 HOP edición Español - Fundamentos de los bloqueos en sql server enrique puig

  • 1. Fundamentos de los Bloqueos en SQL Server Enrique Puig | MAP | MCITP e.puig@Outlook.es @epuignouselles Moderador: Freddy Angarita
  • 2. Gracias a nuestros auspiciadores Database Security as Easy as A-B-C http://www.greensql.com Hardcore Developer and IT Training http://www.pluralsight.com SQL Server Performance Try PlanExplorer today! http://www.sqlsentry.com
  • 3. 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
  • 4. Capítulo Global PASS en Español 4 4 Reuniones semanales todos los miércoles a las 12PM UTC-5 (Hora de Colombia) https://www.facebook.com/SpanishPASSVC
  • 5. 5 Asistencia Técnica Si requiere asistencia durante la sesión debe usar la sección de preguntas que esta en el menú de la derecha. Use el botón de Zoom para ajustar su pantalla al tamaño deseado Escriba sus preguntas en la sección de preguntas que esta en el menú de la derecha
  • 6. 6 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
  • 7. 7 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
  • 8. 8 Agenda • ¿Qué son los bloqueos? • Niveles de aislamiento • Tipos de bloqueos • Combatiendo los bloqueos • Conclusiones • Preguntas 8
  • 9. 9 ¿Qué son los Bloqueos? A •Atomicidad C •Consistencia I •Aislamiento D •Durabilidad • Modelos de Aislamiento 9 • Bloqueos (pesimista) • Versionado de filas (optimista) • Aseguran el Aislamiento • Leyendo datos consistentes • Si no son consistentes esperas
  • 10. Niveles de Aislamiento – Bloqueos ALTA BAJA 10 10 READ UNCOMMITED READ COMMITED REPEATABLE READ SERIALIZABLE CONCURRENCIA CONSISTENCIA BAJA ALTA
  • 11. Tipos de Bloqueos básicos y compatibilidades 11 Shared Lock (S) • Lecturas de datos Exclusive Lock (X) • Modificaciones de datos • INSERT / DELETE / UPDATE Compatibilidades: 11 Shared (S) Exclusive (X) Shared (S) N C Exclusive (X) C C C: CONFLICT N: NO CONFLICT
  • 12. ¿Qué es lo que se bloquea? 12 Se bloquean recursos: • KEY / RID • PAGE • FILE • OBJECT • … 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 Row Page Object File Table
  • 13. 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
  • 15. 15 Combatiendo los bloqueos 15 • SCAN vs. SEEK Indexación • Lock Scalation cofig • SNAPSHOT • READ COMMITED SNAPSHOT • Impacto en TempDB Row Versioning • READ UNCOMMITED • NOLOCK • Vista inconsistente de datos Dirty Reads
  • 16. Combatiendo los bloqueos - Indexación TRN2: TABLE SCAN 16 Lo mas común: Key/RID Locks Tipo Tabla:HEAP 16 Id:10 Val:21 Id:22 Val:99 Id:19 Val:22 Id:89 Val:62 Id:4 Val:10 Id:1 Val:12 Id:18 Val:14 Id:40 Val:99 Id:3 Val:34 Id:33 Val:8 TRN1: TABLE SCAN RID Lock Blocked by TRN1 TRN 1: update dbo.tab set val=99 where id=22; TRN 2: update dbo.tab set val=99 where id=40;
  • 17. Combatiendo los bloqueos - Indexación Lo mas común: Key/RID Locks Tipo Tabla: CLUSTERED INDEX 17 17 Root Int. Int Id:10 Val:21 Id:22 Val:99 Id:19 Val:22 Id:89 Val:62 Id:4 Val:10 Id:1 Val:12 Id:18 Val:32 Id:40 Val:99 Id:3 Val:26 Id:33 Val:8 TRN 1: update dbo.tab set val=99 where id=22; TRN 2: update dbo.tab set val=99 where id=40; TRN 1 Index Seek TRN 2 Index Seek Sin Transacciones bloqueadas!
  • 19. 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
  • 21. 21 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
  • 23. A continuación … Optimización de motores SQL Server desde el código hasta la administración Julián Castiblanco

Notas del editor

  1. Tipo de bloqueo -monitor Bloqueo normal Cambio de niveles de aislamiento para comprobar funcionamiento Escalado de bloqueos
  2. Tipo de bloqueo -monitor Bloqueo normal Cambio de niveles de aislamiento para comprobar funcionamiento Escalado de bloqueos
  3. Tipo de bloqueo -monitor Bloqueo normal Cambio de niveles de aislamiento para comprobar funcionamiento Escalado de bloqueos