2010-05-12 35 views
15

Cuando ejecuto optimizar la tabla en una tabla innodb, aparece este mensaje. ¿significa que la tabla ya se ha optimizado, pero de una manera diferente?Optimizar la tabla innodb

"tabla | optimizar | nota | La tabla no admite optimizar, hacer recreación + analizar en su lugar |"

Respuesta

22

Desde el documentation:

Para tablas InnoDB, optimizar la TABLA se asigna a ALTER TABLE, que reconstruye la tabla para actualizar las estadísticas de índice y el espacio no utilizado libre en el índice agrupado. A partir de MySQL 5.1.27, esto se visualiza en la salida de la tabla optimizar cuando se lo ejecuta en una tabla InnoDB, como se muestra aquí:

mysql> OPTIMIZE TABLE foo; 
+----------+----------+----------+----------------------------------------------------------- 
| Table | Op  | Msg_type | Msg_text              
+----------+----------+----------+-----------------------------------------------------------  
| test.foo | optimize | note  | Table does not support optimize, doing recreate + analyze ... 
| test.foo | optimize | status | OK                
+----------+----------+----------+----------------------------------------------------------- 

Puede hacer que el trabajo OPTIMIZE TABLE en otros motores de almacenamiento arrancando mysqld con la opción --skip-new o --safe-mode. En este caso, OPTIMIZE TABLE se asigna a ALTER TABLE.

+2

Mejor tarde que nunca. :) –

3

La sintaxis para optimize la mesa es

OPTIMIZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE 
tbl_name [, tbl_name] ... 

Uso OPTIMIZE TABLE en estos casos, dependiendo del tipo de mesa:

  • Después de hacer inserto sustancial, actualización o supresión sobre una InnoDB tabla que tiene su propio archivo .ibd porque se creó con la opción innodb_file_per_table habilitada. La tabla y los índices se reorganizan y el espacio de disco se puede reclamar para que lo use el sistema operativo.
  • Después de eliminar una gran parte de una tabla MyISAM o ARCHIVE, o hacer muchos cambios en una tabla MyISAM o ARCHIVE 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 subsiguientes de INSERT reutilizan las posiciones de fila antiguas. Puede usar OPTIMIZE TABLE para reclamar el espacio no utilizado y desfragmentar el archivo de datos. Después de grandes cambios en una tabla, esta declaración también puede mejorar el rendimiento de las declaraciones que usan la tabla, a veces de manera significativa.
Cuestiones relacionadas