Está en la página 1de 16

TRANSACCIONES

Ing. Lorena Bowen Mendoza


Tipos de Ingeniería
MySQL
UNIDAD IV
ISAM
Es el formato de almacenaje mas antiguo, y posiblemente
podría desaparecer en futuras versiones. Presentaba
limitaciones importantes como la no exportación de
ficheros entre maquinas de distintas arquitecturas o que
no podía usar mayores de 4 GigaBytes.
BDB
Base de datos Berkeley. TST(Transactions safe tables). Es
una librería de manejo de Base de Datos con API para C,
C++, Java, Perl, Python, y otros lenguajes. Solo en MySQL
MYISAM
Es el tipo de tabla por defecto en MySQL desde la versión 3.23. Optimizada para
sistemas operativos de 64 bits, permite ficheros de tamaños mayores que las
ISAM. Los datos se almacenan en un formato independiente, lo que permite
pasar tablas entre distintas plataformas. Los índices se almacenan en un archivo
con la extensión ”.MYI” y los datos en otro archivo con extensión “.MYD”. Ofrece
la posibilidad de indexar campos BLOB y TEXT. Además este tipo de tablas
soportan el tipo de dato VARCHAR.
Un inconveniente es que las tablas pueden llegar a corromperse, almacenando
datos incorrectos. Esto puede ser causado por:
 El proceso mysql haya sido eliminado en el transcurso de una escritura.
 Problemas de hardware.
 Una caída del sistema durante su utilización.
 Un gusano en el código Mysql o MyISAM.
Funcionalidades específicas de MyISAM

 Ejecución rápida de COUNT(*)s (cuando no se utilizan


WHERE, GROUP BY, o JOIN)
 Indexación “full text”
 Ocupan menos espacio en disco que las tablas InnoDB
 Compresión elevada de tablas, pero las tablas
comprimidas son de sólo lectura
 Tipos de datos e índices espaciales (R-tree)
INNODB
InnoDB provee a MySQL con el soporte para trabajar con
transacciones, además de hacer un mejor bloqueo de registros para
las instrucciones SELECT muy parecido al usado por Oracle, con lo
que incrementa el rendimiento y la concurrencia en ambientes
multiusuario, por otro lado, InnoDB es el único formato que tiene
MySQL para soportar llaves foráneas (FOREING KEY). Además de
todo lo comentado, InnoDB ofrece unos rendimientos superiores a
la anterior tecnología de tablas de MySQL (MyISAM).
InnoDB es un motor de bases de datos muy completo que ha sido
integrado dentro de MySQL.
Funcionalidades específicas de InnoDB

 Transacción es un programa que actualiza la base de datos y


tiene 4 propiedades ACID.
 Bloqueo a nivel de registro (MyISAM sólo ofrece bloqueo a nivel
de tabla)
 Restricciones de clave externa (foreign key constraints)
 Recuperación automática en caso de crash
 Compresión de tablas con posibilidad de lectura/escritura
 Tipos de datos espaciales(pero no índices espaciales)
 Los datos son guardados en páginas en orden de clave primaria
Transacciones ACID
Las transacciones soportan lo que se conoce como las propiedades ACID.
 A: Atomicidad: “Cualquier cambio de estado que produce una
transacción es atómico, es decir, ocurren todos o no ocurre ninguno. En
otras palabras, esta propiedad asegura que 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 deben ser deshechos”
 C: Consistencia: Esta propiedad establece que solo los valores o datos
válidos serán escritos en la base de datos; si por algún motivo una
transacción que es ejecutada viola esta propiedad, se aplicará un
rollback a toda transacción dejando a las bases de datos en su estado
de consistencia anterior. En caso de que la transacción sea ejecutada
con éxito, la base de datos pasará de su estado de consistencia anterior
a un nuevo estado de consistencia.”
 I: Aislamiento: “Esta propiedad asegura que no sean afectadas
entre sí las transacciones, en otras palabras esto asegura que la
realización de dos o más transacciones sobre la misma información
sean independientes y no generen ningún tipo de error”
 D: Durabilidad: Es la propiedad de las transacciones que asegura
que una vez finalizada su ejecución, sus resultados son
permanentes a pesar de otras consecuencias, como por ejemplo, si
falla el disco duro el sistema aún será capaz de recordar todas las
transacciones que han sido realizadas en el sistema”
El cumplimiento de estas propiedades realizar un conjunto de
operaciones sucesivas sobre los datos, y validarlas todas ellas como
un bloque mediante una sentencia COMMIT, o bien deshacerlas con
una sentencia ROLLBACK, volviendo a dejar el contenido de la tabla
como estaba.
Bloqueo a nivel de registro y bloqueo a
nivel de tabla
En InnoDB, si varios usuarios o aplicaciones intentan acceder
simultáneamente a la información contenida en una tabla
para modificarla, el bloqueo a nivel de registro hace que
sólo deban quedar a la espera aquellos que intentan
modificar los datos de un mismo registro. En MyISAM,
cualquier proceso que intenta modificar la información de
una tabla queda a la espera hasta que no hay ningún otro
proceso accediendo a la misma
Restricciones de clave externa

A menudo, los datos de una tabla están relacionados con los


de otras. Las restricciones de clave externa aseguran la
integridad de estas relaciones.
Esta integridad referencial está implementada en el motor
de almacenamiento InnoDB, pero no en MyISAM
Recuperación en caso de caída

Si el servidor sufre una avería, o por alguna otra razón finaliza


abruptamente la ejecución de mysql, es necesario recuperar las
tablas MyISAM mediante una reparación completa de las tablas e
índices. Si las tablas contienen un gran volumen de datos, el
tiempo necesario para recuperar las tablas puede ser muy
elevado.
Por el contrario, las tablas InnoDB se recuperan automáticamente
volviendo a ejecutar las transacciones grabadas en el fichero de
log de transacciones, haciendo rollback de las que estén
incompletas.
Transacciones en MySQL

Los pasos para usar transacciones en MySQL son:


 Iniciar una transacción con el uso de la sentencia BEGIN.
 Actualizar, insertar o eliminar registros en la base de datos.
 Si se quieren los cambios a la base de datos, completar la
transacción con el uso de la sentencia COMMIT. Únicamente cuando
se procesa un COMMIT los cambios hechos por las consultas serán
permanentes.
 Si sucede algún problema, podemos hacer uso de la sentencia
ROLLBACK para cancelar los cambios que han sido realizados por las
consultas que han sido ejecutadas hasta el momento.
Crear una tabla InnoDB

CREATE TABLE ejemplo


(campo INT NOT NULL PRIMARY KEY)
TYPE = InnoDB;
 Esto es aplicable a cualquier tipo de tabla, pero cuando
no se especifica nada, MySQL supone que se trata de una
tabla MyISAM
 INSERT INTO ejemplo VALUES(1);
 INSERT INTO ejemplo VALUES(2);
 INSERT INTO ejemplo VALUES(3);
Ejemplo ROLLBACK
 SELECT * FROM ejemplo;

Ahora veamos como usar transacciones.


 mysql> BEGIN;
 mysql> INSERT INTO ejemplo VALUES(4);
 mysql> SELECT * FROM ejemplo;
Ejecutamos un ROLLBACK, la transacción no será completada, y los cambios
realizados sobre la tabla no tendrán efecto.
 mysql> ROLLBACK;
 mysql> SELECT * FROM ejemplo;
Ejemplo COMMIT
 SELECT * FROM ejemplo;

Ahora veamos como usar transacciones.


 mysql> BEGIN;
 mysql> INSERT INTO ejemplo VALUES(4);
 mysql> SELECT * FROM ejemplo;
Ejecutamos un COMMIT, la transacción será completada, y se realizan los
cambios sobre la tabla.
 mysql> COMMIT;
 mysql> SELECT * FROM ejemplo;

También podría gustarte