Motor no transaccional MyISAM

Motor no transaccional MyISAM
Información sobre la plantilla
260px-Logo-mysql.jpg
Concepto:Es el motor de almacenamiento por defecto de MySQL. Se basa en el código ISAM pero tiene muchas extensiones útiles.

Motor no transaccional MyISAM. Es el motor de almacenamiento por defecto de MySQL. Se basa en el código ISAM pero tiene muchas extensiones útiles.(Se debe tener en cuenta que MySQL 5.0 no soporta ISAM.)

Características

  • 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 formatoen 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 tienenprocesadores peculiares.
  • Ficheros grandes (hasta longitud de 63 bits) se soportan en sistemas de ficheros y sistemas operativos que soportan ficheros grandes.
  • 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.
  • 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.
  • Cada columna de carácteres puede tener distintos conjuntos de carácteres.

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.
  • í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). --external-locking no ayuda para tablas que usan --delay-key-write.

  • Las siguientes variables de sistema afectan al comportamiento de tablas MyISAM :

--bulk_insert_buffer_size(Tamaño del árbol de caché usado en optimización de inserciones). --myisam_max_extra_sort_file_size(Usado para ayudar a MySQL a decidir cuándo usar el método de creación de índice de clave caché lento pero seguro. --myisam_max_sort_file_size(No usa el método de ordenación de índice rápido para crear un índice si el fichero temporal será más grande a este tamaño. --myisam_sort_buffer_size(Cambia el tamaño del búffer usado al recuperar tablas).

¿Cuánto espeacio necesitan las claves?

  • Las tablas MyISAM usan índices B-tree. Puede calcular el tamaño del fichero índice mediante (key_length+4)/0.67, sumado sobre todas las claves. Este es el peor caso en que todas las claves se insertan en orden ordenado y la tabla no tienen ninguna clave comprimida.Los índices de cadenas de carácteres están comprimidos en espacio. Si la primera parte del índice es una cadena de carácteres,también tiene el prefijo comprimido.

La compresión de espacio hace que el fichero índice sea menor que el peor caso si la columna de la cadena de carácteres tiene muchos espacios finales o es una columna VARCHAR que no se usa siempre con la longitud total. La compresión de prefijo se usa en claves que comienzan con una cadena de carácteres. La compresión de prefijo ayuda si hay muchas cadenas de carácteres con un prefijo idéntico. En tablas MyISAM puede comprimir números prefijo especificando PACK_KEYS=1 cuando crea la tabla. Esto ayuda cuando tiene muchas claves enteras con un prefijo idéntico cuando los números se

Formatos de almacenamiento de las tablas MyISAM

  • MyISAM soporta tres formatos de almacenamiento distintos. Dos de ellos (formato fijo y dinámico) se eligen automáticamente en función del tipo de columnas que esté usando. El tercero, formato comprimido, puede ser creado sólo con la utilidad myisampack .

Fuente

  • Artículo MyISAM. Disponible en dev.mysql.com. Consultado: 10 de diciembre del 2011