OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
OPTIMIZE TABLE
doit être utilisée si une
grande partie de la base a été effacée, ou si vous avez
fait de nombreuses modifications dans une table à format de
ligne dynamique (des tables qui ont des colonnes de type
VARCHAR
, BLOB
et
TEXT
). Les lignes effacées sont
conservées dans une liste, et les prochaines opérations
d'INSERT
réutilisent les vieilles
positions de lignes. Vous pouvez vous servir de la commande
OPTIMIZE TABLE
pour récupérer l'espace
utilisé et défragmenter le fichier de données.
Dans la plupart des installations, vous n'avez pas à utiliser
OPTIMIZE TABLE
. Même si vous faites
beaucoup de mises à jour sur des colonnes à taille
dynamique, il n'est pas évident que vous ayez à passer cette
commande plus d'une fois par semaine ou par mois, et
uniquement sur quelques tables.
Pour le moment, OPTIMIZE TABLE
fonctionne
uniquement avec les tables de type MyISAM
et BDB
. Pour les tables
BDB
, OPTIMIZE TABLE
est
actuellement l'équivalent de ANALYZE
TABLE
. See Section 13.5.2.1, « Syntaxe de ANALYZE TABLE
».
Vous pouvez vous arranger pour que OPTIMIZE
TABLE
fonctionne sur d'autres types de tables, en
démarrant mysqld
avec
--skip-new
ou --safe-mode
,
mais dans ce cas, OPTIMIZE TABLE
est
simplement l'équivalent de ALTER TABLE
.
OPTIMIZE TABLE
fonctionne comme ceci :
Si la table contient des lignes effacées ou des lignes fragmentées, la table est compactée.
Si les pages d'index ne sont pas triées,
OPTIMIZE TABLE
les trie.
Si les statistiques ne sont pas à jour (et que la table n'a pas pu effectuer de réparation en triant l'index), elles sont mises à jour.
Notez que la table est verrouillée durant la commande
OPTIMIZE TABLE
.
Avant MySQL 4.1.1, OPTIMIZE
n'était pas
reportée dans le log binaire. Depuis MySQL 4.1.1 elles le
sont, à moins que l'attribut optionnel
NO_WRITE_TO_BINLOG
ou son alias
LOCAL
ne soit utilisé.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.