MyISAM - MyISAM

MyISAM
Desarrollador (es) Oracle Corporation
Escrito en C
Sistema operativo Multiplataforma
Escribe Motor de base de datos
Licencia Licencia pública general GNU
Sitio web dev .mysql .com / doc / refman / 8 .0 / es / myisam-storage-engine .html

MyISAM era el motor de almacenamiento predeterminado para las versiones del sistema de administración de bases de datos relacionales MySQL anteriores a la 5.5 lanzada en diciembre de 2009. Se basa en el código ISAM anterior , pero tiene muchas extensiones útiles.

Sistema de archivos

Cada tabla MyISAM se almacena en el disco en tres archivos (si no está particionado). Los archivos tienen nombres que comienzan con el nombre de la tabla y tienen una extensión para indicar el tipo de archivo. MySQL usa un archivo .frm para almacenar la definición de la tabla, pero este archivo no es parte del motor MyISAM; en cambio, es parte del servidor. El archivo de datos tiene una extensión .MYD (MYData). El archivo de índice tiene una extensión .MYI (MYIndex). El archivo de índice, si se pierde, siempre se puede volver a crear volviendo a crear índices.

El formato de los archivos depende de la opción de tabla ROW_FORMAT. Están disponibles los siguientes formatos:

  • FIJO: fijo es un formato en el que todos los datos (incluidos los tipos de longitud variable) tienen una longitud fija. Este formato es más rápido de leer y mejora la reparación de tablas dañadas. Si una tabla contiene columnas grandes de longitud variable (BLOB o TEXTO), no puede usar el formato FIJO.
  • DINÁMICO: Las columnas de longitud variable no tienen un tamaño de longitud fijo. Este formato es un poco más lento de leer pero ahorra algo de espacio en el disco.
  • COMPRIMIDO: Las tablas comprimidas se pueden crear con una herramienta dedicada mientras MySQL no se está ejecutando y son de solo lectura. Si bien esto generalmente los convierte en una opción no viable, la tasa de compresión generalmente es sensiblemente más alta que las alternativas.

Los archivos MyISAM no dependen del sistema y, dado que MyISAM no es transaccional, su contenido no depende de la carga de trabajo actual del servidor. Por tanto, es posible copiarlos entre distintos servidores.

Características

MyISAM está optimizado para entornos con operaciones de lectura intensas y pocas escrituras, o ninguna. Un área típica en la que uno podría preferir MyISAM es el almacén de datos porque involucra consultas en tablas muy grandes, y la actualización de dichas tablas se realiza cuando la base de datos no está en uso (generalmente por la noche).

La razón por la que MyISAM permite lecturas rápidas es la estructura de sus índices: cada entrada apunta a un registro en el archivo de datos y el puntero está desplazado desde el principio del archivo. De esta manera, los registros se pueden leer rápidamente, especialmente cuando el formato es FIJO. Por tanto, las filas tienen una longitud constante. Las inserciones también son fáciles porque las nuevas filas se agregan al final del archivo de datos. Sin embargo, las operaciones de eliminación y actualización son más problemáticas: las eliminaciones deben dejar un espacio vacío o las compensaciones de las filas cambiarían; lo mismo ocurre con las actualizaciones, ya que la longitud de las filas se acorta; si la actualización alarga la fila, la fila se fragmenta. Para desfragmentar filas y reclamar un espacio vacío, se debe ejecutar el comando OPTIMIZE TABLE. Debido a este mecanismo simple, las estadísticas del índice MyISAM suelen ser bastante precisas.

Sin embargo, la simplicidad de MyISAM tiene varios inconvenientes. La principal deficiencia de MyISAM es la ausencia de soporte de transacciones . Además, las claves externas no son compatibles. En casos de uso normales, InnoDB parece ser más rápido que MyISAM.

Las versiones de MySQL 5.5 y superiores se han cambiado al motor InnoDB para garantizar restricciones de integridad referencial y una mayor concurrencia .

MyISAM admite la indexación FULLTEXT y los tipos de datos OpenGIS.

tenedores

MariaDB tiene un motor de almacenamiento llamado Aria , que se describe como una "alternativa a prueba de choques a MyISAM". Sin embargo, los desarrolladores de MariaDB todavía trabajan en código MyISAM. La principal mejora es la "caché de claves segmentadas". Si está habilitado, la caché de índices MyISAM se divide en segmentos. Esto mejora la simultaneidad porque los subprocesos rara vez necesitan bloquear todo el caché.

En MariaDB, MyISAM también admite columnas virtuales .

Drizzle no incluye MyISAM.

Ver también

Notas

enlaces externos