fundamentos sobre los bloqueos en sql server

25
Fundamentos de los Bloqueos en SQL Server Enrique Puig | MAP | MCITP [email protected] @epuignouselles www.sqlserverpasion.com Moderador: Freddy Angarita

Upload: kike-puig

Post on 22-Jul-2015

203 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Fundamentos sobre los Bloqueos en SQL Server

Fundamentos de los Bloqueos

en SQL ServerEnrique Puig | MAP | MCITP

[email protected]

@epuignouselles

www.sqlserverpasion.com

Moderador: Freddy Angarita

Page 2: Fundamentos sobre los Bloqueos en SQL Server

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 PerformanceTry PlanExplorer today!

http://www.sqlsentry.com

Page 3: Fundamentos sobre los Bloqueos en SQL Server

Próximos SQL Saturday

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

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

Page 4: Fundamentos sobre los Bloqueos en SQL Server

4

Capítulo Global PASS en Español

4

Reuniones semanales todos los miércoles a

las 12PM UTC-5 (Hora de Colombia)

https://www.facebook.com/SpanishPASSVC

Page 5: Fundamentos sobre los Bloqueos en SQL Server

5

Asistencia Técnica

Si requiere asistenciadurante 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

Page 6: Fundamentos sobre los Bloqueos en SQL Server

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 SQL Server DBA y

Technical Lead en Ingenia Telecom.

6

Page 7: Fundamentos sobre los Bloqueos en SQL Server

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

Page 8: Fundamentos sobre los Bloqueos en SQL Server

8

Agenda

• ¿Qué son los bloqueos?

• Niveles de aislamiento

• Tipos de bloqueos

• Combatiendo los bloqueos

• Conclusiones

• Preguntas

8

Page 9: Fundamentos sobre los Bloqueos en SQL Server

9

¿Qué son los Bloqueos?

•AtomicidadA

•ConsistenciaC

•AislamientoI

•DurabilidadD

9

• Modelos de Aislamiento

• Bloqueos (pesimista)

• Versionado de filas (optimista)

• Aseguran el Aislamiento

• Acceso datos consistentes

• Si no son consistentes esperas

Page 10: Fundamentos sobre los Bloqueos en SQL Server

10

Tipos de Bloqueos básicos y compatibilidades

Shared Lock (S)

• Lecturas de datos

Exclusive Lock (X)

• Modificaciones de datos

• INSERT / DELETE / UPDATE

Compatibilidades:

10

Shared (S) Exclusive (X)

Shared (S) N C

Exclusive (X) C C

C: CONFLICTN: NO CONFLICT

Page 11: Fundamentos sobre los Bloqueos en SQL Server

DEMO

11

Page 12: Fundamentos sobre los Bloqueos en SQL Server

12

¿Qué es lo que se bloquea?

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

ObjectFile

Table

Page 13: Fundamentos sobre los Bloqueos en SQL Server

13

Niveles de Aislamiento – Bloqueos

13

READ UNCOMMITED

READ COMMITED

REPEATABLE READ

SERIALIZABLECO

NC

UR

REN

CIA

CO

NSISTEN

CIA

ALTA BAJA

BAJA ALTA

Page 14: Fundamentos sobre los Bloqueos en SQL Server

14

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”

14

Page 15: Fundamentos sobre los Bloqueos en SQL Server

DEMO

15

Page 16: Fundamentos sobre los Bloqueos en SQL Server

16

Combatiendo los bloqueos

16

• SCAN vs. SEEK

• Lock Scalation cofigIndexación

• SNAPSHOT

• READ COMMITED SNAPSHOT

• Impacto en TempDB

RowVersioning

• READ UNCOMMITED

• NOLOCK

• Vista inconsistente de datosDirty Reads

Page 17: Fundamentos sobre los Bloqueos en SQL Server

17

Combatiendo los bloqueos - Indexación

Lo mas común: Key/RID Locks

17

Id:10Val:21

Id:22Val:99

Id:19Val:22

Id:89Val:62

Id:4Val:10

Id:1Val:12

Id:18Val:14

Id:40Val:99

Id:3Val:34

Id:33Val:8

TRN1: TABLE SCAN

TRN2: TABLE SCAN

RID LockBlocked by TRN1

TRN 1:update dbo.tabset val=99where id=22;

TRN 2:update dbo.tabset val=99where id=40;

Page 18: Fundamentos sobre los Bloqueos en SQL Server

18

Combatiendo los bloqueos - IndexaciónLo mas común: Key/RID Locks

Tipo Tabla: CLUSTERED INDEX

18

Root

Int. Int

Id:10Val:21

Id:22Val:99

Id:19Val:22

Id:89Val:62

Id:4Val:10

Id:1Val:12

Id:18Val:32

Id:40Val:99

Id:3Val:26

Id:33Val:8

TRN 1:update dbo.tabset val=99where id=22;

TRN 2:update dbo.tabset val=99where id=40;

TRN 1Index Seek

TRN 2Index Seek

Sin Transacciones bloqueadas!

Page 19: Fundamentos sobre los Bloqueos en SQL Server

DEMO

19

Page 20: Fundamentos sobre los Bloqueos en SQL Server

20

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

20

Page 21: Fundamentos sobre los Bloqueos en SQL Server

DEMO

21

Page 22: Fundamentos sobre los Bloqueos en SQL Server

22

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

22

Page 23: Fundamentos sobre los Bloqueos en SQL Server

[email protected]@epuignouselleswww.sqlserverpasion.com

Page 24: Fundamentos sobre los Bloqueos en SQL Server

Optimización de motores SQL Server desde el código hasta la administración

Julián Castiblanco

A continuación …

Page 25: Fundamentos sobre los Bloqueos en SQL Server

Gracias por participar