Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MOTORES DE ALMACENAMIENTO
EN MYSQL
¿Qué son los motores de
almacenamiento?
• Es una característica única de MySQL
• Nos permite seleccionar el tipo de almacenamiento
interno de cada tabla, en base al que mejor se
adecúe a una situación particular.
• Dicha selección, la hace el desarrollador a nivel de
tabla, y no afecta a la manera en que el servidor
interactúa con el cliente (los comandos SQL serán
los mismos, sea cual sea el motor de
almacenamiento escogido).
• El cliente no necesita saber como se guardan los
datos.
Funcionamiento
Arquitectura de MySQL
Clasificación de tablas
Transaccionales
Más seguras incluso ante caidas del servidor.
Recuperación más fácil de los datos.
Si falla una actualización, todos los cambios se
ignoran.
No transaccionales
Más rápidas.
Menor requerimiento de espacio.
Menor requerimiento de memoria para
actualizaciones.
Creación SQL
CREATE TABLE nombre_tabla (definición)
ENGINE = nombre_motor;
ALTER TABLE nombre_tabla ENGINE =
nombre_motor;
Ejemplos:
CREATE TABLE pieza (….) ENGINE=InnoDB;
ALTER TABLE pieza ENGINE=MyISAM;
Motores disponibles
Motor MyISAM
Sustituyó al ISAM (no disponible en versiones
actuales)
Tablas no transaccionales.
Muy rápido en consultas
Recomendable cuando SELECT supera a los
INSERT o UPDATE.
Bloqueo a nivel de tabla
Portable
Almacenamiento MyISAM
Cada tabla MyISAM se almacena en tres
ficheros:
.frm: Definición de la tabla.
.myd: Fichero de datos.
.myi: Fichero de índice.
Tipos de tablas MyISAM
Tablas estáticas o de longitud fija.
Formato por defecto. Más simple, seguro y rápido.
Se usa cuando no existen campos de tamaño
variable (VARCHAR, BLOB o TEXT)
Tablas dinámicas
Cada registro usa sólo el espacio que necesita.
Problema de fragmentación y algo lento.
Tablas comprimidas
Se crea con la utilidad myisampack
Ocupan muy poco espacio. De sólo lectura.
Motor Merge
Las tablas resultan de la fusión de dos tablas
MyISAM idénticas.
Se suele utilizar cuando tenemos tablas muy
grandes que podemos dividir en varias,
permitiendo un acceso más rápido, por
ejemplo, ventas por cada año.
create table t1(texto varchar(100)) ENGINE=MYISAM;
create table t2(texto varchar(100)) ENGINE=MYISAM;
create table total(texto varchar(100)) ENGINE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;