Tabla de contenidos
MyISAM
[+/-]MERGE
[+/-]MEMORY
(HEAP
)BDB
(BerkeleyDB
) [+/-]EXAMPLE
FEDERATED
[+/-]ARCHIVE
CSV
MySQL soporta varios motores de almacenamiento que tratan con distintos tipos de tabla. Los motores de almacenamiento de MySQL incluyen algunos que tratan con tablas transaccionales y otros que no lo hacen:
MyISAM
trata tablas no transaccionales.
Proporciona almacenamiento y recuperación de datos rápida,
así como posibilidad de búsquedas fulltext.
MyISAM
se soporta en todas las
configuraciones MySQL, y es el motor de almacenamiento por
defecto a no ser que tenga una configuración distinta a la que
viene por defecto con MySQL.
El motor de almacenamiento MEMORY
proporciona
tablas en memoria. El motor de almacenamiento
MERGE
permite una colección de tablas
MyISAM
idénticas ser tratadas como una
simple tabla. Como MyISAM
, los motores de
almacenamiento MEMORY
y
MERGE
tratan tablas no transaccionales y
ambos se incluyen en MySQL por defecto.
Nota: El motor de
almacenamiento MEMORY
anteriormente se
conocía como HEAP
.
Los motores de almacenamiento InnoDB
y
BDB
proporcionan tablas transaccionales.
BDB
se incluye en la distribución binaria
MySQL-Max en aquellos sistemas operativos que la soportan.
InnoDB
también se incluye por defecto en
todas las distribuciones binarias de MySQL 5.0 . En
distribuciones fuente, puede activar o desactivar estos motores
de almacenamiento configurando MySQL a su gusto.
El motor de almacenamiento EXAMPLE
es un
motor de almacenamiento "tonto" que no hace nada.
Puede crear tablas con este motor, pero no puede almacenar datos
ni recuperarlos. El objetivo es que sirva como ejemplo en el
código MySQL para ilustrar cómo escribir un motor de
almacenamiento. Como tal, su interés primario es para
desarrolladores.
NDB Cluster
es el motor de almacenamiento
usado por MySQL Cluster para implementar tablas que se
particionan en varias máquinas. Está disponible en
distribuciones binarias MySQL-Max 5.0. Este motor de
almacenamiento está disponible para Linux, Solaris, y Mac OS X
. Añadiremos soporte para este motor de almacenamiento en otras
plataformas, incluyendo Windows en próximas versiones.
El motor de almacenamiento ARCHIVE
se usa
para guardar grandes cantidades de datos sin índices con una
huella muy pequeña.
El motor de almacenamiento CSV
guarda datos
en ficheros de texto usando formato de valores separados por
comas.
El motor de almacenamiento FEDERATED
se
añadió en MySQL 5.0.3. Este motor guarda datos en una base de
datos remota. En esta versión sólo funciona con MySQL a
través de la API MySQL C Client. En futuras versiones, será
capaz de conectar con otras fuentes de datos usando otros
drivers o métodos de conexión clientes.
Este capítulo describe cada uno de los motores de almacenamiento
MySQL excepto InnoDB
y NDB
Cluster
, que se tratan en Capítulo 15, El motor de almacenamiento InnoDB
y
Capítulo 16, MySQL Cluster.
Cuando crea una nueva tabla, puede decirle a MySQL qué tipo de
tabla crear añadiendo la opción de tabla ENGINE
o TYPE
al comando CREATE TABLE
:
CREATE TABLE t (i INT) ENGINE = INNODB; CREATE TABLE t (i INT) TYPE = MEMORY;
Aunque se soporta TYPE
en MySQL 5.0,
ENGINE
es el término preferido.
Si omite la opción ENGINE
o
TYPE
, se usa el motor de almacenamiento por
defecto, que es MyISAM
. Puede cambiarlo usando
las opciones de arranque --default-storage-engine
o --default-table-type
, o cambiando la variable
de sistema storage_engine
o
table_type
.
Cuando se instala MySQL en Windows usando el MySQL Configuration
Wizard, InnoDB
es el motor de almacenamiento por
defecto en lugar de MyISAM
. Consulte
Sección 2.3.5.1, “Introducción”.
Para convertir una tabla de un tipo a otro, use un comando
ALTER TABLE
que indique el nuevo tipo:
ALTER TABLE t ENGINE = MYISAM; ALTER TABLE t TYPE = BDB;
Consulte Sección 13.1.5, “Sintaxis de CREATE TABLE
” y
Sección 13.1.2, “Sintaxis de ALTER TABLE
”.
Si trata de usar un motor de almacenamiento que no está compilado o
que está desactivado, MySQL crea una tabla de tipo
MyISAM
. Este comportamiento es conveniente cuando
quiere copiar tablas entre servidores MySQL que soportan distintos
motores. (Por ejemplo, en una inicialización de replicación, tal
vez su maestro suporte un motor de almacenamiento transaccional para
más seguridad, pero los esclavos usan un motor de almacenamiento no
transaccional para mayor velocidad.)
La sustitución automática del tipo MyISAM
cuando se especifica un tipo no especificado puede ser confuso para
nuevos usuarios. En MySQL 5.0, se genera una advertencia cuando se
cambia un tipo de tabla automáticamente.
MySQL siempre crea un fichero .frm
para guardar
la definición de tabla y columnas. El índice y datos de la tabla
puede estar almacenado en uno o más ficheros, en función del tipo
de tabla. El servidor crea el fichero .frm
por
encima del nivel de almacenamiento del motor. Los motores de
almacenamiento individuales crean los ficheros adicionales
necesarios para las tablas que administran.
Una base de datos puede contener tablas de distintos tipos.
Las tablas transaccionales (TSTs) tienen varias ventajas sobre las no transaccionales (NTSTs):
Más seguras. Incluso si MySQL cae o tiene problemas de hardware, puede recuperar los datos, mediante recuperación automática o desde una copia de seguridad más el log de transacciones.
Puede combinar varios comandos y aceptarlos todos al mismo
tiempo con el comando COMMIT
(si autocommit
está desactivado).
Puede ejecutar ROLLBACK
para ignorar los
cambios (si autocommit está desactivado).
Si falla una actualización, todos los cambios se deshacen. (Con tablas no transaccionales, todos los cambios son permanentes.)
Motores de almacenamiento transaccionales pueden proporcionar mejor concurrencia para tablas que tienen varias actualizaciones concurrentes con lecturas.
En MySQL 5.0, InnoDB
usa valores de
configuración por defecto si no los especifica. Consulte
Sección 15.3, “Configuración de InnoDB
”.
Tablas no transaccionales tienen varias ventajas al no tener una sobrecarga transaccional:
Más rápidas
Menor requerimiento de espacio.
Menos memoria para actualizaciones
Puede combinar tablas transaccionales y no transaccionales en el mismo comando para obtener lo mejor de ambos mundos. Sin embargo, en una transaccion con autocommit desactivado, los cambios de tablas no transaccionales son permanentes inmediatamente y no pueden deshacerse.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.