Manutenzione delle tabelle
Apri in CalíopeAnalizza, controlla, ottimizza o ripara le tabelle selezionate, con le operazioni di cui dispone il server.
Dove si trova: Workspace › Strumenti › Manutenzione tabelle
Apri Manutenzione tabelle dalla barra laterale del workspace. Seleziona le tabelle nell'albero a sinistra (la casella di un database seleziona tutte le sue tabelle, oppure spuntale una per una), scegli l'operazione in alto — ANALYZE, CHECK, CHECKSUM, OPTIMIZE o REPAIR — e premi Esegui. Accanto al pulsante vedi quante tabelle sono selezionate.
I risultati compaiono sotto, una riga per ogni messaggio che il server restituisce per ciascuna tabella: gli avvisi sono evidenziati in arancione e gli errori in rosso. Su InnoDB, OPTIMIZE risponde con una nota: ricostruisce la tabella e la analizza al suo posto. CHECKSUM dà un numero per tabella; lo stesso numero su due server significa le stesse righe. REPAIR viene eseguito solo sulle tabelle il cui motore di archiviazione sa ripararsi: MyISAM, Aria, ARCHIVE e CSV. Prima di eseguirlo, una riga sotto i modificatori dice quante delle tabelle selezionate verranno saltate, e ognuna riceve una riga che spiega perché; su InnoDB la riga suggerisce OPTIMIZE, che ricostruisce la tabella. Sul Mac, fai clic sull'intestazione di una colonna per ordinare i risultati; Svuota i risultati svuota l'elenco. Mentre un'operazione è in corso, accanto a Esegui compaiono una barra di avanzamento e Annulla; le tabelle vengono elaborate una alla volta, quindi annullare si ferma prima della successiva.
L’albero ha un filtro per nome nell’intestazione, come quello dell’Editor SQL: digita parte del nome di un database o di una tabella per restringere l’elenco. Ogni database carica le sue tabelle la prima volta che lo espandi, quindi se filtri con database non espansi il piè di pagina indica quanti mancano e propone di caricarli. Seleziona tutto percorre tutti i database del server tranne quelli di sistema del server stesso, che puoi spuntare a mano, e può richiedere qualche secondo. Se il server rifiuta l'operazione su una tabella, quella tabella riceve una riga di errore con il messaggio del server.
SQL Server
Ci sono quattro operazioni: ANALYZE (UPDATE STATISTICS), CHECK (DBCC CHECKTABLE), OPTIMIZE (ALTER INDEX ALL … REBUILD) e CHECKSUM (CHECKSUM_AGG(BINARY_CHECKSUM(*)), sulla tabella intera). La somma non conta le colonne text, ntext, image, xml né quelle di un tipo come geometry, e il risultato le nomina accanto: due tabelle che differiscono solo lì danno la stessa somma. Una tabella su uno schema di partizione offre di ricostruire una sola partizione. Non c’è REPAIR: richiede il database in modalità utente singolo e può perdere dati. OPTIMIZE blocca la tabella mentre la ricostruisce: la ricostruzione online esiste solo nell’edizione Enterprise, e non con indici spaziali.
PostgreSQL
Ci sono tre operazioni: ANALYZE, OPTIMIZE, che esegue VACUUM e poi REINDEX TABLE CONCURRENTLY, e quindi dà due righe per tabella, e CHECK, con l’estensione amcheck: bt_index_check su ogni indice B-tree e, dalla 14, verify_heapam sulla tabella. Senza l’estensione, CHECK dà una nota con CREATE EXTENSION amcheck. Nessuna ferma la tabella. Non ci sono REPAIR né CHECKSUM. VACUUM FULL, l’unica che restituisce spazio al sistema, è esclusa di proposito: blocca l’intera tabella mentre la riscrive. Su un server precedente alla 12, OPTIMIZE si ferma al VACUUM e la riga dell’indice dice perché.
ClickHouse
Con ClickHouse ci sono tre operazioni: CHECK, che restituisce una riga per ogni parte della tabella; OPTIMIZE, che ne fonde le parti; e ANALYZE, che calcola le statistiche di colonna che l'ottimizzatore usa per ordinare i filtri: ADD STATISTICS con tdigest e uniq sulle colonne di numeri e date, uniq su quelle di testo, e MATERIALIZE STATISTICS, che aspetta la fine. Un Array o una Map non prendono statistiche, e una tabella senza colonne che le accettino lo dice. REPAIR e CHECKSUM non esistono nel motore e non compaiono. Con una sola tabella spuntata compare Partizione, per ottimizzare una partizione invece della tabella intera.
Oracle
Con Oracle ci sono tre operazioni. ANALYZE raccoglie le statistiche della tabella e dei suoi indici con DBMS_STATS.GATHER_TABLE_STATS, e la riga del risultato dice quante righe contano le statistiche e quando sono state raccolte; senza privilegi su una tabella di un altro schema, dice che non è stato possibile raccoglierle e sotto va il messaggio del server. CHECK è ANALYZE TABLE … VALIDATE STRUCTURE CASCADE ONLINE: verifica la tabella e i suoi indici senza bloccare le scritture. Su una tabella partizionata va CASCADE FAST, che dice se c'è un danno senza dettagliarlo, perché la forma completa richiede una tabella INVALID_ROWS nel tuo schema. OPTIMIZE è ALTER TABLE … SHRINK SPACE CASCADE: compatta in linea la tabella e i suoi indici e restituisce lo spazio libero. Se la tabella non aveva ROW MOVEMENT, Calíope lo attiva per l'operazione e poi lo disattiva. Se la tabella non accetta SHRINK (ORA-10631 o ORA-10635: un indice basato su funzione, una vista materializzata ON COMMIT sopra, un tablespace senza ASSM), Calíope la riscrive con MOVE ONLINE e la riga lo dice. Su una tabella partizionata puoi scegliere una partizione (MODIFY PARTITION … SHRINK SPACE CASCADE). Non ci sono REPAIR né CHECKSUM: Oracle non ha queste operazioni per tabella. Annulla interrompe anche la tabella in corso: il server ferma la sua istruzione (ORA-01013) e quella tabella non riceve riga nell'elenco.
TiDB
Con TiDB ci sono due operazioni: ANALYZE e CHECK, che esegue ADMIN CHECK TABLE —confronta gli indici con le righe— una tabella alla volta. Se non trova nulla, la riga dice che la tabella non presenta problemi; se trova qualcosa, c’è il messaggio del server, che nomina l’indice. Non ci sono REPAIR, CHECKSUM né OPTIMIZE: TiDB non li ha —il suo archivio si compatta da solo— e non vengono offerti.
Con un’etichetta di ambiente di sola lettura, questo strumento non viene offerto. Con una che conferma le scritture, ANALYZE, OPTIMIZE e REPAIR chiedono una volta per lotto; CHECK e CHECKSUM, che leggono, non chiedono.
MySQLMariaDBAurora
Con una sola tabella selezionata, OPTIMIZE permette di scegliere una delle sue partizioni. Calíope la ricostruisce con REBUILD PARTITION e la analizza con ANALYZE PARTITION, perché su InnoDB OPTIMIZE PARTITION ricostruirebbe l’intera tabella. Questa operazione finisce nel binlog anche se selezioni il modificatore che lo evita: ALTER TABLE non lo accetta.
Parole chiave: ANALYZE, CHECK, OPTIMIZE, REPAIR, manutenzione, CHECKSUM