Manutenzione tabelle
Fai clic destro su una tabella, un gruppo di tabelle o un database nella barra laterale e scegli Manutenzione per eseguire una di quattro operazioni: CHECK, OPTIMIZE, REPAIR o ANALYZE.
I quattro nomi sono quelli di MySQL, ed è il vocabolario che parla l'interfaccia. Ogni altro motore li mappa sul proprio equivalente, così la stessa voce di menu significa la stessa intenzione ovunque la esegui.
A che cosa serve ciascuna
- CHECK — cerca errori di struttura e di dati. Non modifica nulla, quindi è sempre sicura.
- OPTIMIZE — riorganizza la tabella e recupera lo spazio inutilizzato. La tabella viene riscritta.
- REPAIR — tenta di riparare una tabella danneggiata. Eseguila solo dopo che CHECK ha segnalato un problema.
- ANALYZE — aggiorna le statistiche sulle chiavi usate dal pianificatore. Veloce e innocua, ed è di solito la prima cosa da provare quando una query un tempo rapida è diventata lenta.
Che cosa viene eseguito davvero
| 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 |
* Su SQLite queste due riguardano l'intero file di database anziché una singola tabella, quindi vengono eseguite una volta sola per invocazione, indipendentemente da quante tabelle hai selezionato.
Dove un motore non ha un equivalente, la tabella viene riportata come saltata con la ragione. Non viene mai sostituita in silenzio con qualcos'altro:
- PostgreSQL non ha nel core un equivalente di CHECK TABLE.
- La riparazione su SQL Server richiede
DBCC CHECKDBcon un'opzione di repair in modalità single-user, e può scartare dati. Non è qualcosa da lanciare da un menu contestuale.
Prima di eseguirla
OPTIMIZE e REPAIR riscrivono la tabella e mantengono un lock per tutta la durata. Su una tabella grande può volerci molto, e qualunque cosa provi a leggerla aspetta. La finestra ti avvisa prima di queste due, e vale la pena darle retta su un server di produzione in orario di lavoro.
CHECK e ANALYZE sono al confronto economiche e si possono eseguire quando vuoi.
Leggere il risultato
La griglia dei risultati ha una riga per ogni messaggio prodotto dal server: Tabella, Operazione, Stato, Messaggio.
Il messaggio è ciò che ha detto il server, alla lettera, oppure l'istruzione eseguita. Su PostgreSQL significa che un OPTIMIZE riporta VACUUM (FULL, ANALYZE) "t": così la mappatura dal vocabolario di MySQL è visibile invece che sottintesa.
Gli stati sono ok, info, warning, error e skipped. Sulle tabelle InnoDB MySQL risponde spesso a OPTIMIZE con una nota info in cui dice di aver fatto una ricostruzione più analisi; è normale e non è un errore.
Una tabella che fallisce diventa una riga error e l'esecuzione prosegue con le altre, così una tabella rotta non nasconde lo stato di tutte le altre.
Selezionare più tabelle
Ctrl-clic o shift-clic sulle tabelle nella barra laterale e il menu si applica all'intera selezione. Su un nodo gruppo di tabelle copre ogni tabella che contiene, e su un nodo database ogni tabella del database — comprese quelle che non hai ancora espanso.
