24 hop edición español - fundamentos de los bloqueos en sql server enrique puig

24
Fundamentos de los Bloqueos en SQL Server Enrique Puig | MAP | MCITP [email protected] @epuignouselles Moderador: Freddy Angarita

Upload: spanishpassvc

Post on 06-Jul-2015

144 views

Category:

Documents


3 download

TRANSCRIPT

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

Fundamentos de los Bloqueos

en SQL Server

Enrique Puig | MAP | MCITP

[email protected]

@epuignouselles

Moderador: Freddy Angarita

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

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: 24 HOP edición Español - Fundamentos de los bloqueos en sql server   enrique puig

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: 24 HOP edición Español - Fundamentos de los bloqueos en sql server   enrique puig

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: 24 HOP edición Español - Fundamentos de los bloqueos en sql server   enrique puig

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: 24 HOP edición Español - Fundamentos de los bloqueos en sql server   enrique puig

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

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

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: 24 HOP edición Español - Fundamentos de los bloqueos en sql server   enrique puig

8

Agenda

• ¿Qué son los bloqueos?

• Niveles de aislamiento

• Tipos de bloqueos

• Combatiendo los bloqueos

• Conclusiones

• Preguntas

8

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

9

¿Qué son los Bloqueos?

•AtomicidadA

•ConsistenciaC

•AislamientoI

•DurabilidadD

9

• Modelos de Aislamiento

• Bloqueos (pesimista)

• Versionado de filas (optimista)

• Aseguran el Aislamiento

• Leyendo datos consistentes

• Si no son consistentes esperas

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

10

Niveles de Aislamiento – Bloqueos

10

READ UNCOMMITED

READ COMMITED

REPEATABLE READ

SERIALIZABLECO

NC

UR

REN

CIA

CO

NSISTEN

CIA

ALTA BAJA

BAJA ALTA

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

11

Tipos de Bloqueos básicos y compatibilidades

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: CONFLICTN: NO CONFLICT

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

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: 24 HOP edición Español - Fundamentos de los bloqueos en sql server   enrique puig

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

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

DEMO

14

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

15

Combatiendo los bloqueos

15

• SCAN vs. SEEK

• Lock Scalation cofigIndexación

• SNAPSHOT

• READ COMMITED SNAPSHOT

• Impacto en TempDB

RowVersioning

• READ UNCOMMITED

• NOLOCK

• Vista inconsistente de datosDirty Reads

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

16

Combatiendo los bloqueos - Indexación

Lo mas común: Key/RID Locks

Tipo Tabla:HEAP

16

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 17: 24 HOP edición Español - Fundamentos de los bloqueos en sql server   enrique puig

17

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

Tipo Tabla: CLUSTERED INDEX

17

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 18: 24 HOP edición Español - Fundamentos de los bloqueos en sql server   enrique puig

DEMO

18

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

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

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

DEMO

20

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

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

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

Preguntas?

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

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

Julián Castiblanco

A continuación …

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

Gracias por participar