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 |
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.