Skip to content

Maintenance des tables ​

Faites un clic droit sur une table, un groupe de tables ou une base dans la barre latérale et choisissez Maintenance pour lancer l’une des quatre opérations : CHECK, OPTIMIZE, REPAIR ou ANALYZE.

Ces quatre noms sont ceux de MySQL, et c’est le vocabulaire qu’emploie l’interface. Chaque autre moteur les fait correspondre à son propre équivalent, de sorte que la même entrée de menu signifie la même intention où que vous l’exécutiez.

À quoi sert chacune ​

  • CHECK — recherche les erreurs de structure et de données. Ne modifie rien, donc toujours sans risque.
  • OPTIMIZE — réorganise la table et récupère l’espace inutilisé. La table est réécrite.
  • REPAIR — tente de réparer une table endommagée. À n’exécuter qu’après qu’un CHECK a signalé un problème.
  • ANALYZE — actualise les statistiques des clés sur lesquelles s’appuie le planificateur de requêtes. Rapide et sans risque, et la première chose à essayer lorsqu’une requête autrefois rapide est devenue lente.

Ce qui s’exécute réellement ​

CHECKOPTIMIZEREPAIRANALYZE
MySQL / MariaDBCHECK TABLEOPTIMIZE TABLEREPAIR TABLEANALYZE TABLE
PostgreSQL—VACUUM (FULL, ANALYZE)REINDEX TABLEANALYZE
SQLitePRAGMA integrity_check *VACUUM *REINDEXANALYZE
SQL ServerDBCC CHECKTABLEALTER INDEX ALL … REBUILD—UPDATE STATISTICS

* Sur SQLite, ces deux opérations s’appliquent à tout le fichier de base plutôt qu’à une table, elles ne s’exécutent donc qu’une fois par lancement, quel que soit le nombre de tables sélectionnées.

Lorsqu’un moteur n’a pas d’équivalent, la table est signalée comme ignorée, avec la raison. Elle n’est jamais remplacée discrètement par autre chose :

  • PostgreSQL n’a pas d’équivalent natif à CHECK TABLE.
  • La réparation sous SQL Server nécessite DBCC CHECKDB avec une option de réparation en mode mono-utilisateur, et peut supprimer des données. Ce n’est pas quelque chose à lancer depuis un menu contextuel.

Avant de lancer ​

OPTIMIZE et REPAIR réécrivent la table et la verrouillent pendant toute l’opération. Sur une grande table, cela peut prendre longtemps, et tout ce qui tente de lire la table attend. La boîte de dialogue vous avertit avant ces deux-là, et cet avertissement mérite d’être pris au sérieux sur un serveur de production pendant les heures de travail.

CHECK et ANALYZE sont peu coûteux en comparaison et peuvent être lancés quand vous voulez.

Lire le résultat ​

La grille de résultats contient une ligne par message produit par le serveur : Table, Opération, État, Message.

Le message est ce que le serveur a dit, mot pour mot, ou l’instruction exécutée. Sur PostgreSQL, cela signifie qu’un OPTIMIZE affiche VACUUM (FULL, ANALYZE) "t" — la correspondance avec le vocabulaire MySQL est donc visible plutôt qu’implicite.

Les états sont ok, info, warning, error et skipped. Sur les tables InnoDB, MySQL répond souvent à OPTIMIZE par une note info indiquant qu’il a effectué une reconstruction plus une analyse à la place ; c’est normal et ce n’est pas un échec.

Une table en échec devient une ligne error et l’exécution continue avec les autres, de sorte qu’une table défectueuse ne masque pas l’état de tout le reste.

Sélectionner plusieurs tables ​

Ctrl-clic ou Maj-clic sur des tables dans la barre latérale, et le menu s’applique à toute la sélection. Sur un groupe de tables, il couvre toutes les tables du groupe, et sur un nœud de base de données, toutes les tables de la base — y compris celles que vous n’avez pas encore dépliées.