Informazioni sul parser e su Query Optimizer

Completato

Parser

Il parser è un processo interno che suddivide la query in token. Il parser è costituito da due parti:

  • Controllo delle regole grammaticali MySQL
  • Scanner lessicale

Il parser compila quindi un albero di analisi e il preprocessore esegue ulteriori controlli, ad esempio se esistono tabelle o colonne. Il preprocessore controlla anche i privilegi.

Il processo del parser consiste nel tradurre il testo della query in una struttura ad albero di analisi valida che può essere usata da Query Optimizer.

Query Optimizer

Query Optimizer accetta l'albero di analisi e lo trasforma in un piano di esecuzione di query. Query Optimizer deve trovare il piano ottimale tra molti piani potenziali stimando il costo di piani diversi. Query Optimizer chiede al motore di archiviazione pertinente le statistiche , ad esempio il numero di pagine per ogni tabella o la lunghezza delle righe. Poiché Query Optimizer si basa sul motore di archiviazione per le statistiche, non ha sempre le statistiche necessarie o aggiornate e accurate.

Nota

Le statistiche vengono create dal motore di archiviazione pertinente e ogni motore di archiviazione crea e archivia statistiche diverse. Ad esempio, InnoDB non archivia le statistiche sulla lunghezza delle righe.

È possibile visualizzare il modo in cui Database di Azure per MySQL ha eseguito una query usando l'istruzione EXPLAIN . EXPLAIN può essere usata come prefisso per SELECT, INSERT, DELETE, REPLACE e UPDATE. Quando si usa l'istruzione EXPLAIN, MySQL descrive il piano di esecuzione scelto anziché eseguirlo.

Nota

L'istruzione EXPLAIN è sinonimo di DESCRIBE. In pratica, EXPLAIN viene usato per visualizzare il modo in cui MySQL eseguirà una query e DESCRIBE viene usato per visualizzare informazioni sulle colonne in una tabella. EXPLAIN e DESCRIBE richiedono gli stessi privilegi dell'istruzione originale. EXPLAIN richiede anche il privilegio SHOW VIEW per mostrare il piano di esecuzione di una vista.

È anche possibile individuare il costo dell'ultima query eseguita. Dopo aver eseguito la query, visualizzare il costo eseguendo:

SHOW STATUS LIKE 'last_query_cost';

Questa istruzione mostra il numero di letture di pagine necessarie per eseguire la query. Visualizzando last_query_cost dopo le variazioni della query, è possibile individuare il "costo" relativo di ogni query.

L'architettura di MySQL è progettata per l'esecuzione contemporanea di numerose query. Se possibile, è consigliabile eseguire più query piccole, anziché un numero minore di query di grandi dimensioni e complesse.

Suggerimento

DESCRIBE ed EXPLAIN sono chiamate istruzioni di utilità in MySQL. Sono disponibili quattro istruzioni di utilità: DESCRIBE, EXPLAIN, HELP e USE. HELP restituisce la Guida su un argomento specifico, ad esempio HELP 'tipi di dati', che visualizza tutti i tipi di dati MySQL. USE indica a MySQL a quale database devono essere applicate le istruzioni seguenti, ad esempio USE MyDatabase;