Está en la página 1de 7

AA10-EV3- MANEJO DE TRANSACCIONES, BLOQUEOS Y CONTROL DE CONCURRENCIA EN UN

MOTOR DE

BASE DE DATOS ESPECÍFICO

PRESENTADO AL INSTRUCTOR:

ISRAEL ARBONA GUERRERO

PRESENTADO POR:

JOHN ALEXANDER CHICAIZA GAVILANES

SERVICIO NACIONAL DE APRENDIZAJE – SENA

ESPECIALIZACIÓN TECNOLÓGICA EN GESTIÓN Y SEGURIDAD DE BASES DE DATOS

2020
INTRODUCCIÓN

Por distintos motivos es muy importante analizar constantemente el funcionamientos de


sistema manejador de bases de datos, optimizando así su uso y alargando la vida útil de los
recursos, podremos ver el desempeño y detectar transacciones las cuales podrían ser
respondidas de una manera mas optima, pero a su vez peticiones que no tendrían razón de ser
y que nos lleven a bajar el rendimiento del sistema manejador, responderemos unos
interrogantes necesarios para entender la dinámica que estos procesos tienen.
• ¿Cómo es el manejo transaccional en una base de datos dependiendo del motor utilizado?

Debemos entender que una transacción la calificamos con un evento secuencia dentro de una
base de datos y se emplean mecanismo tales como las peticiones, como pueden ser inserción
de datos, borrado y actualización de los mismo, pero también se pueden generar
transacciones mucho mas complejas y tener en cuenta las propiedades de transacción como
las relacionaremos a continuación:

Atomicidad: Nos permite cuidar la información de la forma que si la sentencia esta mal escrita
o posee errores ilógicos el sistema no generara los cambios y restaurara un punto antes de la
sentencia,

Consistencia: permite asegurándonos de que todos los cambios para la base s de datos sean
los correctos y con contengan errores.

Durabilidad: nos aseguraremos de que los cambios realizados sobre el sistema sean
permanentes sin que el sistema tenga fallas o errores.

Aislamiento: nos dice que no se puede visualizar la información de dos transacciones en un


mismo lapso.

En PostgreSQL podemos utilizar transacciones utilizando el comando BEGIN, para indicar que
terminamos de manera correcta todas las sentencias utilizamos el comando COMMIT y para
hacer la cancelación de alguna usamos ROLLBACK.

• ¿Cómo se genera un bloqueo?

PostgreSQL nos ofrecen una seri de métodos de bloqueo para controla el acceso concurrente a
las tablas de datos, y algunos se configuran automáticamente, del resto observamos bloqueos
a nivel de tabla o a nivel de fila

AccessShareLock

Un modo de bloqueo adquirido automáticamente sobre tablas que están siendo


consultadas. Postgres libera estos bloqueos después de que se haya ejecutado una
declaración.

RowShareLock

Adquirido por SELECT FOR UPDATE y LOCK TABLE para declaraciones IN ROW SHARE MODE.
RowExclusiveLock

Lo adquieren UPDATE, DELETE, INSERT y LOCK TABLE para declaraciones IN ROW EXCLUSIVE
MODE.

Choca con los modos ShareLock, ShareRowExclusiveLock, ExclusiveLock y AccessExclusiveLock.

ShareLock

Lo adquieren CREATE INDEX y LOCK TABLE para declaraciones IN SHARE MODE.

Está en conflicto con los modos RowExclusiveLock, ShareRowExclusiveLock, ExclusiveLock y


AccessExclusiveLock.

ShareRowExclusiveLock

Lo toma LOCK TABLE para declaraciones IN SHARE ROW EXCLUSIVE MODE.

Está en conflicto con los modos RowExclusiveLock, ShareLock, ShareRowExclusiveLock,


ExclusiveLock y AccessExclusiveLock.

ExclusiveLock

Lo toma LOCK TABLE para declaraciones IN EXCLUSIVE MODE.

Entra en conflicto con los modos RowShareLock, RowExclusiveLock, ShareLock,


ShareRowExclusiveLock, ExclusiveLock y AccessExclusiveLock.

AccessExclusiveLock

Lo toman ALTER TABLE, DROP TABLE, VACUUM y LOCK TABLE.

Choca con RowShareLock, RowExclusiveLock, ShareLock, ShareRowExclusiveLock,


ExclusiveLock y AccessExclusiveLock.

bloqueos a nivel de fila

Este tipo de bloqueos se producen cuando campos internos de una fila son actualizados (o
borrados o marcados para ser actualizados). PostgreSQL no retiene en memoria ninguna
información sobre filas modificadas y de este modo no tiene límites para el número de filas
bloqueadas sin incremento de bloqueo.

Sin embargo, tenga en cuenta que SELECT FOR UPDATE modificará las filas seleccionadas
marcándolas, de tal modo que se escribirán en el disco, Los bloqueos a nivel de fila no afectan
a los datos consultados. Estos son usados para bloquear escrituras a la misma fila únicamente.
• ¿Cómo se libera un bloqueo?

Aunque PostgreSQL proporciona desbloqueo para lectura/escritura de datos en tablas, no


ocurre así para cada método de acceso al índice implementado en PostgreSQL. Los diferentes
tipos de índices son manejados de la siguiente manera:

Índices GiST y R-Tree

Nivel de bloqueo de índice del tipo Compartición/exclusividad para acceso lectura/escritura. El


bloqueo tiene lugar después de que la declaración se haya ejecutado.

Índices hash

Se usa el bloqueo a nivel de página para acceso lectura/escritura. El bloqueo tiene lugar
después de que la página haya sido procesada.

Los bloqueos a nivel de página producen mejor concurrencia que los bloqueos a nivel de
índice, pero pueden provocar "puntos muertos".

Btree

Se usan bloqueos a nivel de página de compartición/exclusividad en los accesos de


lectura/escritura. Los bloqueos se llevan a cabo inmediatamente después de que el tuplo
índice sea insertado o buscado.".

• ¿De qué forma se hace seguimiento a las transacciones en un determinado


momento?

Se pueden realizar a través del Server Status .


• ¿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?

Se maneja a través del bloqueo teniendo en cuenta los diferentes tipos de bloque, para de esta
forma dar prioridad a los usuarios que lo utilicen con mas prioridad.
BIBLIOGRAFÍA

• MANUAL DE USUARIO POSTGRESQL, BLOQUEOS Y TABLAS, RECUPERADO DE:


http://es.tldp.org/Postgresql-es/web/navegable/user/x3667.html

También podría gustarte