22
0
Fork 0

Ajout d'infos pour OPTIMIZE TABLE

This commit is contained in:
Gregory Colpart 2019-03-05 00:51:47 +01:00
parent 074c462ee0
commit 13087a40f3
1 changed files with 22 additions and 7 deletions

View File

@ -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}