Capítulo 16 Motores de almacenamiento alternativos

Los motores de almacenamiento son componentes de MySQL que manejan las operaciones SQL para diferentes tipos de tablas. InnoDB es el motor de almacenamiento por defecto y de uso más general, y Oracle recomienda utilizarlo para las tablas excepto para casos de uso especializados. (La sentencia CREATE TABLE en MySQL 8.0 crea tablas InnoDB de forma predeterminada).

MySQL Server utiliza una arquitectura de motor de almacenamiento conectable que permite cargar y descargar motores de almacenamiento de un servidor MySQL en ejecución.

Para determinar qué motores de almacenamiento soporta su servidor, utilice la sentencia SHOW ENGINES. El valor de la columna Support indica si se puede utilizar un motor. Un valor de YES, NO o DEFAULT indica que un motor está disponible, no está disponible o está disponible y actualmente está configurado como motor de almacenamiento predeterminado.

mysql> SHOW ENGINES\G*************************** 1. row *************************** Engine: PERFORMANCE_SCHEMA Support: YES Comment: Performance SchemaTransactions: NO XA: NO Savepoints: NO*************************** 2. row *************************** Engine: InnoDB Support: DEFAULT Comment: Supports transactions, row-level locking, and foreign keysTransactions: YES XA: YES Savepoints: YES*************************** 3. row *************************** Engine: MRG_MYISAM Support: YES Comment: Collection of identical MyISAM tablesTransactions: NO XA: NO Savepoints: NO*************************** 4. row *************************** Engine: BLACKHOLE Support: YES Comment: /dev/null storage engine (anything you write to it disappears)Transactions: NO XA: NO Savepoints: NO*************************** 5. row *************************** Engine: MyISAM Support: YES Comment: MyISAM storage engineTransactions: NO XA: NO Savepoints: NO...

Este capítulo cubre casos de uso para motores de almacenamiento MySQL de propósito especial. No cubre el motor de almacenamiento por defecto InnoDB ni el motor de almacenamiento NDB que se tratan en el Capítulo 15, El motor de almacenamiento InnoDB y en el Capítulo 23, MySQL NDB Cluster 8.0. Para los usuarios avanzados, también contiene una descripción de la arquitectura del motor de almacenamiento enchufable (véase la Sección 16.11, «Visión general de la arquitectura del motor de almacenamiento MySQL»).

Para obtener información sobre las características ofrecidas en los binarios comerciales de MySQL Server, consulte Ediciones de MySQL, en el sitio web de MySQL. Los motores de almacenamiento disponibles podrían depender de la edición de MySQL que esté utilizando.

Para obtener respuestas a las preguntas más frecuentes sobre los motores de almacenamiento de MySQL, consulte la sección A.2, «Preguntas frecuentes sobre MySQL 8.0: Motores de almacenamiento».

Motores de almacenamiento soportados por MySQL 8.0

  • InnoDB: El motor de almacenamiento por defecto en MySQL 8.0. InnoDB es un motor de almacenamiento a prueba de transacciones (compatible con ACID) para MySQL que tiene capacidades de commit, rollback y crash-recovery para proteger los datos del usuario. InnoDB El bloqueo a nivel de fila (sin escalar a bloqueos de granularidad más gruesa) y las lecturas consistentes sin bloqueo al estilo de Oracle aumentan la concurrencia multiusuario y el rendimiento. InnoDB almacena los datos del usuario en índices agrupados para reducir la E/S en las consultas comunes basadas en claves primarias. Para mantener la integridad de los datos, InnoDB también admite las restricciones de integridad referencial FOREIGN KEY. Para obtener más información sobre InnoDB, consulte el capítulo 15, El motor de almacenamiento InnoDB.

  • MyISAM: Estas tablas ocupan poco espacio. El bloqueo a nivel de tabla limita el rendimiento en las cargas de trabajo de lectura/escritura, por lo que se suele utilizar en cargas de trabajo de sólo lectura o de lectura en configuraciones web y de almacenamiento de datos.

  • Memory: Almacena todos los datos en la memoria RAM, para un acceso rápido en entornos que requieren búsquedas rápidas de datos no críticos. Este motor se conocía anteriormente como motor HEAP. Sus casos de uso están disminuyendo; InnoDB con su área de memoria de reserva de búferes proporciona una forma duradera y de propósito general para mantener la mayoría o todos los datos en la memoria, y NDBCLUSTER proporciona búsquedas rápidas de valores clave para enormes conjuntos de datos distribuidos.

  • CSV: Sus tablas son realmente archivos de texto con valores separados por comas. Las tablas CSV le permiten importar o volcar datos en formato CSV, para intercambiar datos con scripts y aplicaciones que leen y escriben ese mismo formato. Dado que las tablas CSV no están indexadas, normalmente se mantienen los datos en tablas InnoDB durante el funcionamiento normal, y sólo se utilizan las tablas CSV durante la fase de importación o exportación.

  • Archive: Estas tablas compactas y no indexadas están pensadas para almacenar y recuperar grandes cantidades de información histórica, archivada o de auditoría de seguridad que se consulta con poca frecuencia.

  • Blackhole: El motor de almacenamiento de Blackhole acepta pero no almacena datos, de forma similar al dispositivo Unix /dev/null. Las consultas siempre devuelven un conjunto vacío. Estas tablas pueden utilizarse en configuraciones de replicación en las que las sentencias DML se envían a los servidores de réplica, pero el servidor de origen no mantiene su propia copia de los datos.

  • NDB (también conocido como NDBCLUSTER): Este motor de base de datos en clúster es especialmente adecuado para aplicaciones que requieren el mayor grado posible de tiempo de actividad y disponibilidad.

  • Merge: Permite a un DBA o desarrollador de MySQL agrupar lógicamente una serie de tablas idénticas MyISAM y referenciarlas como un solo objeto. Bueno para entornos VLDB como el almacenamiento de datos.

  • Federated: Ofrece la posibilidad de enlazar servidores MySQL separados para crear una base de datos lógica a partir de muchos servidores físicos. Muy bueno para entornos distribuidos o de data mart.

  • Example: Este motor sirve como ejemplo en el código fuente de MySQL que ilustra cómo empezar a escribir nuevos motores de almacenamiento. Es principalmente de interés para los desarrolladores. El motor de almacenamiento es un «stub» que no hace nada. Puede crear tablas con este motor, pero no se pueden almacenar datos en ellas ni recuperarlos.

No está restringido a usar el mismo motor de almacenamiento para todo un servidor o esquema. Puede especificar el motor de almacenamiento para cualquier tabla. Por ejemplo, una aplicación podría utilizar principalmente tablas InnoDB, con una tabla CSV para exportar datos a una hoja de cálculo y algunas tablas MEMORY para espacios de trabajo temporales.

Elección de un motor de almacenamiento

Los diversos motores de almacenamiento proporcionados con MySQL están diseñados con diferentes casos de uso en mente. La siguiente tabla proporciona un resumen de algunos motores de almacenamiento proporcionados con MySQL, con notas aclaratorias a continuación de la tabla.

Tabla 16.1 Resumen de las características de los motores de almacenamiento

.

Función MyISAM Memoria InnoDB Archivo NDB
B-índices de árbol No No
Copia de seguridad/punto entiempo (nota 1)
Soporte de base de datos en clúster No No No No
Índices agrupados No No No No
Datos comprimidos Sí (nota 2) No No
Cachés de datos No N/A No
Datos cifrados Sí (nota 3) Sí (nota 3) Sí (nota 4) Sí (nota 3) Sí (nota 3)
Soporte de claves extranjeras No No No Sí (nota 5)
Sin…índices de búsqueda de texto No Sí (nota 6) No No
Soporte geoespacial soporte de tipos de datos No
Indización geoespacial soporte No Sí (nota 7) No No
Índices hash No No (nota 8) No
Cachés de índices N/A No
Granularidad de bloqueo Tabla Tabla Fila Fila Fila
MVCC No No No No
Soporte de replicación (nota 1) Limitado (nota 9)
Límites de almacenamiento 256TB RAM 64TB Nada 384EB
T-índices del árbol No No No No
Transacciones No No No
Actualizar las estadísticas del diccionario de datos

Notas:

1. Implementado en el servidor, en lugar de en el motor de almacenamiento.

2. Las tablas MyISAM comprimidas sólo se admiten cuando se utiliza el formato de filas comprimido. Las tablas que utilizan el formato de filas comprimido con MyISAM son de sólo lectura.

3. Implementado en el servidor a través de funciones de cifrado.

4. Implementado en el servidor a través de funciones de cifrado; En MySQL 5.7 y posteriores, se admite el cifrado de datos en reposo.

5. El soporte para claves foráneas está disponible en MySQL Cluster NDB 7.3 y posteriores.

6. El soporte para índices FULLTEXT está disponible en MySQL 5.6 y posteriores.

7. El soporte para indexación geoespacial está disponible en MySQL 5.7 y posteriores.

8. InnoDB utiliza índices hash internamente para su característica de Índice Hash Adaptable.

9. Véase la discusión más adelante en esta sección.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.