Вы находитесь на странице: 1из 7

A10-EV3: MANEJO DE TRANSACCIONES, BLOQUEOS Y CONTROL DE

CONCURRENCIA EN UN MOTOR DE BASE DE DATOS ESPECÍFICO

DIEGO ALBEIRO PEÑA PEÑA

RESEÑA

Los DBA tienen la responsabilidad de mantener disponibles los servicios que presta
la base de datos, para ello deben controlar el comportamiento de los procesos que
acceden de forma concurrente sobre datos compartidos y los bloqueos que estos
generan sobre los mismos.

De igual manera el control de concurrencia es uno de los principios fundamentales a


administrar ya que en las bases de datos siempre se debe garantizar la consistencia y
disponibilidad de la información.

MODELOS DE CONCURRENCIA
El motor de base de datos admite dos diferentes modelos de concurrencia.
• Concurrencia pesimista
• Concurrencia Optimista
La pesimista utiliza bloqueos y la Optimista funciona sobre el supuesto de que los
conflictos de recursos entre multiples usuarios son improbables y permite la ejecucion
de transacciones sin usar bloqueos.
TRANSACCIONES (TRANSACT-SQL)
Una transacción es una unidad única de trabajo. Si una transacción tiene éxito, todas
las modificaciones de los datos realizadas durante la transacción se confirman y se
convierten en una parte permanente de la base de datos. Si una transacción encuentra
errores y debe cancelarse o revertirse, se borran todas las modificaciones de los datos.

Una transacción es una unidad de trabajo que se compone de una o más instrucciones
SQL que realizan un conjunto de acciones relacionadas. Por ejemplo, la aplicación
podría utilizar una transacción para cambiar el número de CD de las existencias. El
proceso de actualizar la tabla o tablas aplicables y reportar la información actualizada
de regreso al usuario es tratado como una sola transacción. La transacción puede
incluir varias instrucciones SQL, realizando cada una de ellas una tarea
específica.Para que un conjunto de acciones califique como una transacción, debe
pasar la prueba ACID. ACID es el acrónimo comúnmente utilizado para referirse a
los nombres en inglés de las cuatro características de una transacción (Atomic,
Consistent, Isolated y Durable, respectivamente)

SQL Server funciona en los modos de transacción siguientes:

Transacciones de confirmación automática


Cada instrucción individual es una transacción. El modo de confirmación automática
es el modo de administración de transacciones predeterminado de SQL Server
Database Engine. Cada instrucción Transact-SQL se confirma o se revierte cuando
finaliza. Si una instrucción termina correctamente, se confirma; si encuentra un error,
se revierte. Una conexión a una instancia del motor de base de datos funciona en modo
de confirmación automática siempre que no se suplante el modo predeterminado
mediante transacciones explícitas o implícitas. El modo de confirmación automática
es también el modo predeterminado para ADO, OLE DB, ODBC y DB-Library.

Transacciones explícitas
Cada transacción se inicia explícitamente con la instrucción BEGIN TRANSACTION
y se termina explícitamente con una instrucción COMMIT o ROLLBACK. Cuando
una conexión funciona en modo de transacciones implícitas, la instancia del motor de
base de datos inicia automáticamente una nueva transacción después de confirmar o
revertir la transacción actual. No tiene que realizar ninguna acción para delinear el
inicio de una transacción, solo tiene que confirmar o revertir cada transacción. El
modo de transacciones implícitas genera una cadena continua de transacciones.
Establezca el modo de transacción implícita a través de una función de la API o la
instrucción SET IMPLICIT_TRANSACTIONS ON de Transact-SQL.

Transacciones implícitas
Se inicia implícitamente una nueva transacción cuando se ha completado la anterior,
pero cada transacción se completa explícitamente con una instrucción COMMIT o
ROLLBACK.
Transacciones de ámbito de lote
Una transacción implícita o explícita de Transact-SQL que se inicia en una sesión de
MARS (conjuntos de resultados activos múltiples), que solo es aplicable a MARS, se
convierte en una transacción de ámbito de lote. Si no se confirma o revierte una
transacción de ámbito de lote cuando se completa el lote, SQL Server la revierte
automáticamente.

El estándar SQL:2006 define siete instrucciones relacionadas al proceso de


transacción:
SET TRANSACTION Configura las propiedades de la siguiente transacción que
deberá ser ejecutada.

START TRANSACTION Configura las propiedades de una transacción e inicia esa


tran-sacción.

SET CONSTRAINTS Determina el modo de restricción dentro de una transacción


actual. El modo de restricción se refiere a si una restricción es aplicada
inmediatamente a los datos cuando éstos son modificados o si la aplicación de la
restricción es aplazada hasta un punto posterior en la transacción.

SAVEPOINT Crea un punto de recuperación dentro de una transacción. Un punto de


re-cuperación marca una zona dentro de la transacción que actúa como un punto
para detenerse cuando una transacción tiene que regresar a su punto inicial.

RELEASE SAVEPOINT Libera un punto de recuperación.

ROLLBACK Finaliza una transacción y reinvierte todos los cambios al comienzo de


la transacción o a un punto de recuperación.

COMMIT Finaliza una transacción y permite completar todos los cambios a la base
de datos
Observe que la figura incluye cuatro de las instrucciones SQL relacionadas con las
transaccio-nes: SET TRANSACTION, START TRANSACTION, COMMIT y
ROLLBACK. Si se utiliza una instrucción SET TRANSACTION, ésta se ejecuta
antes de que la transacción inicie. Después de eso, una instrucción START
TRANSACTION inicia la transacción.
En el caso de SQL Server se utilizan seis instrucciones de Transact-SQL relacionadas
con las transacciones

BEGIN TRANSACTION: Inicia la transacción.

BEGIN DISTRIBUTED TRANSACTION: Especifica el inicio de una transaccion


distribuidad que maneja Microsoft Distributed Transaction Coordinator (MS DTC).
Significa que maneja bases de datos en mas de un servidor.

COMMIT [WORK]: Pone fin con todo éxito a la transaccion que se inicio con la
instrucción BEGIN TRANSACTION y que todas las modificacines que la transaccion
se almacena en el disco (la clausula WORK es opcinal). Tambien se admite la
instruccin COMMIT TRANSACTION.

ROLLBACK [WORK]: Reporta un final infructuoso de la transacccion. Los


programadores utilizan esta instrucción si suponen que la BD pudiera encontrarse en
estado insonsistente. En este caso se anulan todas las operaciones de modificacion que
se ejecutan en la transaccion.
SAVE TRANSACTION: Establece un punto de salvamento en una transaccion. Un
punto de salvamento marca un punto especificado en la transaccion, demodo que todas
las actualizaciones que sigan se puedan cancelar sin cancelar toda la transaccion.

SET IMPLICIT_TRANSACTIONS: Para habilitar una transaccin implicita hay que


habilitar esta cláusula y establece el modo de transaccion implicita para la sesión
actual.

Ejemplo:

BEGIN TRANSACTION
INSERT INTO departamento (num_depto,nombre_depto)
VALUES('d4','Ventas');
SAVE TRANSACTION a;
INSERT INTO departamento (num_depto,nombre_depto)
VALUES('d5','Investigacion');
SAVE TRANSACTION b;
INSERT INTO departamento (num_depto,nombre_depto)
VALUES('d6','Administracion');
ROLLBACK TRANSACTION b;
INSERT INTO departamento (num_depto,nombre_depto)
VALUES('d7','Soporte');
ROLLBACK TRANSACTION a;
COMMIT TRANSACTION;

La unica instrucción del ejemplo que se ejecuta es la primera instrucción INSERT. La


tercera instruccin INSERT es anulada por la instruccion ROLLBACK b, mientras que
las otras dos instrucciones INSERT son anuladas por la instrucción ROLLBACK a.

BLOQUEOS

La gran finalidad de los bloqueos es que impiden los conflictos de actualización. Se


presentan cuando usuarios requieren la lectura o modificación de datos que en ese
instante están siendo modificados por otros usuarios.

Entre las características básicas de los bloqueos tenemos:


• Permiten la serialización de las transacciones, haciendo que un usuario a la vez
pueda modificar un dato.
• Son necesarios en las transacciones simultáneas ya que permiten que usuarios
accedan y actualicen datos en el mismo intervalo de tiempo.

Tipos de bloqueo con respecto a la operación:


• read-locks: sólo permite lectura
• write-locks: permite lectura y escritura
El gestor de bloqueos almacena los bloqueos en una tabla de bloqueos:
(<elemento>, <tipo de bloqueo>, <transacción>)=(E,B,T)

La transacción T tiene un tipo de bloqueo B sobre el elemento E. Normalmente, E


es clave, aunque no siempre, porque varias transacciones pueden bloquear el mismo
elemento de forma diferente.

NIVELES DE BLOQUEO

Especifica la granularidad del bloqueo


Fila: Fila individual
Clave: Fila de un índice
Página: Páginas (8KB)
Extent: Extensión (grupo de 8 páginas contiguas de datos o índices)

MODOS DE BLOQUEO

Especifica el modo en que se bloquea un elemento

• Compartido: para operaciones sólo de lectura. Se permiten lecturas concurrentes,


pero ninguna actualización.
• Actualización: para operaciones que pueden escribir. Sólo se permite que una
transacción adquiera este bloqueo. Si la transacción modifica datos, se convierte en
exclusivo, en caso contrario en compartido.
• Exclusivo. para operaciones que escriben datos. Sólo se permite que una transacción
adquiera este bloqueo.
• Intención: se usan para establecer una jerarquía de bloqueo. Por ejemplo, si una
transacción necesita bloqueo exclusivo y varias transacciones tienen bloqueo de
intención, no se concede el exclusivo.
• Intención compartido. Bloqueo compartido.
• Intención exclusivo. Bloqueo exclusivo.
• Compartido con intención exclusivo. Algunos bloqueos compartidos y otros
exclusivos.
• Esquema. para operaciones del DDL.
• Actualización masiva. En operaciones de actualización masiva
• Table: Tabla completa
• Database: Base de datos completa

BIBLIOGRAFIA

https://docs.microsoft.com/es-es/sql/t-sql/language-elements/transactionstransact-
sql?view=sql-server-2017

https://docs.microsoft.com/es-es/sql/2014-toc/sql-server-transaction-lockingand-
row-versioning-guide?view=sql-server-2014

Oppel, A. (2010). Fundamentos de SQL. (3a. ed.) McGraw-Hill Interamericana. Página 379. Tomado
de http://www.ebooks7-24.com.bdigital.sena.edu.co

Вам также может понравиться