Under den senaste webbsändningen jag gjorde för Idera hade jag nöjet att visa en hel del nya knep och tips. Ett av de mest uppskattade tipsen handlade om hur man får Last Query Cost i MySQL med kommandot SHOW STATUS LIKE ‘Last_Query_Cost’. Låt oss lära oss om det idag.
Om du använder SQL Server är det mycket enkelt att få kostnaden för frågan genom att använda antingen en grafisk exekveringsplan, XL exekveringsplan eller använda plancache DMV. Men om du använder MySQL är det mycket svårt att räkna ut den senaste frågekostnaden. Jag har ofta sett under min omfattande hälsokontroll av databasprestanda att DBA:er vill ställa in sina MySQL-frågor men de har ingen aning om hur de ska mäta prestandan för sina frågor.
Om du använder MySQL eller MariaDB kan du alltid mäta prestandan för din fråga i termer av kostnaden genom att köra följande kommando.
Visa status
SHOW STATUS LIKE 'Last_Query_Cost';
Här är den officiella dokumentationen för kommandot. Den totala kostnaden för den senast kompilerade frågan beräknad av frågeoptimeraren. Detta är användbart för att jämföra kostnaden för olika frågeplaner för samma fråga. Standardvärdet 0 betyder att ingen fråga har kompilerats ännu. Standardvärdet är 0. Last_query_cost har sessionsomfång.
Låt oss se ett enkelt exempel på hur det fungerar med hjälp av Sakila exempeldatabasen för 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';
Här är resultatet du får när du kör ovanstående fråga:
Med hjälp av statusen kan vi veta vad det kostade att köra en fråga. Om du har några andra förslag låt mig veta. Dessutom, om du vill övervaka i realtid för korrigerande åtgärder och problemlösning bör du överväga SQL Diagnostic Manager för MySQL och MariaDB .