PDF de programación - Ficheros y Bases de Datos

Imágen de pdf Ficheros y Bases de Datos

Ficheros y Bases de Datosgráfica de visualizaciones

Publicado el 14 de Enero del 2017
1.504 visualizaciones desde el 14 de Enero del 2017
276,0 KB
16 paginas
Creado hace 14a (16/02/2010)
Ficheros y bases de datos



Contenido:
7. Transacciones y control de la concurrencia

7.1.

Conceptos básicos
7.1.1. Transacción
7.1.2. Propiedades ACID

7.1.2.1. Atomicidad
7.1.2.2. Consistencia
7.1.2.3. Aislamiento
7.1.2.4. Durabilidad

7.1.2.3.1. Niveles de aislamiento

7.1.4.1. Transacciones anidadas

7.1.3. Estados de una transacción
7.1.4. Programación de transacciones
7.1.5. Elementos
7.1.6. Bloqueos
7.1.7. Secuencialidad de planificaciones
7.1.8. Planificadores y protocolos
7.2.1. Semántica de transacciones
7.2.2. Test de secuencialidad

Modelo transaccional simple

7.2.

7.3.
7.4.
7.5.

7.6.
7.7.

7.8.

7.9.

Protocolo de bloqueo de dos fases
Protocolos basados en grafos
Protocolos basados en marcas temporales

7.4.1. Protocolo de árbol
7.5.1. Marcas temporales
7.5.2. Protocolo de ordenación por marcas temporales

Protocolos optimistas
Gestión de fallos de transacciones

7.7.1. Compromiso de transacciones
7.7.2. Datos inseguros
7.7.3. Bloqueo de dos fases estricto
7.8.1. Recuperación basada en el registro (log)

Recuperación de caídas
7.8.1.1. Modificación diferida de la base de datos
7.8.1.2. Modificación inmediata de la base de datos
Bibliografía

7.8.2. Fallos de memoria permanente


7. Transacciones y control de la concurrencia

Los SGBDs son sistemas concurrentes, i.e., admiten la ejecución concurrente de consultas.
Ejemplo: Sistema de venta de billetes de avión.
Por tanto, es necesario:
Modelo de procesos concurrentes para admitir operaciones concurrentes que preserven la
integridad de los datos.
7.1. Conceptos básicos

Transacción

7.1.1.
Una transacción es una unidad de la ejecución de un programa. Puede consistir en varias
operaciones de acceso a la base de datos. Está delimitada por constructoras como begin-
transaction y end-transaction.


7-1



7.1.2.

Propiedades ACID

Ficheros y bases de datos



Atomicidad

7.1.2.1.
Es la propiedad de las transacciones que permite observarlas como operaciones atómicas:
ocurren totalmente o no ocurren.
Casos a considerar:
- Consultas unitarias. Incluso para consultas unitarias hay que preservar la atomicidad: en un
sistema operativo de tiempo compartido, la ejecución concurrente de dos consultas SQL puede
ser incorrecta si no se toman las precauciones adecuadas.
- Operación abortada. Por ejemplo, debido a una división por cero; por privilegios de acceso; o
para evitar bloqueos

7.1.2.2.
La ejecución aislada de la transacción conserva la consistencia de la base de datos.

Consistencia

Aislamiento

7.1.2.3.
Para cada par de transacciones que puedan ejecutarse concurrentemente Ti y Tj, se cumple que
para los efectos de Ti:
- Tj ha terminado antes de que comience Ti
- Tj ha comenzado después de que termine Ti
Las transacciones son independientes entre sí.
7.1.2.3.1.
Se puede ajustar el nivel de aislamiento entre las transacciones y determinar para una
transacción el grado de aceptación de datos inconsistentes.
A mayor grado de aislamiento, mayor precisión, pero a costa de menor concurrencia.
El nivel de aislamiento para una sesión SQL establece el comportamiento de los bloqueos para
las instrucciones SQL.
Niveles de aislamiento:
• Lectura no comprometida. Menor nivel. Asegura que no se lean datos corruptos físicamente.
• Lectura comprometida. Sólo se permiten lecturas de datos comprometidos.
• Lectura repetible. Las lecturas repetidas de la misma fila para la misma transacción dan los

Niveles de aislamiento

mismos resultados.

• Secuenciable. Mayor nivel de aislamiento. Las transacciones se aíslan completamente.
Comportamiento concurrente de las transacciones.
• Lectura sucia. Lectura de datos no comprometidos. (Retrocesos)
• Lectura no repetible. Se obtienen resultados inconsistentes en lecturas repetidas.
• Lectura fantasma. Una lectura de una fila que no existía cuando se inició la transacción.


Comportamiento permitido

Nivel de aislamiento
Lectura no comprometida
Lectura comprometida
Lectura repetible
Secuenciable
SQL Server permite todos estos niveles, Oracle sólo permite la lectura comprometida y
secuenciable. Los niveles se pueden establecer en ambos SGBD para cada transacción.

Lectura sucia Lectura no repetible

No
No
No

Lectura fantasma




No



No
No

7.1.2.4.
El sistema gestor de bases de datos asegura que perduren los cambios realizados por una
transacción que termina con éxito.

Durabilidad

7.1.3.
• Activa: Durante su ejecución

Estados de una transacción

7-2




Ficheros y bases de datos



• Parcialmente comprometida: Después de ejecutar su última instrucción.
• Fallida: Imposible de continuar su ejecución normal.
• Abortada: Transacción retrocedida y base de datos restaurada al estado anterior a su

ejecución. Se puede reiniciar o cancelar.

Diagrama de estados de una transacción:

Parcialmente
comprometida

Comprometida

Activa

Fallida

Abortada


Retroceso de transacciones: Automáticos y programados.



Programación de transacciones

SQL Server
BEGIN TRAN[SACTION]
Instrucción 1
...
SAVE TRAN[SACTION] sp
...
ROLLBACK [TRAN[SACTION] sp]
...
Instrucción n
COMMIT [TRAN[SACTION]]

7.1.4.
Tipos de transacciones: implícitas (modo de autocompromiso) y explícitas (delimitadas).
Transacciones explícitas:
Oracle

Instrucción 1
...
SAVEPOINT sp
...
ROLLBACK [TO SAVEPOINT sp]
...
Instrucción n
COMMIT [WORK]
Ejemplo (SQL Server):
Incremento de un 1% de las comisiones 15% y 16% de la tabla de comisiones roysched. Si no
existen estos porcentajes entonces no se ejecutará la instrucción de actualización. En este
ejemplo se deben incrementar ambos; si uno de ellos no existe, se debe dejar sin modificar.
BEGIN TRAN actualiza_comisiones -- Inicio de la transacción
USE pubs
IF EXISTS (SELECT titles.title, roysched.royalty
FROM titles, roysched
WHERE titles.title_id=roysched.title_id
AND roysched.royalty=16)
UPDATE roysched SET royalty=17 WHERE royalty=16
ELSE
ROLLBACK TRAN actualiza_comisiones

IF EXISTS (SELECT titles.title, roysched.royalty
FROM titles, roysched
WHERE titles.title_id=roysched.title_id
AND roysched.royalty=15)
BEGIN
UPDATE roysched SET royalty=16 WHERE royalty=15
COMMIT TRAN actualiza_comisiones
END
ELSE
ROLLBACK TRAN actualiza_comisiones

7-3





Ficheros y bases de datos

Transacciones anidadas



7.1.4.1.
Una transacción anidada o multinivel T consiste en un conjunto T = {t1, t2, . . ., tn} de
subtransacciones y en un orden parcial P sobre T.
Cada ti de T puede abortar sin obligar a que T aborte. Puede que T reinicie ti o simplemente no
ejecute ti. Si se compromete ti, esa acción no hace que ti sea permanente, sino que ti se
compromete con T, y puede que aborte si T aborta. La ejecución de T no debe violar el orden
parcial P. Es decir, si aparece un arco ti → tj en el grafo de precedencia, tj → ti no debe estar en
el cierre transitivo de P.

Ejemplo (SQL Server):
USE MyDB
GO
CREATE PROCEDURE Formular_pedido AS --Crea un procedimiento almacenado
BEGIN TRAN Tran_formular_pedido
-- Instrucciones SQL para la formulación del pedido
COMMIT TRAN Tran_formular_pedido

GO

BEGIN TRAN Tran_pedidos
-- Formular un pedido
EXEC Formular_pedido
COMMIT TRAN Tran_pedidos

GO

Oracle no admite transacciones anidadas, SQL Server sí.

Elementos

7.1.5.
Los elementos son las unidades de datos para los que se controla el acceso.
Por ejemplo: relación, tupla, campos, bloques, ...
La granularidad es el tamaño de los elementos. Así, se habla de sistemas de grano fino o de
grano grueso, para denotar elementos pequeños o grandes, respectivamente.
A mayor granularidad, menor concurrencia.
No obstante, para determinadas operaciones es interesante bloquear relaciones enteras, como
con la reunión de relaciones (join).

Bloqueos

7.1.6.
Un bloqueo es una información del tipo de acceso que se permite a un elemento. El SGBD
impone los bloqueos necesarios en cada momento. El gestor de acceso a los datos implementa
las restricciones de acceso. En algunos sistemas se permite que el usuario pueda indicar el
bloqueo más adecuado (locking hints).
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

7-4




Ficheros y bases de datos



• Clave: Fila de un índice
• Página: Páginas (8KB)
• Extent: Extensión (grupo de 8 páginas contiguas de datos o índices)
• Table: Tabla completa
• Database: Base de datos completa

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
n
  • Links de descarga
http://lwp-l.com/pdf715

Comentarios de: Ficheros y Bases de Datos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad