Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Administracion de Transacciones y Bloqueos
Administracion de Transacciones y Bloqueos
Administracion de Transacciones y Bloqueos
y bloqueos
Contenido
Introduccin
12
19
Introduccin
Objetivo del tema
Explicacin previa
En este mdulo,
trataremos...
Objetivos
Despus de completar este mdulo, el alumno ser capaz de:
Explicacin previa
Sugerencia
El bloqueo es automtico
Control de simultaneidad
Las transacciones utilizan los bloqueos para impedir que otros usuarios cambien
o lean los datos de una transaccin que no se ha completado. El bloqueo es
necesario en el Proceso de transacciones en lnea (OLTP, Online Transaction
Processing) en sistemas multiusuario. SQL Server utiliza el registro de
transacciones para asegurar que las actualizaciones se han completado y son
recuperables.
Transacciones
Las transacciones aseguran que varias modificaciones a los datos se
procesan como una unidad; esto se conoce como atomicidad. Por ejemplo,
una transaccin bancaria podra abonar en una cuenta y cargar en otra. Los
dos pasos se deben completar al mismo tiempo. SQL Server acepta que el
proceso de transacciones administre varias transacciones.
Bloqueos
Los bloqueos impiden los conflictos de actualizacin. Los usuarios no pueden
leer o modificar los datos que estn en proceso de modificacin por parte
de otros usuarios. Por ejemplo, si desea calcular una funcin de agregado y
asegurarse de que otra transaccin no modifique el conjunto de datos que se
utiliza para calcular la funcin de agregado, puede solicitar que el sistema
establezca bloqueos en los datos. Tenga en cuenta los siguientes hechos acerca
de los bloqueos:
Control de simultaneidad
El control de simultaneidad garantiza que las modificaciones que realiza un
usuario no afectan de forma negativa a las modificaciones que realice otro.
Hay dos tipos.
Proporcionar un resumen
de este tema.
Explicacin previa
En esta seccin,
trataremos
Punto clave
Sintaxis
Sintaxis
Sintaxis
Sintaxis
Sintaxis
Ejemplo
Este ejemplo define una transaccin que transfiere fondos entre la cuenta
corriente y la cuenta de ahorro de un cliente.
Este ejemplo no se
puede ejecutar porque
los procedimientos
almacenados no existen.
Explicar el proceso de
recuperacin.
Recuperacin de transacciones
Accin requerida
Explicacin previa
Como el registro de
transacciones graba todas
las modificaciones, los
datos se pueden recuperar
fcilmente en caso de que
se produzca un error del
sistema.
Ninguna
Confirmar
Deshacer
Confirmar
5
Puntos de comprobacin
Deshacer
Inicialmente, las pginas de la cach de datos y las del disco son iguales.
Despus, tiene lugar el siguiente proceso:
Explicacin previa
10
Describir cmo
se establecen las
transacciones implcitas.
Explicacin previa
SET
SET IMPLICIT_TRANSACTIONS
IMPLICIT_TRANSACTIONS ON
ON
INSERT
CREATE
OPEN
DELETE
REVOKE
DROP
SELECT
FETCH
TRUNCATE TABLE
GRANT
UPDATE
Cuando esta opcin est activada, el usuario tiene que confirmar o deshacer
la transaccin explcitamente al final de la transaccin. De lo contrario,
cuando el usuario se desconecte se deshar la transaccin y todos los
cambios a los datos que contiene.
11
Explicacin previa
ALTER DATABASE
RECONFIGURE
BACKUP LOG
RESTORE DATABASE
CREATE DATABASE
RESTORE LOG
DROP DATABASE
UPDATE STATISTICS
12
Proporcionar un resumen
de este tema.
Explicacin previa
En esta seccin,
trataremos
Tipos de bloqueos
13
Explicacin previa
Actualizacin perdida
Lecturas fantasma
14
Explicacin previa
El nmero de bloqueos
se tiene que adaptar a la
cantidad de datos a los
que afecta cada uno de
los bloqueos.
Elemento
Descripcin
RID
Identificador de fila
Clave
Pgina
Extensin
Grupo de pginas
Tabla
Tabla completa
Base de
datos
Descripcin
RID
Identificador de fila: se utiliza para bloquear una sola fila de una tabla.
Clave
Pgina
Extensin
Tabla
Base de
datos
15
Tipos de bloqueos
Objetivo del tema
Enumerar los tipos
de bloqueos.
Explicacin previa
Bloqueos bsicos
z
Compartidos
Exclusivos
Intencin
Actualizacin
Esquema
Actualizacin masiva
Bloqueos bsicos
En general, las operaciones de lectura adquieren bloqueos compartidos y
las operaciones de escritura adquieren bloqueos exclusivos.
Bloqueos compartidos
SQL Server suele utilizar bloqueos compartidos (de lectura) en las operaciones
que no modifican ni actualizan los datos. Si SQL Server ha aplicado un bloqueo
compartido a un recurso, una segunda transaccin tambin puede adquirir un
bloqueo compartido, incluso si la primera transaccin no ha terminado.
Tenga en cuenta los siguientes hechos acerca de los bloqueos compartidos:
Un bloqueo compartido existe hasta que todas las filas que cumplen las
condiciones de la consulta se han devuelto al cliente.
16
Bloqueos exclusivos
SQL Server utiliza bloqueos exclusivos (de escritura) en las instrucciones de
modificacin de datos INSERT, UPDATE y DELETE.
Tenga en cuenta los siguientes hechos acerca de los bloqueos exclusivos:
Bloqueos de intencin
SQL Server utiliza internamente los bloqueos de intencin para minimizar los
conflictos de bloqueo. Los bloqueos de intencin establecen una jerarqua de
bloqueo para que otras transacciones no puedan adquirir bloqueos en niveles
ms incluyentes que otros existentes. Por ejemplo, si una transaccin tiene un
bloqueo exclusivo de fila sobre un registro de cliente especfico, el bloqueo de
intencin impide que otra transaccin adquiera un bloqueo exclusivo en el nivel
de tabla.
Los bloqueos de intencin son: bloqueo compartido de intencin (IS), bloqueo
exclusivo de intencin (IX) y compartido con bloqueo exclusivo de intencin
(SIX).
Bloqueos de actualizacin
SQL Server utiliza los bloqueos de actualizacin cuando va a modificar una
pgina. Antes de modificar la pgina, SQL Server aumenta el nivel de bloqueo
de actualizacin de pgina a bloqueo de pgina exclusivo para impedir
conflictos de bloqueo.
Tenga en cuenta los siguientes hechos acerca de los bloqueos de actualizacin.
Los bloqueos de actualizacin:
Bloqueos de esquema
Los bloqueos de esquema aseguran que no se elimine una tabla o un ndice, o
que no se modifique su esquema, cuando se les hace referencia en otra sesin.
SQL Server proporciona dos tipos de bloqueos de esquema:
17
18
Explicar qu bloqueos
son compatibles.
Explicacin previa
Ejemplos
z
Sugerencia
Explique la matriz de
bloqueos mediante los
ejemplos de la diapositiva.
Bloqueo solicitado
IS
IX
SIX
Compartido de
intencin (IS)
No
Compartido (S)
No
No
No
Actualizacin (U)
No
No
No
No
Exclusivo de intencin
(IX)
No
No
No
No
No
No
No
No
No
Exclusivo (X)
No
No
No
No
No
No
19
Proporcionar un resumen
de este tema.
Explicacin previa
En esta seccin,
trataremos
Interbloqueos
Esta seccin describe las opciones de bloqueo que se pueden especificar en los
niveles de sesin y de tabla. Tambin describe cmo SQL Server controla los
interbloqueos y cmo se puede ver la informacin de los bloqueos.
20
Presentar el nivel de
aislamiento de las
transacciones.
Explicacin previa
READ UNCOMMITTED
REPEATABLE READ
SERIALIZABLE
Sintaxis
21
Descripcin
READ COMMITTED
Ejemplo
REPEATABLE READ
SERIALIZABLE
Resultado
set option
value
textsize
language
dateformat
datefirst
.
.
.
isolation level
64512
us_english
mdy
7
read uncommitted
Sugerencia
Sintaxis
22
Ejemplo
Resultado
180000
(1 filas afectadas)
23
Bloqueo
dinmico
Mostrar cmo se
encuentran los bloqueos
de costo ms efectivo.
Explicacin previa
La arquitectura de
bloqueos dinmicos ayuda
a determinar los bloqueos
de costo ms efectivo.
Costo
Fila
Costo de bloqueo
Costo de simultaneidad
Pgina
Tabla
Granularidad
24
Explicacin previa
En la prctica diaria, no se
debe especificar la opcin
de bloqueo de tabla.
25
Descripcin
HOLDLOCK
SERIALIZABLE
REPEATABLEREAD
READCOMMITTED
READUNCOMMITTED
NOLOCK
ROWLOCK
PAGLOCK
TABLOCK
TABLOCKX
READPAST
UPDLOCK
26
Interbloqueos
Objetivo del tema
Explicacin previa
Un interbloqueo se produce
cuando dos transacciones
tienen bloqueos sobre
objetos diferentes y cada
transaccin solicita un
bloqueo sobre el objeto
bloqueado por la otra
transaccin.
Sugerencia
Asegrese de resaltar
la diferencia entre los
interbloqueos y los
bloqueos.
27
28
Explicacin previa
Sugerencia
Muestre la ventana
Actividad actual del
Administrador corporativo
de SQL Server y del
Analizador de SQL.
Analizador de SQL
Informacin adicional
EXECUTE sp_lock
Resultado
ObjId
IndId
Type
12
12
12
12
12
12
12
13
0
0
0
0
981578535
5575058
981578535
0
0
0
0
0
0
0
0
0
DB
DB
EXT
PAG
RID
TAB
TAB
DB
5
5
2
5
5
1
5
1
Resource
1:280
1:528
1:528:0
Mode
Status
S
S
X
IX
X
IS
IX
S
GRANT
GRANT
GRANT
GRANT
GRANT
GRANT
GRANT
GRANT
29
Las cuatro primeras columnas hacen referencia a varios Id.: Id. de proceso
del servidor (spid), Id. de base de datos (dbid), Id. de objeto (ObjId) e Id. de
nmero de identificacin de ndice (IndId).
La columna Type muestra el tipo de recurso que est bloqueado actualmente.
Los tipos de recursos pueden ser: DB (base de datos), EXT (extensin), TAB
(tabla), KEY (clave), PAG (pgina) o RID (identificador de fila).
La columna Resource tiene informacin acerca del tipo de recurso que est
bloqueado. Una descripcin de recurso de 1:528:0 indica que la fila nmero 0
de la pgina nmero 528 del archivo 1 tiene aplicado un bloqueo.
La columna Mode describe el tipo de bloqueo que se est aplicando al recurso.
Los tipos de bloqueo son: compartido (S), exclusivo (X), de intencin (I), de
actualizacin (U) o de esquema (Sch).
La columna Status muestra si el bloqueo se ha obtenido (GRANT), est
bloqueado en espera de que termine otro proceso (WAIT) o est en proceso
de conversin (CNVRT).
Analizador de SQL
El Analizador de SQL es una herramienta que supervisa las actividades del
servidor. Para recopilar informacin acerca de diversos eventos, puede crear
trazas, que proporcionan un perfil detallado de los eventos del servidor.
Puede utilizar este perfil para analizar y resolver los problemas de recursos
del servidor, supervisar los intentos de inicio de sesin y las conexiones, y
corregir problemas de interbloqueo.
Informacin adicional
Para buscar informacin acerca de los bloqueos y la actividad actual del
servidor, puede consultar las tablas del sistema syslockinfo, sysprocesses,
sysobjects, systables y syslogins, o puede ejecutar el procedimiento