GNU/Linux >> Tutoriales Linux >  >> Cent OS

MyISAM frente a InnoDB:una comparación

Introducción

Elegir el motor de almacenamiento adecuado es una decisión estratégica crucial que afecta el desarrollo futuro. Dependiendo de su caso de uso, decida entre dos motores de almacenamiento principales para MySQL:MyISAM o InnoDB .

En este artículo, aprenderá las principales diferencias entre los motores de almacenamiento MyISAM e InnoDB, cómo verificar qué motor de almacenamiento está utilizando y cómo convertirlo.

Requisitos previos

  • Acceso a la terminal/línea de comando
  • Una base de datos MySQL funcional
  • phpMyAdmin instalado

¿Qué son MyISAM e InnoDB

MyISAM e InnoDB son motores de almacenamiento MySQL. Los motores de almacenamiento son componentes del sistema de gestión de bases de datos que se utilizan para manipular datos de la base de datos.

Mi ISAM

MyISAM significa Método de acceso secuencial indexado. Fue el motor de almacenamiento predeterminado para MySQL hasta diciembre de 2009. Con el lanzamiento de MySQL 5.5, MyISAM fue reemplazado por InnoDB.

MyISAM se basa en un algoritmo ISAM que muestra información de grandes conjuntos de datos rápidamente. Tiene una pequeña huella de datos y es más adecuado para almacenamiento de datos y aplicaciones web.

InnoDB

InnoDB ha sido el motor de almacenamiento predeterminado para MySQL desde el lanzamiento de MySQL 5.5. Es más adecuado para grandes bases de datos que contienen datos relacionales.

InnoDB se centra en la alta confiabilidad y el rendimiento, lo que lo hace ideal para los sistemas de administración de contenido. Uno de los usos más conocidos de InnoDB es el software MediaWiki que impulsa Wikipedia.

Principales diferencias entre MyISAM y InnoDB

Echemos un vistazo a las principales diferencias entre MyISAM e InnoDB.

Tipo de motor de almacenamiento

Hay dos tipos de motores de almacenamiento, según el método de reversión:

  • No transaccional – las opciones de escritura deben revertirse manualmente.
  • Transaccional: las opciones de escritura retroceden automáticamente si no se completan.

Resumen: MyISAM es un motor de almacenamiento no transaccional, mientras que InnoDB es un motor de almacenamiento transaccional.

Bloqueo

El bloqueo en MySQL es una opción que evita que dos o más usuarios modifiquen datos al mismo tiempo. El usuario no puede modificar los datos cuando la opción de bloqueo está activada. Esta característica preserva la validez de todos los datos.

MiISAM utiliza bloqueo de tablas como el método predeterminado de bloqueo. Permite que una sola sesión modifique tablas a la vez. Las tablas siempre se bloquean en el mismo orden. El método de bloqueo de tablas es más adecuado para bases de datos de solo lectura que no requieren mucha memoria.

Ejemplo de bloqueo de tabla:

Características MiISAM InnoDB
Tipo No transaccional Transaccional
Bloqueo Bloqueo de tablas Bloqueo a nivel de fila
Claves foráneas No
Tablas, índices y almacenamiento de datos Tres archivos separados (.frm, .myd y .myi) Espacio de tablas
Diseñado para Velocidad Rendimiento
ÁCIDO No

InnoDB usa bloqueo de nivel de fila como el método predeterminado de bloqueo. Admite sesiones múltiples en filas seleccionadas bloqueando solo las filas en el proceso de modificación. El bloqueo de filas es más adecuado para bases de datos que tienen varios usuarios. La desventaja es que requiere mucha memoria y lleva más tiempo consultar y modificar datos.

Ejemplo de bloqueo a nivel de fila:

Consultas Columna 1 Columna 2 Columna 3
Consulta 1 (actualización) Escribir Datos Datos
Consulta 2 (esperar) Datos Datos Datos
Consulta 3 (esperar) Datos Datos Datos

Resumen: MyISAM usa el bloqueo de tablas, mientras que InnoDB usa el bloqueo de nivel de fila como método predeterminado.

Claves foráneas

Una clave externa es una columna (o una colección de columnas) en una tabla que se vincula con una columna (o una colección de columnas) en otra tabla. Previene acciones que destruyen el vínculo entre tablas y la posibilidad de insertar datos no válidos.

Resumen: MyISAM no admite la opción de clave externa, mientras que InnoDB sí.

Almacenamiento de tablas, índices y datos

Los dos motores de almacenamiento difieren en función de cómo almacenan los archivos.

MiISAM almacena tablas, índices y datos en tres archivos separados:

  • .frm – El formato de la tabla que contiene la estructura de la tabla o la definición de la tabla.
  • .myi – El archivo de índice con índices para cada tabla.
  • .myd – El archivo de datos que contiene los datos de cada tabla.

InnoDB almacena la estructura de la tabla en .frm archivo y tiene un tablespace donde almacena índices y datos.

Resumen: MyISAM almacena datos en tres archivos separados, mientras que InnoDB almacena datos en un solo archivo.

Soporte de ÁCIDO

ÁCIDO se refiere a las propiedades de transacción de la base de datos:atomicity , coherencia , aislamiento y durabilidad . Garantiza que la transacción se complete en caso de error o falla del sistema.

Consulte nuestro artículo ACID vs. Base para obtener más información sobre los modelos de transacciones de bases de datos.

Resumen: MyISAM no es compatible con ACID, mientras que InnoDB cumple totalmente con ACID.

Cómo comprobar si está utilizando MyISAM o InnoDB

Usar el motor de almacenamiento correcto es esencial para la manipulación de datos. El motor de almacenamiento incorrecto puede provocar errores en las consultas y reducir la velocidad y el rendimiento. Por lo tanto, es fundamental comprobar si MyISAM o InnoDB están configurados como motor de almacenamiento predeterminado.

Nota: El ajuste del rendimiento de MySQL requiere evaluar numerosos factores. Recomendamos usar InnoDB en lugar de MyISAM para obtener el mejor rendimiento.

Comprobar a través de la línea de comandos

Encuentre información sobre el motor de almacenamiento predeterminado siguiendo los pasos que se enumeran a continuación.

1. Abra la terminal e inicie sesión en el shell de MySQL. Luego, muestra una lista de bases de datos:

SHOW DATABASES;

2. Localice la base de datos preferida de la lista y selecciónela:

USE database_name;

El terminal muestra un mensaje de confirmación sobre el cambio de la base de datos.


3. Luego, use el SHOW CREATE TABLE comando para mostrar información sobre la tabla y el motor de almacenamiento:

SHOW CREATE TABLE database_name.table_name;

En el siguiente ejemplo, el resultado enumera InnoDB como un motor de almacenamiento predeterminado.

Nota: Reemplazar database_name y table_name con el nombre de su base de datos y tabla.

Comprobar usando phpMyAdmin

Hay dos formas de comprobar el motor de almacenamiento predeterminado en phpMyAdmin:

  • De una lista de tablas.
  • Ejecutando una consulta.

Desde una lista de tablas

Puede usar una lista de tablas para averiguar qué tablas usan MyISAM o InnoDB como motor de almacenamiento predeterminado.

1. Abra phpMyAdmin y seleccione la base de datos preferida de la lista.

2. En la lista de tablas , busque el Tipo columna para ver los tipos de motores de almacenamiento. En nuestro ejemplo, los Clientes la tabla utiliza MyISAM como motor de almacenamiento predeterminado.

Ejecutar una consulta

Otra forma de mostrar un motor de almacenamiento predeterminado es ejecutar una consulta.

1. Inicie sesión en phpMyAdmin y seleccione la base de datos preferida de una lista de bases de datos.

2. Seleccione el SQL pestaña para acceder a las opciones de consulta.

3. Ingrese el siguiente comando para mostrar todas las tablas usando MyISAM como motor de almacenamiento:

SELECT TABLE_NAME, ENGINE FROM information_schema. TABLES WHERE TABLE_SCHEMA = 'database_name' and ENGINE = 'myISAM'

4. Haga clic en Ir. para ejecutar una consulta.

Nota: Reemplazar database_name con el nombre de su base de datos.

El resultado muestra una lista de todas las tablas que contienen el motor de almacenamiento MyISAM.

Puede usar el mismo comando para buscar bases de datos usando el motor de almacenamiento InnoDB. Modifique la consulta reemplazando ENGINE = 'myISAM' con ENGINE = 'InnoDB' .

Cómo convertir MyISAM e InnoDB

Pueden surgir problemas si usa InnoDB en los procesos cotidianos, mientras que una tabla anterior usa MyISAM. Por eso es fundamental saber convertir tablas.

Convertir motor de almacenamiento a través de terminal

Ejecute ALTER TABLE comando en el shell de MySQL para convertir el motor de almacenamiento de MyISAM a InnoDB y viceversa.

  • Para convertir InnoDB a MyISAM, ejecute:
ALTER TABLE database_name.table_name ENGINE=MyISAM;
  • Para convertir MyISAM a InnoDB, ejecute:
ALTER TABLE database_name.table_name ENGINE=InnoDB;

El terminal imprime un mensaje de confirmación.

Convertir motor de almacenamiento usando phpMyAdmin

Hay dos formas de convertir el motor de almacenamiento en phpMyAdmin:

  • Uso de las operaciones de tabla menú.
  • Ejecutando una consulta.

Uso del menú de operaciones

1. Seleccione la base de datos preferida de un menú de base de datos.

2. Elija una tabla para la que desea modificar el motor de almacenamiento y seleccione Más menú desplegable.

3. Haga clic en Operaciones. para acceder al menú.


4. Ubique el motor de almacenamiento ajuste en la tabla opciones y haga clic en el motor de almacenamiento para cargar el menú desplegable que contiene varios motores de almacenamiento. Seleccione InnoDB de la lista y haga clic en IR para guardar el cambio.

Ejecutar una consulta

1. Acceda al SQL centro de comando para la base de datos preferida.

2. Ejecute ALTER TABLE comando en el shell de MySQL para convertir el motor de almacenamiento.

Para convertir a MyISAM, ejecute:

ALTER TABLE table_name ENGINE=MyISAM;

Para convertir a InnoDB, ejecute:

ALTER TABLE.table_name ENGINE=InnoDB;

3. Haga clic en IR botón para ejecutar la consulta.

Has convertido con éxito el motor de almacenamiento.


Cent OS
  1. Hadoop vs Spark:comparación detallada

  2. ¿Cuál es la diferencia entre InnoDB y MyISAM?

  3. MySQL:conversión a datos por tabla para InnoDB

  4. Copia de seguridad incremental de MySQL:copia de seguridad y recuperación en un punto en el tiempo de las bases de datos InnoDB y MyIsam

  5. Prometheus vs Zabbix:comparación de herramientas de monitoreo de red

¿Qué es una base de datos?

Explicación de los servidores de Big Data

API SOAP vs REST:comparación directa

12 herramientas de integración de datos revisadas

Comprender las técnicas de modelado de datos NoSQL

Integrador de datos de Oracle (ODI) en CentOS 8

    Consultas Columna 1 Columna 2 Columna 3
    Consulta 1 (actualización) Escribir Datos Datos
    Consulta 2 (seleccionar) Lectura Datos Lectura
    Consulta 3 (actualización) Datos Escribir Datos