Sante Caserio
pubblicato più di 2 anni fa

L'istruzione ANALYZE TABLE

Un paragrafo dedicato all’istruzione ANALYZE TABLE utile nell'analizzare il contenuto degli indici di una tabella.

L’istruzione ANALYZE TABLE analizza il contenuto degli indici di una tabella, in particolare aggiorna il dato Cardinality mostrato dall’istruzione SHOW INDEX.
Questo dato è usato per decidere quale indice utilizzare per velocizzare una query e in che ordine eseguire le JOIN fra più tabelle.

ANALYZE TABLE è supportata dagli Storage Engine MyISAM, Maria e dal vecchio BDB in maniera simile e su InnoDB e XtraDB in modo leggermente differente.
Per gli SE MyISAM e Maria esistono anche dei programmi chiamati myisamchk e mariachk.
Su InnoDB e XtraDB risulta molto più rapido nel caso di tabelle con indici di grosse dimensioni, però il risultato è meno accurato perchè il calcolo viene effettuato con otto accessi casuali. E’ comunque possibile aumentare il numero di accessi casuali modificando il valore della variabile innodb_stats_sample_pages.

ANALYZE TABLE crea un LOCK in lettura se eseguito su tabelle di tipo MyISAM, Maria o BDB; in scrittura se eseguito su tabelle InnoDB o XtraDB.

L’istruzione funziona correttamente sulle tabelle partizionate, ma esiste anche la possibilità di analizzare gli indici relativi a una singola partizione con ALTER TABLEANALYZE PARTITION.

L’uso di REPAIR TABLE richiede i permessi SELECT e INSERT.

Sintassi

La sintassi è la seguente:

1ANALYZE [ NO_WRITE_TO_BINLOG ] TABLE nome_tabella

nome_tabella è il nome della tabella che si desidera analizzare; può anche essere un elenco di tabelle separate da virgola, nel qual caso ognuna delle tabelle verrà verificata con una sola istruzione. Esempio:

1ANALYZE TABLE utenti, permessi;

Le opzioni

Normalmente, quando si esegue REPAIR TABLE, questa istruzione viene scritta nel binlog e replicata sugli eventuali slave. Se non si vuole che ciò avvenga, occorre utilizzare l’opzione NO_WRITE_TO_BINLOG. Lo stesso risultato si può ottenere con il sinonimo LOCAL.

L’output

L’output di ANALYZE TABLE è un recordset simile a quello restituito da altre istruzioni amministrative (OPTIMIZE, CHECK…).

Le colonne restituite sono le seguenti:

  • Table è il nome della tabella a cui si riferisce il record; utile quando si specificano più tabelle in una sola istruzione.
  • Op è l’operazione eseguita e il valore è sempre analyze.
  • Msg_type può avere i seguenti valori: status, info, error, warning; rappresenta il tipo di messaggio.
  • Msg_text è un messaggio informativo.

Per ogni tabella coinvolta nella REPAIR TABLE potrebbe essere restituito più di un messaggio.

Se l’ultimo record è di tipo /status/ e il suo valore è /OK/, la tabella è stata analizzata con successo. Se invece è di tipo /status/ ma il valore è /Table already up to date/ la tabella non è stata analizzata perché la distribuzione degli indici non è cambiata dall’ultima analisi. Se non si ottiene un messaggio di questo tipo relativo ad una tabella coinvolta nella ANALYZE TABLE, si è verificato un problema che ha impedito l’operazione.

I messaggi di tipo info, warning ed error (in ordine crescente di gravità) rappresentano problemi riscontrati nella riparazione di una tabella.

Condividi su:

Esprimi un voto:

  • Current rating: 0.0/5
  • 1
  • 2
  • 3
  • 4
  • 5

Argomenti chiave:

Ultimi commenti Ultimi commenti

Esegui il Login oppure registrati per scrivere un commento.
Cerca nel sito...
Ultime recipes

Un utilissimo tool di shell che effettua un dettagliato e comodo report su MySQL MySQL Report un tool di shell per tenere tutto sotto controllo

Un utilissimo tool di shell che effettua un dettagliato e comodo report su MySQL


Vai alla recipe

Un utilissimo tool per sniffare il traffico Client/Server TCP/IP di MySQL MySQLSniffer sniffare il traffico TCP di MySQL

Un utilissimo tool per sniffare il traffico Client/Server TCP/IP di MySQL


Vai alla recipe

Verificare l'integrità, riparare gestire chiavi e memoria di tabelle MyISAM attraverso myisamchk riparare file MyISAM

Verificare l'integrità, riparare gestire chiavi e memoria di tabelle MyISAM attraverso il file myisamchk


Vai alla recipe

Un tool per comprimere le tabelle MyISAM fino a oltre il 50% myisampack comprimere file MyISAM

Un tool per comprimere le tabelle MyISAM fino a oltre il 50%


Vai alla recipe

mysqlshow le info di base sui database, tabelle e colonne senza utilizzare alcun mysqlshow visualizzare le informazioni sul database MySQL

mysqlshow le info di base sui database, tabelle e colonne senza utilizzare alcun client


Vai alla recipe

Utilizzando UNION / UNION ALL su campi int unsigned zerofill,
ho notato che MysqlUNION / UNION ALL su campi int unsigned zerofill. di DebUsr
Vai al tip

Utilizzo di funzioni come alias di campo tramite l'impiego di prepared statementReport con alias di campo dinamici di john_revelator
Vai al tip

Può capitare che sia necessario eseguire un dump di database in formato Comma SeparatedEsecuzione dump in formato CSV (tabelle in engine MyIsam esportate in formato CSV) di ghigomatto
Vai al tip

E' possibile eseguire le query SQL contenute in un file di testo. Questo è utileEseguire le query da un file di testo di Sante Caserio
Vai al tip

Se vogliamo fare il backup di tutti i database con mysqldump, e ne abbiamo parecchiFare il backup di tutti i database di Sante Caserio
Vai al tip

Salve, dopo tante storie ho studiato il php e mysql .. . che in questo forum parlavo php e campo mysql timestamp di gigi Vai al topic

ciao a tutti ho creato un forum su aruba ma non so come farlo visualizzare nel mio aruba di albertodiprima Vai al topic

Salve a tutti gente, questo è il mio primo post su questo forum e questo a causa Problema Gravissimo con AutoIncrement di stefanoadsl Vai al topic

Salve! Mi presento, mi chiamo Adriano e sono uno studente di ingegneria informatica Problema Trigger di Xanakro Vai al topic

Ciao a tutti!
Volevo chiedere una informazione.
Ho una query che lanciata la prima Query Eseguita più volte di OltreLeStelle Vai al topic