Tengo un script semanal que mueve los datos de nuestra base de datos en vivo y los coloca en nuestra base de datos de archivo, luego borra los datos que acaba de archivar de la base de datos en vivo. Dado que es una eliminación de tamaño decente (aproximadamente el 10% de la tabla se recorta), pensé que debería ejecutar OPTIMIZE TABLE después de esta eliminación.MySQL: ¿OPTIMIZAR LA TABLA necesitada en la tabla con columnas fijas?
Sin embargo, estoy leyendo esto desde la documentación de MySQL y no sé cómo interpretarlo: http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html
"OPTIMIZE TABLE se debe utilizar si ha eliminado una gran parte de una mesa o si ha realizado muchos cambios en una tabla con filas de longitud variable (tablas que tienen columnas VARCHAR, VARBINARY, BLOB o TEXT). Las filas eliminadas se mantienen en una lista vinculada y las operaciones INSERT subsiguientes reutilizan las posiciones de fila antiguas. Puede utilizar OPTIMIZE TABLE para reclamar el espacio no utilizado y para desfragmentar el archivo de datos ".
La primera frase es ambigua para mí. ¿Significa que debe ejecutarlo si: A) ha eliminado una gran parte de una tabla con filas de longitud variable o si ha realizado muchos cambios en una tabla con filas de longitud variable O B) ha eliminado una gran parte de CUALQUIER tabla o si ha realizado muchos cambios en una tabla con filas de longitud variable
¿Tiene sentido? Entonces, si mi tabla no tiene columnas VAR, ¿debo ejecutarla todavía?
Si bien estamos en el tema - ¿hay algún indicador que me diga que una tabla está lista para una llamada OPTIMIZE?
También leo este http://www.xaprb.com/blog/2010/02/07/how-often-should-you-use-optimize-table/ que dice que ejecutar la tabla OPTIMIZE solo es útil para la clave principal. Si la mayoría de mis selecciones provienen de otros índices, ¿estoy desperdiciando esfuerzo en las tablas que tienen una clave sustituta?
¡Muchas gracias!
Gracias, Ryan. Estoy usando InnoDB y definitivamente estoy notando el bloqueo, por lo que quiero asegurarme de no abusar de esto. Entonces, si te entiendo correctamente, dado que mi tabla no usa columnas VAR, no estará tan fragmentado. Bien, bien, ¡gracias! –