Articulo de referencia

MyISAM

MyISAM era el motor de almacenamiento predeterminado para las versiones del sistema de gestión de bases de datos relacionales MySQL anteriores a la 5.5, lanzada en diciembre de ...

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

Sistema de archivos

Cada tabla MyISAM se almacena en disco en tres archivos (si no está particionada). Los nombres de los archivos comienzan con el nombre de la tabla y tienen una extensión que indica el tipo de archivo. MySQL utiliza un archivo .frm para almacenar la definición de la tabla, pero este archivo no forma parte del motor MyISAM, sino del servidor. El archivo de datos tiene la extensión .MYD (MYData). El archivo de índice tiene la extensión .MYI (MYIndex). Si se pierde el archivo de índice, siempre se puede recrear recreando los índices.

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

  • FIJO: El formato Fijo implica que todos los datos (incluidos los de longitud variable) tienen una longitud fija. Este formato permite una lectura más rápida y facilita la reparación de tablas dañadas. Si una tabla contiene columnas grandes de longitud variable (BLOB o TEXT), no puede utilizar el formato Fijo.
  • DINÁMICO: Las columnas de longitud variable no tienen un tamaño fijo. Este formato es un poco más lento de leer, pero ahorra espacio en el disco.
  • COMPRIMIDAS: Las tablas comprimidas se pueden crear con una herramienta específica mientras MySQL no está en ejecución y son de solo lectura. Si bien esto generalmente las convierte en una opción poco viable, la tasa de compresión suele ser considerablemente mayor que la de otras 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 lo tanto, es posible copiarlos entre diferentes servidores.

Características

MyISAM está optimizado para entornos con muchas operaciones de lectura y pocas o ninguna escritura. Un ejemplo típico de entorno donde se podría preferir MyISAM es el almacenamiento de datos, ya que implica consultas en tablas muy grandes y la actualización de dichas tablas se realiza cuando la base de datos no está en uso (normalmente 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 se encuentra desplazado desde el inicio del archivo. De esta forma, los registros se pueden leer rápidamente, especialmente cuando el formato es FIJO. Así, las filas tienen una longitud constante. Las inserciones también son sencillas, ya que las nuevas filas se añaden 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 los desplazamientos de las filas cambiarían; lo mismo ocurre con las actualizaciones, ya que la longitud de las filas se reduce; si la actualización alarga la fila, esta se fragmenta. Para desfragmentar las filas y reclamar el espacio vacío, se debe ejecutar el comando OPTIMIZE TABLE. Gracias a este sencillo mecanismo, las estadísticas de índice de MyISAM suelen ser bastante precisas.

Sin embargo, la simplicidad de MyISAM presenta varios inconvenientes. Su principal deficiencia es la ausencia de soporte para transacciones . Además, no admite claves foráneas . En casos de uso normales, InnoDB parece ser más rápido que MyISAM. [ 2 ]

Las versiones de MySQL 5.5 y posteriores han adoptado el motor InnoDB para garantizar restricciones de integridad referencial y una mayor concurrencia .

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

Horquillas

MariaDB cuenta con un motor de almacenamiento llamado Aria , descrito como una "alternativa segura a MyISAM ante fallos". [ 3 ] Sin embargo, los desarrolladores de MariaDB siguen trabajando en el código de MyISAM. La principal mejora es la "Caché de Claves Segmentadas". [ 4 ] Si está habilitada, la caché de índices de MyISAM se divide en segmentos. Esto mejora la concurrencia, ya que los hilos rara vez necesitan bloquear toda la caché.

En MariaDB, MyISAM también admite columnas virtuales .

Drizzle no incluye MyISAM.

Véase también

Notas

  1. "Manual de referencia de MySQL 5.5  :: 13 Motores de almacenamiento  :: 13.6 El motor de almacenamiento InnoDB" . 10 de mayo de 2009. Archivado del original el 20 de noviembre de 2010. Consultado el 16 de marzo de 2021 .
  2. "Rendimiento de MySQL: InnoDB vs MyISAM en 5.6" . 16/11/2012 . Consultado el 16/03/2021 .
  3. "Preguntas frecuentes sobre Aria" . MariaDB . 15 de agosto de 2010. Consultado el 16 de marzo de 2021 .
  4. "Caché de claves segmentadas" . MariaDB . 17 de agosto de 2010. Consultado el 16 de marzo de 2021 .
  • Documentación de MySQL sobre el motor de almacenamiento MyISAM
  • Explicación del límite de archivos abiertos y el problema de la caché de tablas de MyISAM.
  • El artículo trata sobre los problemas que pueden surgir al usar MyISAM.
  • Motores MySQL: MyISAM vs Innodb por Rackspace (Archivado el 08/02/2015)
  • Convierta su base de datos MySQL de MyISAM a InnoDB y prepárese para Drupal 7 al mismo tiempo (Archivado el 08/03/2013).
  • Conversión de tablas de MyISAM a InnoDB
Obtenido de " https://en.wikipedia.org/w/index.php?title=MyISAM&oldid=1303182158 "