Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 4

MANEJO DE TRANSACCIONES, BLOQUEOS Y

CONTROL DE CONCURRENCIA
GESTIÓN Y SEGURIDAD DE BASES DE DATOS

EVIDENCIA AA10-3

DIEGO FERNANDO RIVERA ESPINOSA


COD. 7170949
SENA Servicio Nacional de Aprendizaje
MANEJO DE TRANSACCIONES, BLOQUEOS Y
CONTROL DE CONCURRENCIA
Los motores de bases de datos incorporan en su funcionalidad procedimientos,
acciones y muchas veces herramientas que permiten coordinar las acciones
encaminadas al manejo de transacciones asociadas a una Base de Datos,
facilitando de esa forma el poder dar respuesta a los siguientes interrogantes:
¿Cómo es el manejo transaccional en una base de datos dependiendo del
motor utilizado?

o Para SQL Server se manejan los siguientes modos:


 Transacciones de confirmación automática: Cada instrucción
individual es una transacción.
 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.
 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.
¿Cuándo se genera un bloqueo?

o Los bloqueos se generan para permitir la operación de bases de datos


como consultas, mantenimientos u operaciones en la BBDD, esto
significa que cuando se realiza un bloqueo sobre la tabla, otras
operaciones no pueden ser procesadas en el mismo objeto y así evitar
daños en la información.
¿Cómo se libera un bloqueo?

o Puede liberarse de la siguiente forma:

SELECT request_session_id sessionid,


resource_type type,
resource_database_id dbid,
OBJECT_NAME(resource_associated_entity_id,
resource_database_id) objectname,
request_mode rmode,
request_status rstatus
FROM sys.dm_tran_locks
WHERE resource_type IN ('DATABASE', 'OBJECT')

Con esto se detecta el proceso que esta bloqueando la base de datos,


se mata el proceso a nivel de sistema operativo.
¿De qué forma se hace seguimiento a las transacciones en un determinado
momento?

o La base de datos genera logs de auditoria y de traza, en donde quedan


registrada las acciones que afectan o usan la base de datos, estos
logs se adjuntan en el directorio de la base de datos, lo que le permite
al administrador tener idea y seguimiento del funcionamiento.

¿Cuándo múltiples usuarios acceden en un mismo instante de tiempo a un


recurso de la Base de Datos, como gestiona el motor la concurrencia?

o SQL Server utiliza mecanismos como los bloqueos para aislar las
conexiones unas de otras y que al final, idealmente, todo hubiera
ocurrido como si todas las operaciones se hubieran producido una
detrás de otra. Los bloqueos impiden que se produzcan los conflictos,
pero impiden también que se puedan ejecutar varias operaciones al
mismo tiempo desde distintas conexiones (disminuyen la
concurrencia).
La cantidad y fuerza y duración de los bloqueos está en función del
nivel de aislamiento de las transacciones. Cuanto más aislamiento,
más bloqueos, más consistencia, pero menos concurrencia. En SQL
Server hay varios niveles de aislamiento: READ UNCOMMITED,
READ COMMITED, READ COMMITED SNAPSHOT, REPEATABLE
READ, SERIALIZABLE y SNAPSHOT. Existen otros mecanismos
para controlar los conflictos de concurrencia, en vez de impedirlos a
priori, se detectan a positeriori, y cuando se detectan se deshace la
transacción. Esto se llama bloqueo optimista, no sé por qué se llama
bloqueo, ya que no se bloquea pero sí sé por qué se llama optimista:
porque se piensa que existe una baja probabilidad de que se produzca
un conflicto.

También podría gustarte