P. 1
CONTROL DE CONCURRENCIA

CONTROL DE CONCURRENCIA

4.67

|Views: 18.537|Likes:
Publicado porjuliocromani04

More info:

Published by: juliocromani04 on Oct 23, 2007
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PPT, PDF, TXT or read online from Scribd
See more
See less

08/16/2013

pdf

text

original

TRANSACCIONES Y CONTROL DE CONCURRENCIA

JULIO CESAR ROMANI LOYOLA VLADIMIR ORTIZ VELASQUEZ

Control de concurrencia
La Concurrencia en las base de datos es de suprema importancia en los sistemas de información, ya que evita errores en el momento de ejecutar las diferentes transacciones

Control de concurrencia
En si la concurrencia es la propiedad de los sistemas que permiten que múltiples procesos sean ejecutados al mismo tiempo, y que potencialmente puedan interactuar entre sí

Que es una transacción? • Definición
Una transacción es una unidad de programa que accesa y posiblemente actualiza varios elementos de datos. Es decir : cada transacción accede a información compartida sin interferir con otras transacciones, y si una transacción termina normalmente, todos sus efectos son permanentes, en caso contrario no tiene afecto alguno.

Propiedades de la transacción • Atomicidad
Se refiere al hecho de que una transacción se trata como una unidad de operación. Por lo tanto, o todas las acciones de la transacción se realizan o ninguna de ellas se lleva a cabo. La atomicidad requiere que si una transacción se interrumpe por una falla, sus resultados parciales sean anulados.

Propiedades de la transacción • Consistencia
La consistencia de una transacción es simplemente su correctitud. En otras palabras, una transacción es un programa correcto que lleva a la base de datos de un estado consistente a otro con la misma característica. Debido a esto, las transacciones no violan las restricciones de integridad de una base de datos.

Propiedades de la transacción
• Aislamiento
Una transacción en ejecución no puede revelar sus resultados a otras transacciones concurrentes antes de finalizar. Más aún, si varias transacciones se ejecutan concurrentemente, los resultados deben ser los mismos que si ellas se hubieran ejecutado de manera secuencial.

Propiedades de la transacción • Permanencia
Es la propiedad de las transacciones que asegura que una vez que una transacción finaliza exitosamente, sus resultados son permanentes y no pueden ser borrados de la base de datos por alguna falla posterior.

Propiedades de la transacción
• Por lo tanto, los sistemas manejadores de base de datos aseguran que los resultados de una transacción sobrevivirán a fallas del sistema. Esta propiedad motiva el aspecto de recuperación de base de datos, el cual trata sobre como recuperar la base de datos a un estado consistente donde todas las acciones que han finalizado con éxito queden reflejadas en la base.

TRANSACCIÓN
El procesamiento de transacciones es una de las tareas más importantes dentro de un sistema de base de datos, pero a la vez, es una de las más difíciles de manejar debido a diversos aspectos, tales como : • Confiabilidad Puesto que los sistemas de base de datos en línea no pueden fallar.

TRANSACCIÓN
• Disponibilidad Debido a que los sistemas de base de datos en línea deben estar actualizados correctamente todo el tiempo. • Tiempos de Respuesta En sistemas de este tipo, el tiempo de respuesta de las transacciones no debe ser mayor a doce segundos.

TRANSACCIÓN
• Throughput Los sistemas de base de datos en línea requieren procesar miles de transacciones por segundo. • Atomicidad En el procesamiento de transacciones no se aceptan resultados parciales. • Permanencia No se permite la eliminación en la base de datos de los efectos de una transacción que ha culminado con éxito.

TRANSACCIÓN
El punto importante es asegurar que la base de datos regresa a un estado consistente al fin de la ejecución de una transacción

TRANSACCIÓN

TRANSACCIÓN
• En esencia, lo que se persigue con el procesamiento de transacciones es, por una parte obtener una transparencia adecuada de las acciones concurrentes a una base de datos y por otra parte manejar adecuadamente las fallas que se puedan presentar en una base de datos.

TRANSACCIÓN
• Un SGBD se dice transaccional si es capaz de mantener la integridad de los datos, haciendo que estas transacciones no puedan finalizar en un estado intermedio. Cuando por alguna causa el sistema debe cancelar la transacción, empieza a deshacer las ordenes ejecutadas hasta dejar la base de datos en su estado inicial (llamado punto de integridad), como si la orden de la

TRANSACCIÓN
Acciones que deben constituir una transacción • BEGIN TRAN: Especifica que va a empezar una transacción. • COMMIT TRAN: Le indica al motor que puede considerar la transacción completada con éxito. • ROLLBACK TRAN: Indica que se ha alcanzado un fallo y que debe restablecer la base al punto de integridad.

TRANSACCIÓN
REGISTRO DE TRANSACCIONES
Un DBMS utiliza un registro de transacciones para dar seguimiento a todas las transacciones que actualizan la base de datos. La información guardada en este registro es utilizada por el DBMS para un requerimiento de recuperación activo por una sentencia ROLLBACK. Oracle de manera automática deshace las transacciones no comprometidas y continúa con las transacciones que estaban comprometidas pero aún no escritas en la base de datos física.

TRANSACCIÓN
Mientras que el DBMS ejecuta transacciones que modifican la base de datos, también actualiza automáticamente el registro de transacciones. El registro de transacciones guarda:
 Un registro de inicio de la transacción.  Por cada componente de transacción(sentencia SQL) guarda:  El tipo de operación que se este realizando(actualización, eliminación, inserción).  Los nombres de los objetos afectados por la transacción(el nombre de la tabla).  Los valores “antes” y “después” de los campos que se están actualizando.  Sañalizadores a los ingresos de registro de transacción previo y siguiente para la misma transacción.  Un registro de inicio de la transacción.  La finalización (COMMIT) de la transacción.

TRANSACCIÓN
REGISTRO DE TRANSACCIONES

TRANSACCIÓN
EJEMPLO
Un ejemplo habitual de transacción es el traspaso de una cantidad de dinero entre cuentas bancarias. Normalmente se realiza mediante dos operaciones distintas, una en la que se decrementa el saldo de la cuenta origen y otra en la que incrementamos el saldo de la cuenta destino. Para garantizar la consistencia del sistema (es decir, para que no aparezca o desaparezca dinero), los dos operaciones deben ser atómicas, es decir, el sistema debe garantizar que, bajo cualquier circunstancia (incluso una caída del sistema), el resultado final es que, o bien se han realizado las dos operaciones, o bien no se ha realizado ninguna

TRANSACCIÓN
• La forma algorítmica que suelen tener las transacciones es la siguiente: Crear Conexión Abrir Conexión (Openconnection) Iniciar Transacción (Begin Transaction) setAutoCommit(0/false) Queries... (Insert, Select, Update, Delete...) -Error (Abort Transaction) rollback Procesar resultados (Print, a= , b= ) Asegurar Transacción (End Transaction) commit Cerrar Conexión (Closeconnection)

NIVELES DE AISLAMIENTO
• Las transacciones especifican un nivel de aislamiento que define el grado en que se debe aislar una transacción de las modificaciones de recursos o datos realizadas por otras transacciones. Los niveles de aislamiento se describen en cuanto a los efectos secundarios de la simultaneidad que se permiten, como las lecturas no confirmadas o las lecturas ficticias. Los niveles de aislamiento de transacción controlan los siguientes aspectos: • • • Si se realizan bloqueos cuando se leen los datos y qué tipos de bloqueos se solicitan. La duración de los bloqueos de lectura. Si una operación de lectura que hace referencia a filas modificadas por otra transacción: – Se bloquea hasta que se libera el bloqueo exclusivo de la fila. – Recupera la versión confirmada de la fila que existía en el momento en el que empezó la instrucción o la transacción. – Lee la modificación de los datos no confirmados.

NIVELES DE AISLAMIENTO
• READ COMMITED (Lectura de confirmadas) Adquiere un bloqueo compartido mientras incluye una fila en un cursor pero libera el bloqueo inmediatamente después de leer la fila.
• READ UNCOMMITED (Lectura de no confirmadas)

No solicita bloqueos mientras incluye una fila en un cursor y no respeta ningún bloqueo exclusivo. Se pueden llenar los cursores con valores que ya se han actualizado pero que aún no se han confirmado.

NIVELES DE AISLAMIENTO
• REPEATABLE READ (Lectura repetible) o SERIALIZABLE Solicita un bloqueo compartido en cada fila a medida que la incluye en el cursor, como en READ COMMITTED, pero si el cursor se abre dentro de una transacción, se mantienen los bloqueos compartidos hasta el final de la transacción en lugar de liberarse tras leer la fila.

NIVELES DE AISLAMIENTO
• SNAPSHOT (Instantánea) No solicita bloqueos mientras incluye una fila en un cursor y no respeta ningún bloqueo exclusivo. El cursor se llena con los valores a partir del momento en que se inicia por primera vez la transacción. Se siguen solicitando bloqueos de desplazamiento, con independencia del uso de aislamiento de instantánea.

NIVELES DE AISLAMIENTO
SQL estándar define 4 niveles de aislamiento en términos de 3 fenómenos que deben ser prevenidos entre transacción concurrentes. Estos son: • DIRTY READ: Una transacción lee datos escritos por una transacción concurrente que no ha hecho "commit" • NONREPEATABLE READ: Una transacción re-lee datos que leyó previamente y encuentra que han sido modificados por otra transacción (que hizo commit en el inter). • PHANTOM READ: Una transacción re-ejecuta un query regresando un conjunto de tuplas que satisfacen una condición de búsqueda y encuentra que el resultado ha cambiado debido a otra transacción que hizo "commit" recientemente.

NIVELES DE BLOQUEO
• BLOQUEOS COMPARTIDOS Los bloqueos compartidos permiten que varias transacciones simultáneas lean (SELECT) un recurso en situaciones de control de simultaneidad pesimista. Ninguna otra transacción podrá modificar los datos mientras el bloqueo compartido exista en el recurso. Los bloqueos compartidos en un recurso se liberan tan pronto como finaliza la operación de lectura, a menos que se haya establecido el nivel de aislamiento de la transacción como REPEATABLE READ o más alto, o bien se utilice una sugerencia de bloqueo para mantener los bloqueos compartidos durante la transacción.

NIVELES DE BLOQUEO
• BLOQUEOS EXCLUSIVOS Los bloqueos exclusivos evitan que transacciones simultáneas tengan acceso a un recurso. Al utilizar un bloqueo exclusivo, el resto de las transacciones no pueden modificar los datos; las operaciones de lectura sólo se pueden realizar si se utiliza la sugerencia NOLOCK o el nivel de aislamiento de lectura no confirmada. Las instrucciones para modificar datos, como INSERT, UPDATE y DELETE combinan las operaciones de modificación con las de lectura. En primer lugar, la instrucción lleva a cabo operaciones de lectura para adquirir los datos antes de proceder a ejecutar las operaciones de modificación necesarias. Por tanto, las instrucciones de modificación de datos suelen solicitar bloqueos compartidos y exclusivos. Por ejemplo, una instrucción UPDATE puede modificar las filas de una tabla a partir de una combinación con otra tabla. En este caso, la instrucción UPDATE solicita bloqueos compartidos para la filas leídas en la tabla de combinación, además de bloqueos exclusivos para las filas actualizadas.

MARCAS DE TIEMPO
• En lugar de determinar el orden entre las transacciones en conflicto en función del momento del acceso a los elementos, determinan por adelantado una ordenación de las transacciones. • • El interbloqueo es imposible.

Una marca de tiempo es un identificador único asociado a • cada transacción • Las actualizaciones físicas se retrasan hasta la confirmación • de las transacciones. No se puede actualizar ningún

MARCAS DE TIEMPO
• Protocolos:
– Wait-die: que fuerza a una transacción a esperar en caso de que entre en conflicto con otra transacción cuya marca de tiempo sea mas reciente, o a morir (abortar y reiniciar) si la transacción que se esta ejecutando es más antigua. – Wound-wait: que permite a una transacción matar a otra que posea una marca de tiempo más reciente, o que fuerza a la transacción peticionaria a esperar.

MARCAS DE TIEMPO
• Marcas de tiempo multiversión
– Varias transacciones leen y escriben diferentes versiones del mismo dato siempre que cada transacción sea un conjunto consistente de versiones de todos los datos a los que accede.

• ORACLE utiliza un sistema multiversión • Protocolo:
– Esta basado en marcas de tiempo – El control de concurrencia es de varias versiones a la vez de un item de datos. – Cuando una transacción requiere acceder a un item, la marca de tiempo de la transacción es comparada con las marcas de tiempo de las diferentes versiones del item.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->