Under den seneste webcast, jeg lavede for Idera, havde jeg fornøjelsen af at vise en masse nye tricks og tips. Et af de mest værdsatte tip var om, hvordan man får Last Query Cost i MySQL ved hjælp af kommandoen SHOW STATUS LIKE 'Last_Query_Cost'. Lad os lære om det i dag.
Hvis du bruger SQL Server, er det meget nemt at få prisen på forespørgslen ved at bruge enten en grafisk eksekveringsplan, XL eksekveringsplan eller ved at bruge plan cache DMV. Men hvis du bruger MySQL, er det meget svært at finde ud af den sidste forespørgselsomkostning. Jeg har ofte set under mit omfattende sundhedstjek af databaseydelse at DBA'er ønsker at tune deres MySQL-forespørgsler, men de aner ikke, hvordan de skal måle ydeevnen af deres forespørgsler.
Hvis du bruger MySQL eller MariaDB, kan du altid måle effektiviteten af din forespørgsel i form af omkostninger ved at køre følgende kommando.
Vis status
SHOW STATUS LIKE 'Last_Query_Cost';
Her er den officielle dokumentation for kommandoen. De samlede omkostninger for den sidst kompilerede forespørgsel som beregnet af forespørgselsoptimeringsværktøjet. Dette er nyttigt til at sammenligne omkostningerne ved forskellige forespørgselsplaner for den samme forespørgsel. Standardværdien på 0 betyder, at der ikke er kompileret nogen forespørgsel endnu. Standardværdien er 0. Last_query_cost har sessionsomfang.
Lad os se et simpelt eksempel på, hvordan det fungerer ved hjælp af Sakila-eksempeldatabasen til 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';
Her er resultatet, du får, når du kører ovenstående forespørgsel:
Ved hjælp af status kan vi vide, hvad det kostede at køre forespørgsel. Hvis du har andre forslag, så lad mig det vide. Derudover, hvis du ønsker at overvåge i realtid for korrigerende handling og problemløsning, bør du overveje SQL Diagnostic Manager til MySQL og MariaDB .