ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

El motor de almacenamiento MyISAM


Enviado por   •  3 de Julio de 2014  •  Trabajos  •  1.798 Palabras (8 Páginas)  •  241 Visitas

Página 1 de 8

El motor de almacenamiento 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 pero TYPE

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 “Usar myisamchk

para recuperación de desastres”. Puede comprimir tablas MyISAM con myisampack para que ocupen

mucho menos espacio. Consulte “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.

El motor de almacenamiento MyISAM

742

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

opciones DATA DIRECTORY y INDEX DIRECTORY para CREATE TABLE. Consulte “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 .

Opciones de arranque de MyISAM

743

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

Opciones de arranque de MyISAM

Las siguientes opciones de mysqld pueden usarse para cambiar el comportamiento de tablas MyISAM

:

• --myisam-recover=mode

Cambia el modo para recuperación automática para tablas MyISAM .

• --delay-key-write=ALL

No vuelca buffers de clave entre escrituras para cualquier tabla MyISAM

...

Descargar como (para miembros actualizados) txt (12 Kb)
Leer 7 páginas más »
Disponible sólo en Clubensayos.com