Apparence
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
| CHECK | OPTIMIZE | REPAIR | ANALYZE | |
|---|---|---|---|---|
| MySQL / MariaDB | CHECK TABLE | OPTIMIZE TABLE | REPAIR TABLE | ANALYZE TABLE |
| PostgreSQL | — | VACUUM (FULL, ANALYZE) | REINDEX TABLE | ANALYZE |
| SQLite | PRAGMA integrity_check * | VACUUM * | REINDEX | ANALYZE |
| SQL Server | DBCC CHECKTABLE | ALTER 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 CHECKDBavec 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.
