Transacciones

Páginas: 11 (2575 palabras) Publicado: 27 de noviembre de 2012
Transacciones
Transacciones
Las consultas a las bases de datos se ejecutan una detrás de otra. Para un sitio web que sirve páginas, no suele importar mucho el orden en que éstas se ejecutan, siempre y cuando se ejecuten rápido. Pero algunos tipos de consultas necesitan ejecutarse en un orden específico, como aquellas que dependen de los resultados de la anterior, o grupos de actualizacionesque necesitan ser hechos en su totalidad. Todos los tipos de tablas en MySQL pueden emplear bloqueos, pero sólo las tablas InnoDB y BDB tienen un sistema de transacciones.
A lo largo de este capítulo iremos viendo los mecanismos de bloqueo y transacciones. Para realizar los ejemplos y ejercicios del mismo, será necesario que tengamos dos ventanas distintas del cliente mysql abiertas. Cada una deellas tendrán una conexión distinta y, por tanto, podremos ver como los bloqueos impuestos por una de ellas afectan a la otra.
Nota: En la versión 0.9.1 de MyCC, la más moderna cuando se escribieron estas líneas, las transacciones daban mucho problemas con este cliente. Es posible que la versión que dispongas sea más moderna y quieras realizar con ella las consultas, pero no obstante los ejemplosse escribirán asumiendo el uso del cliente mysql.
Una transacción es un grupo de sentencias SQL agrupadas como si fueran una. Un ejemplo típico es una transacción bancaria. Si queremos transferir el dinero de una cuenta a otra, necesitaremos al menos dos consultas:
UPDATE cuentas SET dinero = dinero-transferencia
WHERE cuenta="cuenta1";
UPDATE cuentas SET dinero = dinero+transferencia
WHEREcuenta="cuenta2";
En principio no parece haber problemas con esto, pero… ¿que sucedería si se fuera la luz o se cayera el sistema después de que se hubiera completado la primera consulta pero no la segunda? Que tendríamos dos clientes enfadados, y con razón, porque el primero habría dejado de tener el dinero mientras que el segundo no lo habría recibido. En estos casos es cuando necesitamos que seejecuten ambas consultas o o no se ejecute ninguna. Para ello las unimos en lo que se denomina una transacción.
Condiciones ACID
Todos los comandos SQL deben cumplir las llamadas condiciones "ACID", que son las siguientes:
* A (atomicidad): las operaciones que se realizan deben poder considerarse como una sola. Eso significa que, o se llevan a cabo todas, o no se realiza ninguna.
* C(consistencia): cualquier operación que sea validada o cancelada no puede dejar datos inconsistentes (por ejemplo violando reglas de integridad referencial).
* I (aislamiento o isolation en inglés): las modificaciones realizadas por la operación deben aislarse de las modificaciones llevadas a cabo por otras operaciones que se ejecuten al mismo tiempo. El gestor de la base de datos debe aislar losdatos 'sucios' para evitar que otros usuarios usen información no confirmada o validada.
* D (durabilidad): una vez realizada con éxito la operación, las modificaciones deben persistir en la base de datos.
Las transacciones tienen el objetivo de lograr que una serie de comandos (y no sólo uno) cumplan dichas condiciones.
De las cuatro condiciones ACID, es la de aislamiento la que producevarios problemas al mecanismo de transacciones. Son los siguientes:
* Problema de la modificación perdida: surge cuando dos o más transacciones acceden a la misma fila y modifican su valor basándose en el valor original de la misma. Como cada transacción ignora la existencia del resto de transacciones, la última modificación sobreescribe las modificaciones realizadas por las otras transacciones.* Lectura sucia: ocurre cuando una transacción modifica una fila y una segunda transacción lee esa fila antes de que la primera transacción comprometa el cambio. Si la primera transacción retrocede y deshace el cambio, la información leída por la segunda transacción se vuelve incorrecta.
* Lectura no repetible: sucede cuando una transacción lee una fila y una segunda transacción...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Transacciones
  • Transacciones
  • transacciones
  • LAS TRANSACCIONES
  • Transacciones
  • Transaccion
  • Transacciones
  • Transacciones

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS