Durante il recente webcast che ho fatto per Idera, ho avuto il piacere di mostrare molti nuovi trucchi e suggerimenti. Uno dei suggerimenti più apprezzati è stato su come ottenere Last Query Cost in MySQL usando il comando SHOW STATUS LIKE 'Last_Query_Cost'. Scopriamolo oggi.
Se si utilizza SQL Server, è molto facile ottenere il costo della query utilizzando un piano di esecuzione grafico, un piano di esecuzione XL o utilizzando DMV della cache dei piani. Tuttavia, se si utilizza MySQL, è molto difficile calcolare il costo dell'ultima query. Ho visto spesso durante il mio controllo completo dello stato delle prestazioni del database che i DBA vogliono ottimizzare le loro query MySQL ma non hanno idea di come misurare le prestazioni delle loro query.
Se stai usando MySQL o MariaDB, puoi sempre misurare le prestazioni della tua query in termini di costo eseguendo il comando seguente.
Mostra stato
SHOW STATUS LIKE 'Last_Query_Cost';
Ecco la documentazione ufficiale per il comando. Il costo totale dell'ultima query compilata calcolata da Query Optimizer. Ciò è utile per confrontare il costo di diversi piani di query per la stessa query. Il valore predefinito di 0 significa che non è stata ancora compilata alcuna query. Il valore predefinito è 0. Last_query_cost ha l'ambito della sessione.
Vediamo un semplice esempio di come funziona con l'aiuto del database di esempio Sakila per MySQL .
USE sakila; SELECT * FROM film f INNER JOIN film_actor fa ON f.film_id = fa.film_id INNER JOIN film_category fc ON fc.film_id = fa.film_id WHERE f.film_id = 10; SHOW STATUS LIKE 'Last_Query_Cost';
Ecco il risultato che ottieni quando esegui la query precedente:
Con l'aiuto dello stato, possiamo sapere qual è stato il costo coinvolto nell'esecuzione della query. Se avete altri suggerimenti fatemi sapere. Inoltre, se desideri monitorare in tempo reale l'azione correttiva e la risoluzione dei problemi, dovresti prendere in considerazione SQL Diagnostic Manager per MySQL e MariaDB .