You are on page 1of 14

Capítulo 14.

Motores de almacenamiento de
MySQL y tipos de tablas
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.
14.1. El motor de almacenamiento MyISAM
[+/-]
14.1.1. Opciones de arranque de MyISAM
14.1.2. Cuánto espacio necesitan las claves
14.1.3. Formatos de almacenamiento de tablas  MyISAM
14.1.4. Problemas en tablas MyISAM
MyISAM es el motor de almacenamiento por defecto. Se basa en el código  ISAM pero tiene
muchas extensiones útiles. (Tenga en cuenta que MySQL 5.0 no soporta  ISAM.)
Cada tabla MyISAM se almacena en disco en tres ficheros. Los ficheros tienen nombres que
comienzan con el nombre de tabla y tienen una extensión para indicar el tipo de fichero. Un
fichero .frm almacena la definición de tabla. El fichero de datos tiene una
extensión .MYD(MYData) . El fichero índice tiene una extensión .MYI (MYIndex) .
Para especificar explícitamente que quiere una tabla  MyISAM, indíquelo con una
opción ENGINE:
CREATE TABLE t (i INT) ENGINE = MYISAM;
(Nota: Antiguas versiones de MySQL usaban TYPE en lugar de ENGINE (por ejemplo: TYPE =
MYISAM). MySQL 5.0 soporta esta sintaxis para compatibilidad con versiones anteriores
peroTYPE está obsoleto y ahora se usa ENGINE .)
Normalmente, la opción ENGINE no es necesaria; MyISAM es el motor de almacenamiento por
defecto a no ser que se cambie.
Puede chequear o reparar tablas MyISAM con la utilidad myisamchk .
Consulte Sección 5.8.3.7, “Usar myisamchk para recuperación de desastres”. Puede
comprimir tablas MyISAM conmyisampack para que ocupen mucho menos espacio.
Consulte Sección 8.2, “myisampack, el generador de tablas comprimidas de sólo lectura de
MySQL”.
Las siguientes son algunas características del motor de almacenamiento  MyISAM :
 Todos los datos se almacenan con el byte menor primero. Esto hace que sean
independientes de la máquina y el sistema operativo. El único requerimiento para
portabilidad binaria es que la máquina use enteros con signo en complemento a dos (como
todas las máquinas en los últimos 20 años) y formato en coma flotante IEEE (también
dominante en todas las máquinas). La única área de máquinas que pueden no soportar
compatibilidad binaria son sistemas empotrados, que a veces tienen procesadores
peculiares.

No hay penalización de velocidad al almacenar el byte menor primero; los bytes en un


registro de tabla normalmente no están alineados y no es un problema leer un byte no
alineado en orden normal o inverso. Además, el código en el servidor que escoge los
valroes de las columnas no es crítico respecto a otro código en cuanto a velocidad.

 Ficheros grandes (hasta longitud de 63 bits) se soportan en sistemas de ficheros y


sistemas operativos que soportan ficheros grandes.

 Registros de tamaño dinámico se fragmentan mucho menos cuando se mezclan


borrados con actualizaciones e inserciones. Esto se hace combinando automáticamente
bloques borrados adyacentes y extendiendo bloques si el siguiente bloque se borra.

 El máximo número de índices por tabla MyISAM en MySQL 5.0 es 64. Esto puede
cambiarse recompliando. El máximo número de columnas por índice es 16.
 La longitud máxima de clave es 1000 bytes. Esto puede cambiarse recompilando. En
caso de clave mayor a 250 bytes, se usa un tamaño de bloque mayor, de 1024 bytes.

 Las columnas BLOB y TEXT pueden indexarse.


 Valores NULL se permiten en columnas indexadas. Esto ocupa 0-1 bytes por clave.
 Todos los valores de clave numérico se almacenan con el byte mayor primero para
mejor compresión de índice.

 Cuando se insertan registros en orden (como al usar columnas  AUTO_INCREMENT ), el


árbol índice se divide de forma que el nodo mayor sólo contenga una clave. Esto mejora la
utilización de espacio en el árbol índice.
 El tratamiento interno de una columna AUTO_INCREMENT por tabla. MyISAM actualiza
automáticamente esta colunmna para operaciones INSERT y UPDATE . Esto hace las
columnas AUTO_INCREMENT más rápidas (al menos 10%). Los valores iniciales de la
secuencia no se reúsan tras ser borrados. (Cuando una columna AUTO_INCREMENT se
define como la última columna de un índice de varias columnas, se reúsan los valores
borrados iniciales de la secuencia.) El valor AUTO_INCREMENT puede cambiarse con ALTER
TABLE o myisamchk.
 Si una tabla no tiene bloques libres en medio del fichero de datos,
puede INSERT nuevos registros a la vez que otros flujos leen de la tabla. (Esto se conoce
como inserciones concurrentes.) Un bloque libre puede ser resultado de borrar o actualziar
registros de longitud dinámica con más datos que su contenido. Cuando todos los bloques
libres se usan (se rellenan), las inserciones futuras vuelven a ser concurrentes.
 Puede tener el fichero de datos e índice en directorios distintos para obtener más
velocidad con las opcionesDATA DIRECTORY y INDEX DIRECTORY para CREATE TABLE.
Consulte Sección 13.1.5, “Sintaxis de CREATE TABLE”.
 Cada columna de carácteres puede tener distintos conjuntos de carácteres.
Consulte Capítulo  10,  Soporte de conjuntos de caracteres.
 Hay un flag en el fichero índice MyISAM que indica si la tabla se ha cerrado
correctamente. Si mysqld se arranca con la opción --myisam-recover , Las
tablas MyISAM se chequean automáticamente al abrirse, y se reparan si la tabla no se cierra
correctamente.
 myisamchk marca las tablas como chequeadas si se ejecuta con la opción  --
update-state . myisamchk --fast cheque sólo las tablas que no tienen esta marca.
 myisamchk --analyze almacena estadísticas para partes de las claves, así como
para las claves enteras.
 myisampack puede comprimir columnas BLOB y VARCHAR .
MyISAM soporta las siguientes características:
 Soporte de un tipo VARCHAR auténtico; una columna VARCHAR comienza con la
longitud almacenada en dos bytes.
 Tablas con VARCHAR pueden tener longitud de registro fija o dinámica.
 VARCHAR y CHAR pueden ser de hasta 64KB.
 Un índice hash puede usarse para UNIQUE. Esto le permite tener UNIQUE o cualquier
combinación de columnas en una tabla . (Sin embargo, no puede buscar en un
índice UNIQUE .)
http://dev.mysql.com/doc/refman/5.0/es/myisam-storage-engine.html

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

14.3. El motor de almacenamiento MEMORY (HEAP)


El motor de almacenamiento MEMORY crea tablas con contenidos que se almacenan en
memoria.Éstas se conocían préviamente como  HEAP . En MySQL 5.0, MEMORY es el término
preferido, aunque HEAP se soporta para compatibilidad con versiones anteriores.
Cada tabla MEMORY está asociada con un fichero de disco. El nombre de fichero comienza con
el nombre de la tabla y tiene una exensión de .frm para indicar que almacena la definición de
la tabla.
Para especificar explícitamente que quiere una tabla  MEMORY, indíquelo con una
opción ENGINE :
CREATE TABLE t (i INT) ENGINE = MEMORY;
Como indica su nombre, las tablas MEMORY se almacenan en memoria y usan índices hash por
defecto. Esto las hace muy rápidas, y muy útiles para crear tablas temporales. Sin embargo,
cuando se apaga el servidor, todos los datos almacenados en las tablas  MEMORY se pierde. Las
tablas por sí mismas continúan existiendo ya que sus definiciones se almacenan en
ficheros.frm en disco, pero están vacías cuando reinicia el servidor.
Este ejemplo muestra cómo puede crear, usar , y borrar una tabla  MEMORY :
mysql> CREATE TABLE test ENGINE=MEMORY
-> SELECT ip,SUM(downloads) AS down
-> FROM log_table GROUP BY ip;
mysql> SELECT COUNT(ip),AVG(down) FROM test;
mysql> DROP TABLE test;
Las tablas MEMORY tienen las siguientes características:
 El espacio para tablas MEMORY se reserva en pequeños bloques. Las tablas usan el
100% del hashing dinámico para insrciones. No se necesita área de desbordamiento o
espacio extra para claves. No se necesita espacio extra para listas libres. Los registros
borrados se ponen en una lista encadenada y se reúsan cuando inserta nuevos datos en la
tabla. Las tablas MEMORY no tienen ninguno de los problemas asociados con borrados más
inserciones en tablas hasheadas.
 Las tablas MEMORY pueden tener hasta 32 índices por tabla, 16 columnas por índice y
una clave de longitud máxima de 500 bytes.
 En MySQL 5.0, el motor MEMORY implementa índices HASH y BTREE . Puede espcificar
uno u otro para cada índice añadiendo una cláusula  USING tal y como se muestra:
 CREATE TABLE lookup
 (id INT, INDEX USING HASH (id))
 ENGINE = MEMORY;
 CREATE TABLE lookup
 (id INT, INDEX USING BTREE (id))
 ENGINE = MEMORY;
Las características generales de B-trees e índices hash se describen en  Sección 7.4.5,
“Cómo utiliza MySQL los índices”.
 Puede tener claves no únicas en una tabla  MEMORY. (Esta es una característica no
común de implementaciones de índices hash.)
 En MySQL 5.0, puede usar INSERT DELAYED con tablas MEMORY .
Consulte Sección 13.2.4.2, “Sintaxis de INSERT DELAYED”.
 Si tiene un índice hash en una tabla  MEMORY que tenga un alto índice de duplicación
de claves (muchas entradas de índice con el mismo valor), las actualizaciones a la tabla que
afecten valores claves y todos los borrados son significativamente más lentos. El rango de
esta ralentización es proporcional al rango de duplicación (o inversamente proporcional al
grado cardinalidad). Pude usar un índice BTREE para evitar este problema.
 Las tablas MEMORY usan una longitud de registro fija.
 MEMORY no soporta columnas BLOB o TEXT .
 MEMORY en MySQL 5.0 incluye soporte para columnas  AUTO_INCREMENT e índices en
columnas que contengan valores NULL .
 Las tablas MEMORY se comparten entre todos los clientes (como cualquier otra tabla
no-TEMPORARY).
 Los contenidos de las tablas MEMORY se almacenan en memora , lo que es una
propiedad que las tablas MEMORYcomparten con las tablas internas que el servidor va
creando al procesar consultas. Sin embargo, los dos tipos de tablas difierne en que las
tablas MEMORY no están sujetas a conversión de almacenamiento, mientras que las tablas
internas sí:
 Si una tabla interna llega a ser demasiado grande, el servidor la convierte
automáticamente a una tabla en disco. El límite de tamaño lo determina la variable de
sistema tmp_table_size .
 Las tablas MEMORY nunca se convieren en tablas de disco. Para segurar que
no comete un error accidentalmente, puede cambiar la variable de
sistema max_heap_table_size para que imponga un tamaño máximo de
tablasMEMORY . Para tablas individuales, puede especificar la opción de
tabla MAX_ROWS en el comando CREATE TABLE .
 El servidor necesita suficiente memoria para mantener todas las tablas  MEMORY en uso
a la vez.
 Para liberar memoria usada por una tabla  MEMORY cuando no se requiere su
contenido, debe ejecutar DELETE FROM o TRUNCATE TABLE, o borrar toda la tabla con DROP
TABLE.
 Si quiere rellenar una tabla  MEMORY cuando arranca el servidor MySQL, puede usar la
opción --init-file . Por ejemplo, puede usar comandos como  INSERT INTO ...
SELECT o LOAD DATA INFILE en este fichero para cargar la tabla de una fuente de datos
persistente. Consulte Sección 5.3.1, “Opciones del
comando mysqld” ySección 13.2.5, “Sintaxis de LOAD DATA INFILE”.
 Si usa replicación, las tablas  MEMORY del servidor maestro se vacían cuando se apaga
y reinicia. Sin embargo, un esclavo no es consciente que se vacían estas tablas, así que
retorna contenido desfasado si selecciona datos del mismo. En MySQL 5.0, cuando se usa
una tabla MEMORY en el maestro por primera vez desde que arrancó el maestro, se escribe
un comando DELETE FROM en el log binario del maestro automáticamente, resincronizando
el maestro y el esclavo otra vez. Tenga en cuenta que incluso con esta estrategia, el
esclavo tiene datos desfasados en la tabla en el intervalo entre el reinicio del maestro y el
primer uso de la tabla. Sin embargo, si usa la opción  --init-file para rellenar la
tabla MEMORY al arrancar el maestro, se asegura que este intervalo sea cero.
 La memoria necesaria por un registro en una tabla  MEMORY se calcula con la siguiente
expresión:
 SUM_OVER_ALL_BTREE_KEYS(max_length_of_key + sizeof(char*) * 4)
 + SUM_OVER_ALL_HASH_KEYS(sizeof(char*) * 2)
 + ALIGN(length_of_row+1, sizeof(char*))
ALIGN() representa un factor de redondeo para que la longitud del registro sea un múltiplo
exacto del tamaño del puntero char . sizeof(char*) es 4 en máquinas de 32-bit y 8 en
máquinas de 64-bit.

http://dev.mysql.com/doc/refman/5.0/es/memory-storage-engine.html

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

InnoDB es una operación de seguridad (conforme a ACID) motor de almacenamiento de


MySQL que ha de confirmar, deshacer, y la recuperación de las capacidades de una colisión
para proteger los datos de usuario. InnoDB a nivel de bloqueo de filas (sin escalada de
bloqueos de granularidad gruesa) y el estilo consistente sin bloqueo-Oracle lee aumento de los
usuarios de concurrencia multi y el rendimiento. InnoDB almacena los datos del usuario en los
índices agrupados para que reducir la E / S para las consultas comunes sobre la base de las
claves principales. Para mantener la integridad de los datos, InnoDB también soporta FOREIGN
KEY , restricciones de integridad referencial. Usted puede mezclar libremente InnoDB tablas
con tablas de otros motores de almacenamiento de MySQL, incluso dentro de la misma
declaración.
Para determinar si su servidor soporta InnoDB utiliza el SHOW
ENGINES comunicado. VerSección 12.4.5.17, " SHOW ENGINES sintaxis " .
Tabla 13.4. InnoDB características del Motor de almacenamiento
Límites de
almacenamiento 64TB Transacciones Sí granularidad de bloqueo Fila

Soporte para el tipo de


MVCC Sí datos geoespaciales Sí soporta indexación Geoespacial N

-Texto íntegro índices de


B-árbol de índices Sí Hash índices N búsqueda N

Índices agrupados Sí Cachés de datos Sí Índice de cachés Sí

Los datos apoyo a la base de datos de


comprimidos Sí [una ] Los datos encriptados [ b ] Sí Cluster Server N

Replicación de Copia de seguridad / de punto


apoyo [ c ] Sí Clave externa de apoyo Sí en el tiempo de recuperación [ d ] Sí

Consulta el soporte Actualizar las estadísticas


de cache Sí de diccionario de datos Sí

un ] comprimido

tablas InnoDB requieren el Barracuda archivo en formato InnoDB.
[   ]
b  Implementado en el servidor (a través de funciones de encriptación), en lugar de en el motor de
almacenamiento.
c  Implementado en el servidor, en lugar de en el almacenamiento del producto
[   ]

d  Implementado en el servidor, en lugar de en el almacenamiento del producto


[   ]

InnoDB ha sido diseñado para un máximo rendimiento en el tratamiento de grandes volúmenes


de datos. Su eficiencia de la CPU probablemente no se corresponde con cualquier motor de
base de datos basada en disco relacional.
El InnoDB motor de almacenamiento mantiene su propio grupo de búferes de datos y
almacenamiento en caché de índices en la memoria principal. InnoDB almacena sus tablas e
índices en un espacio de tablas, que puede consistir en varios archivos (o particiones de disco
en bruto). Esto es diferente de, por ejemplo, MyISAM mesas donde cada tabla se almacena
utilizando archivos separados. InnoDB tablas pueden ser muy grandes, incluso en sistemas
operativos donde es limitado el tamaño del archivo de 2 GB.
El instalador de Windows Essentials hace InnoDB por defecto de MySQL motor de
almacenamiento en Windows, si el servidor se está instalando soporta InnoDB .
InnoDB se utiliza en la producción en numerosos sitios de gran base de datos que requieren
alto rendimiento. El famoso sitio de noticias de Internet Slashdot.org corre
sobre InnoDB . Mytrix, Inc. almacena más de 1TB de datos en InnoDB , y otros sitios manejan
una carga promedio de 800 inserciones y actualizaciones por segundo enInnoDB .
InnoDB se publica bajo la misma licencia GNU GPL versión 2 (de junio de 1991) como
MySQL. Para obtener más información sobre las licencias de MySQL, consulte
http://www.mysql.com/company/legal/licensing/.
Recursos adicionales
 Un foro dedicado a la InnoDB motor de almacenamiento está disponible
en http://forums.mysql.com/list.php?22 .
 Innobase Oy también alberga varios foros, disponible en http://forums.innodb.com .
 En el 2008 MySQL User Conference, Innobase anunciado la disponibilidad de
un InnoDB Plugin para MySQL.Este plug-in para MySQL aprovecha el "motor de
almacenamiento conectables" arquitectura de MySQL, para permitir a los usuarios a sustituir
el "integrado" versión de InnoDB en MySQL 5.1.
Desde MySQL 5.1.38, el InnoDB Plugin está incluido en versiones de MySQL 5.1,
además de la versión integrada de InnoDB que se ha incluido en versiones
anteriores. MySQL 5.1.42 a 5.1.45 incluyen InnoDB Plugin 1.0.6, que se considera de la
Release Candidate (RC) de calidad. MySQL 5.1.46 y hasta incluyen InnoDB Plugin 1.0.7
o superior, que se considera de disponibilidad general (GA) de calidad.
Actualmente, MySQL Cluster Server no es compatible con el InnoDB
Plugin . Consulte Sección 17.2.1.1, "MySQL Cluster-PC Instalación Múltiple" .
El InnoDB Plugin ofrece nuevas características, rendimiento y escalabilidad, fiabilidad
mejorada y nuevas capacidades de flexibilidad y facilidad de uso. Entre las características
del InnoDB Plugin son "la creación del índice rápido", mesa y compresión de índice, la
gestión de formato de archivo, los nuevos INFORMATION_SCHEMAtablas, el ajuste de la
capacidad, los antecedentes de múltiples I / O las discusiones, y el grupo cometió.
Para obtener información acerca de estas características, vea InnoDB Plugin 1.0 para
MySQL 5.1 Guía del usuario .
El InnoDB Plugin está incluido en la fuente y distribuciones binarias, excepto RHEL3,
RHEL4, SuSE 9 (x86, x86_64, IA64), y genéricos paquetes RPM de Linux.
Para obtener instrucciones sobre la sustitución del incorporado en la versión
de InnoDB con InnoDB Plugin , consulte la Sección 13.6.2.1, "Uso de InnoDB
Plugin lugar de la incorporada en InnoDB " .
 La empresa de productos Backup MySQL le permite copias de seguridad de un
funcionamiento de base de datos MySQL, incluyendo InnoDB y MyISAM tablas, con una
interrupción mínima en las operaciones mientras que produce una imagen coherente de la
base de datos. Cuando la copia de MySQL Enterprise Backup es InnoDBtablas, lee y
escribe tanto para InnoDB y MyISAM tablas puede continuar. Durante la copia de MyISAM y
no otras tablas InnoDB, se lee (pero no escribe) a las tablas están permitidos. Además,
MySQL Enterprise Backup puede crear archivos comprimidos de copia de seguridad, y
copias de seguridad de los subconjuntos de InnoDB tablas.En relación con el registro
binario de MySQL, que puede realizar la recuperación de un punto en el tiempo. Copia de
seguridad de MySQL Enterprise es incluido como parte de la suscripción de MySQL
Enterprise.
Para una descripción más completa de copia de seguridad de MySQL Enterprise,
consulte de Usuario de Empresa de copia de seguridad Guía de MySQL (versión 3.5.2) 
http://translate.google.com.do/translate?hl=es&langpair=en|
es&u=http://dev.mysql.com/doc/refman/5.1/en/innodb-storage-engine.html
 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 yNDB 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.
http://dev.mysql.com/doc/refman/5.0/es/storage-engines.html

http://dev.mysql.com/doc/refman/5.0/es/index.html

Motor de base de datos MySQL para acelerar a través de la base


de datos

Si usted es un piloto de carreras, y haga clic en el botón a la sustitución inmediata del motor sin la
necesidad de sacar al garaje para ir, ¿qué se siente entonces? Desarrolladores de base de datos MySQL
se ha hecho es tan simple como apretar un botón para el motor; Le permite seleccionar el motor de
base de datos, y le dará una manera simple de cambiar.

propio motor de MySQL es sin duda lo suficientemente bueno, pero en algunos casos, los motores de
otros puede ser más adecuado que la mano usada para completar la tarea. Si lo prefiere, puede incluso
utilizar MySQL + + API para crear el motor de su propia base de datos, como el cilindro perforado
provisto de su propio carburador. Ahora echemos un vistazo a cómo elegir el motor, y cómo cambiar
entre los motores disponibles.

Seleccione su motor

Usted puede utilizar el motor de base de datos MySQL depende de cómo el tiempo de instalación se
compiló. Para agregar un nuevo motor, que debe volver a compilar MySQL. Sólo para añadir una
característica y compilar la aplicación del concepto de los desarrolladores de Windows que podrían ser
extraños, pero en el mundo UNIX, se ha convertido en la norma. Por defecto, MySQL soporta tres
motores: ISAM, MyISAM, HEAP y. Los otros dos tipos de InnoDB y Berkeley (BDB), también de uso
frecuente.

ISAM

ISAM es un bien definido y probado así la gestión de formularios de datos, que al ser consideradas en el
diseño de una consulta a la base de datos que se actualiza mucho más que el número de veces. Por lo
tanto, la aplicación ISAM de la operación de lectura es rápida y no ocupa mucha memoria y recursos de
almacenamiento. dos principales deficiencias ISAM es que, no es compatible con las transacciones, no y
no puede con tolerancia a fallos: Si su disco duro falla, y luego los archivos de datos no pudo
recuperarse. Si usted es el ISAM utilizan en aplicaciones de misión crítica donde siempre debe realizar
una copia de seguridad de sus características en tiempo real a través de la replicación de datos, MySQL
puede apoyar esta solicitud de copia de seguridad.

MyISAM

ISAM de MySQL MyISAM es la expansión del formato y el motor de base de datos predeterminada.
Además de los ISAM no está en el índice y el ámbito de la gestión de un gran número de funciones,
tablas MyISAM también utilizan un mecanismo de bloqueo para optimizar múltiples lectura simultáneas y
operaciones de escritura. El costo es que usted necesita para ejecutar siempre el comando
OPTIMIZACIÓN DE LA MESA para restablecer el mecanismo de actualización es el espacio desperdiciado.
MyISAM algunas extensiones útiles, como para reparar la base de datos de archivos y herramientas de
myisamchk utiliza para restaurar una pérdida de espacio en la herramienta myisampack.

MyISAM destacó la operación de lectura rápida, que es probablemente la razón por la Web de MySQL
para el Desarrollo por la razón principal de este favor: en el desarrollo Web a los que llevó a cabo una
gran cantidad de operaciones de datos son las operaciones de lectura. Por lo tanto, la mayoría de los
proveedores de alojamiento web y plataforma de proveedor de Internet (Internet proveedor de
presencia, IPP) sólo permite el uso del formato MyISAM.

HEAP

HEAP para permitir que sólo reside en la memoria tabla temporal. Reside en la memoria para HEAP de
ISAM y MyISAM casi, pero los datos que maneja es inestable, y si no para salvar antes de la parada, a
continuación, todos los datos se perderán. En la fila de datos se elimina cuando, HEAP no perder mucho
espacio. formas HEAP es necesario utilizar las expresiones SELECT para seleccionar y manipular datos
sobre el tiempo de gran utilidad. Recuerde que después de la forma utilizada para eliminar las formas.
Repito: después de ejecutar fuera de forma, no se olvide de eliminar el formulario.

InnoDB y Berkeley DB

InnoDB y Berkeley DB (BDB) crear motor de base de datos MySQL es un producto directo de la
flexibilidad de tecnología, esta tecnología es el MySQL + + API. Uso de MySQL, se enfrentan a un
desafío casi de todo ISAM y el motor de base de datos MyISAM no es compatible con las transacciones
no son compatibles con las claves externas. Aunque más lento que muchos de ISAM y el motor MyISAM,
pero el InnoDB y BDB, incluyendo un par de operaciones y el apoyo de clave externa, no son los
primeros dos motores. Como se mencionó anteriormente, si usted necesita estas características en el
diseño de una persona o dos, después de que usted se verá obligado a utilizar uno de los dos motores.

Si te sientes muy cualificados, puede utilizar MySQL + + para crear su propia base de datos del motor.
Esta API proporciona operaciones de campo, registros, formularios, bases de datos, conectividad,
seguridad, características de la cuenta, y el establecimiento de un DBMS como MySQL necesita todas las
características numerosas otras. explicación a fondo de la API está fuera del alcance de este artículo,
pero usted necesita saber acerca de la existencia de MySQL + + y su motor intercambiables, la
tecnología detrás de esto es muy importante. Se estima que el modelo plug-in del motor de base de
datos MySQL o se puede utilizar para crear un proveedor local de XML (proveedor de XML). (Leer este
artículo ninguna MySQL + + desarrolladores pueden hacer que, como requisito. Para todos cambiar la
flexibilidad posible se ofrece al ANSI SQL para la extensión MySQL - parámetro de tipo. MySQL le
permite especificar la forma de esta capa motor de base de datos, por lo que a veces se refieren a los
formatos de tabla. El código de ejemplo siguiente muestra cómo crear cada uno usando MyISAM, HEAP
ISAM y la forma del motor. tener en cuenta que el código para crear cada cuadro es el mismo, excepto
el último de los TIPO parámetros, los parámetros utilizados para especificar el motor de datos.

CREATE TABLE tblMyISAM (

Id INT NOT NULL AUTO_INCREMENT,

PRIMARY KEY (id),

value_a TINYINT

) TYPE = MyISAM

CREATE TABLE tblISAM (

Id INT NOT NULL AUTO_INCREMENT,

PRIMARY KEY (id),


value_a TINYINT

) TYPE = ISAM

tblHeap CREATE TABLE (

Id INT NOT NULL AUTO_INCREMENT,

PRIMARY KEY (id),

value_a TINYINT

) TYPE = Montón

También puede utilizar el comando ALTER TABLE, la forma original de un motor a otro motor. El código
siguiente muestra cómo utilizar ALTER TABLE para InnoDB tabla MyISAM para mover al motor:

ALTER TABLE tblMyISAM CAMBIO TYPE = InnoDB

MySQL con tres pasos para lograr este objetivo. En primer lugar, una copia de este formulario se crea.
Entonces, cualquier cambio de datos de entrada están en la cola al mismo tiempo, la copia se traslada a
otro motor. Por último, cualquier cambio de datos en cola se envían a la nueva forma, la forma y el
original es eliminado.

ALTER TABLE accesos directos

Si lo que desea es actualizar las tablas de ISAM a MyISAM, puede usar la orden
mysql_convert_table_format, sin la necesidad de la preparación de expresión ALTER TABLE.

Usted puede utilizar el comando SHOW TABLE (que es otra extensión de MySQL al estándar ANSI) para
determinar qué motores en la gestión de una forma específica. SHOW TABLE retorna una tabla con un
conjunto de columnas de datos, puede utilizar este conjunto de resultados a la consulta para obtener
todos los tipos de información: el nombre del motor de base de datos en el campo Tipo. El código de
ejemplo siguiente ilustra el uso de SHOW TABLE:

SHOW TABLE STATUS FROM tblInnoDB

SHOW DE LA MESA método de sustitución

Usted puede utilizar el SHOW CREATE TABLE [TableName] para volver SHOW TABLE para recuperar la
información. Por último, si no se desea utilizar MySQL se compila en el motor no ha sido activada, no
sirve de nada, MySQL no sugiere esto. El sólo le dan un formato predeterminado (MyISAM) mesa.
Además de utilizar el formato de tabla por defecto, está ahí una forma de dar error de MySQL, pero por
ahora, no está seguro si un motor de base de datos en particular está disponible, usted tiene que usar
SHOW TABLE para comprobar el formato de tabla.

Más opciones significa un mejor rendimiento

Para una forma específica de los motores necesidad de recopilar y hacer un seguimiento, teniendo en
cuenta la complejidad adicional de esto, ¿por qué usted todavía desea utilizar el motor de base de datos
no predeterminado? La respuesta es simple: Para ajustar la base de datos para satisfacer sus
necesidades.

Sin duda, MyISAM es rápido, pero si usted necesita de procesamiento de transacciones diseño lógico,
usted puede usar libremente para apoyar el motor de procesamiento de transacciones. Por otra parte,
ya que MySQL puede permitir que usted para formar una capa de aplicación de este motor de base de
datos, por lo que sólo puede formulario requerido para llevar a cabo la optimización de rendimiento de
transacción, pero la transacción no necesita más luz para el motor de la tabla MyISAM. Para MySQL, la
flexibilidad es la clave.
http://www.softcov.com/es/database/mysql-database-engine-to-accelerate-through-the.html

You might also like