sql >> Base de Datos >  >> RDS >> Mysql

Formato de fila MySQL:¿Diferencia entre fijo y dinámico?

La diferencia realmente solo importa para MyISAM, a otros motores de almacenamiento no les importa la diferencia.EDITAR: Muchos usuarios comentaron que a InnoDB le importa:link 1 by a vapor , enlace 2 por Kaan .

Con MyISAM con filas de ancho fijo, hay algunas ventajas:

  1. Sin fragmentación de filas:es posible con filas de ancho variable dividir filas individuales en varias secciones en todo el archivo de datos. Esto puede aumentar las búsquedas de disco y ralentizar las operaciones. Es posible desfragmentarlo con OPTIMIZE TABLE, pero esto no siempre es práctico.

  2. Tamaño del puntero del archivo de datos:en MyISAM, existe un concepto de puntero de archivo de datos que se utiliza cuando necesita hacer referencia al archivo de datos. Por ejemplo, esto se usa en índices cuando se refieren a dónde está realmente presente la fila. Con tamaños de ancho fijo, este puntero se basa en el desplazamiento de fila en el archivo (es decir, las filas son 1, 2, 3 independientemente de su tamaño). Con ancho variable, el puntero se basa en el desplazamiento de bytes (es decir, las filas pueden ser 1, 57, 163). El resultado es que con tablas grandes, el puntero debe ser más grande, lo que agrega potencialmente mucha más sobrecarga a la tabla.

  3. Más fácil de arreglar en caso de corrupción. Dado que cada fila tiene el mismo tamaño, si su tabla MyISAM se corrompe, es mucho más fácil de reparar, por lo que solo perderá los datos que realmente están dañados. Con el ancho variable, en teoría, es posible que los punteros de ancho variable se arruinen, lo que puede resultar en una mala manipulación de los datos.

Ahora, el principal inconveniente del ancho fijo es que desperdicia más espacio. Por ejemplo, necesita usar campos CHAR en lugar de campos VARCHAR, por lo que termina ocupando espacio adicional.

Normalmente, no tendrá muchas opciones en cuanto al formato, ya que se dicta en función del esquema. Sin embargo, podría valer la pena si solo tiene algunos varchar o un solo blob/texto para intentar optimizarlo. Por ejemplo, considere cambiar el único varchar a un char, o divida el blob en su propia tabla.

Puede leer aún más sobre esto en:

http://dev.mysql.com/doc/refman /5.0/es/formato-estático.html

http://dev.mysql.com/doc/refman /5.0/es/formato-dinamico.html