-El Motor de base de datos es el servicio principal para almacenar, procesar y proteger los datos. El Motor de base de datos proporciona acceso controlado y procesamiento de transacciones rápido para cumplir con los requisitos de las aplicaciones consumidoras de datos.
MyISAM:
-MyISAM es la tecnología de almacenamiento de datos usada por defecto por el sistema administrador de bases de datos relacionales MySQL. Este tipo de tablas están basadas en el formato ISAM pero con nuevas extensiones.
Cada tabla de tipo MyISAM se guarda en tres archivos. Los archivos tienen el nombre de la tabla y una extensión que indica el tipo de archivo,
- .frm almacena la definición de la tabla
- .MYD (MyData) contiene los registros de la tabla
- .MYI (MyIndex) contiene los índices de la tabla
-InnoDB es una tecnología de almacenamiento de datos de código abierto para la base de datos MySQL, incluido como formato de tabla estándar en todas las distribuciones de MySQL AB a partir de las versiones 4.0. Su característica principal es que soporta transacciones de tipo ACID y bloqueo de registros e integridad referencial.
Transacciones de tipo ACID:
-En concreto ACID es un acrónimo de Atomicity, Consistency, Isolation and Durability: Atomicidad, Consistencia, Aislamiento y Durabilidad en español.
- Atomicidad: es la propiedad que asegura que la operación se ha realizado o no, y por lo tanto ante un fallo del sistema no puede quedar a medias.
- Consistencia: Integridad. Es la propiedad que asegura que sólo se empieza aquello que se puede acabar. Por lo tanto se ejecutan aquellas operaciones que no van a romper las reglas y directrices de integridad de la base de datos. La propiedad de consistencia sostiene que cualquier transacción llevará a la base de datos desde un estado válido a otro también válido.
- Aislamiento: es la propiedad que asegura que una operación no puede afectar a otras. Esto asegura que la realización de dos transacciones sobre la misma información sean independientes y no generen ningún tipo de error.
- Durabilidad: es la propiedad que asegura que una vez realizada la operación, ésta persistirá y no se podrá deshacer aunque falle el sistema.
-Estas son algunas de las diferencias entre los dos:
- InnoDB se recupera de un problema volviendo a ejecutar sus logs, mientras que MyISAM necesita repasar todos los índices y tablas que hayan sido actualizados y reconstruirlos si esos cambios no han sido escritos en disco. El primer proceso requiere más o menos el mismo tiempo siempre, mientras que el segundo aumenta con el tamaño de la base de datos.
- MyISAM deja al sistema operativo la tarea de hacer la caché de las lecturas y escrituras de los registros, mientras que InnoDB realiza él mismo la tarea, combinando cachés de registro y de índice. InnoDB no envía directamente los cambios en las tablas al sistema operativo para que las escriba, lo que puede hacerlo mucho más rápido que MyISAM en ciertos escenarios.
- InnoDB almacena físicamente los registros en el orden de la clave primaria, mientras que MyISAM los guarda en el orden en que fueron añadidos. Cuando la clave primaria se escoge de acuerdo con las necesidades de las consultas más habituales esto puede suponer una mejora sustancial del rendimiento. Por otro lado, si los datos se insertan en un orden que difiera sustancialmente del orden de la clave primaria, se obliga a InnoDB a reordenar mucho los datos para mantenerlos en el orden adecuado.
- InnoDB no dispone de la compresión de datos de la que disfruta MyISAM, de modo que tanto el espacio en disco como la caché en la memoria RAM pueden ser más grandes. Este problema se ha reducido en MySQL 5.0, reduciéndolo en aproximadamente un 20%.
- Cuando opera con transacciones ACID, InnoDB debe escribir en disco al menos una vez por cada transacción, aunque puede combinar las escrituras de varias inserciones concurrentes. Para los discos duros típicos, esto supone un límite de aproximadamente 200 transacciones por segundo, por lo que aumentarlas exige controladores de disco con caché de escritura y sistema de alimentación ininterrumpido para mantener la integridad. InnoDB ofrece diversos modos de funcionamiento que reducen este efecto, pero conllevan una pérdida de integridad transaccional. MyISAM no tiene ese problema porque no soporta transacciones.
Lo primero que tenemos que hacer es conectarnos con un usuario con suficientes privilegios a nuestro MySQL y ejecutar el comando show engines.
mysql> show engines; +------------+---------+----------------------------------------------------------------+ | Engine | Support | Comment | +------------+---------+----------------------------------------------------------------+ | MRG_MYISAM | YES | Collection of identical MyISAM tables | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | | FEDERATED | NO | Federated MySQL storage engine | | ARCHIVE | YES | Archive storage engine | | MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance | +------------+---------+----------------------------------------------------------------+Si InnoDB no aparece en el listado de show engines, deberemos hacer que MySQL lo cargue, para esto, tenemos algunas opciones, y según nuestra configuración funcionará una u otra:
Utilizando AppArmor: Si estamos usando AppArmor, deberemos editar el fichero /etc/apparmor.d/usr.sbin.mysqld y añadirle las siguientes líneas:
/usr/lib/mysql/plugin/ r, /usr/lib/mysql/plugin/* mr,Después recargamos AppArmor y reiniciamos MySQL, por ejemplo así:
sudo /etc/init.d/apparmor reload sudo /etc/init.d/mysql restart
No hay comentarios:
Publicar un comentario