From 13087a40f3b86e204c3408ce04d0bda36108621a Mon Sep 17 00:00:00 2001 From: Gregory Colpart Date: Tue, 5 Mar 2019 00:51:47 +0100 Subject: [PATCH] Ajout d'infos pour OPTIMIZE TABLE --- HowtoMySQL.md | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/HowtoMySQL.md b/HowtoMySQL.md index 756e98a7..a4e9e1b2 100644 --- a/HowtoMySQL.md +++ b/HowtoMySQL.md @@ -622,18 +622,11 @@ On peut aussi réparer qu'une base en particulier : > *Note* : ceci peut être à faire en cas d'arrêt inopiné du service. -On pourra également ajouter l'option `--optimize` pour ajouter une optimisation des tables : - -~~~ -# mysqlcheck --auto-repair --check --optimize --all-databases -~~~ - Pour réparer une seule table : ~~~{.sql} mysql> CHECK TABLE foo.bar; mysql> REPAIR TABLE foo.bar; -mysql> OPTIMIZE TABLE foo.bar; ~~~ Dans le cas des tables MyISAM, si le REPAIR échoue, une réparation est aussi possible via `myisamchk`… à faire avec @@ -649,6 +642,28 @@ En cas d'échec (*segfault* par exemple), on peut tenter : # myisamchk --safe-recover -v -f --key_buffer_size=512M --sort_buffer_size=512M --read_buffer_size=4M --write_buffer_size=4M /var/lib/mysql/BASE/TABLE.MYD ~~~ +### OPTIMIZE + +Il est conseillé de lancer régulièrement la commande `OPTIMIZE TABLE` sur ses tables. +Cela va réaliser une sorte de défragmentation des tables, notamment sur les indexes. +C'est particulièrement recommandé sur les tables qui subissent beaucoup de changement, notamment des modifications/suppressions de lignes. + +Voici comment on lance l'opération sur une table : + +~~~{.sql} +mysql> OPTIMIZE TABLE foo.bar; +~~~ + +On peut également lancer cela sur l'ensemble des tables d'une base (mais cela peut être très long) : + +~~~ +# mysqlcheck --optimize --all-databases +~~~ + +> *Note* : lors d'un OPTIMIZE TABLE, la table est lockée. + +Suivant le moteur utilisé pour une table, les opérations vont être différentes. Notamment pour le moteur *InnoDB* vous aurez un message du type `Table does not support optimize, doing recreate + analyze instead` et une table temporaire sera complètement recréée et remplacera l'ancienne (attention à l'espace disque !). + ### routines MySQL ~~~{.sql}