sql >> Database >  >> RDS >> Mysql

MySQL - Krijg de kosten van de laatste zoekopdracht met SHOW STATUS LIKE 'Last_Query_Cost'

Tijdens de recente webcast die ik voor Idera deed, had ik het genoegen om heel wat nieuwe trucs en tips te laten zien. Een van de meest gewaardeerde tips was hoe je Last Query Cost in MySQL kunt krijgen met het commando SHOW STATUS LIKE 'Last_Query_Cost'. Laten we er vandaag meer over leren.

Als u SQL Server gebruikt, is het heel eenvoudig om de kosten van de query te achterhalen door ofwel een grafisch uitvoeringsplan, een XL-uitvoeringsplan of plancache DMV te gebruiken. Als u echter MySQL gebruikt, is het erg moeilijk om de kosten van de laatste zoekopdracht te achterhalen. Ik heb vaak gezien tijdens mijn Uitgebreide statuscontrole voor databaseprestaties dat DBA's hun MySQL-query's willen afstemmen, maar geen idee hebben hoe ze de prestaties van hun query's moeten meten.

Als u MySQL of MariaDB gebruikt, kunt u altijd de prestaties van uw zoekopdracht meten in termen van kosten door de volgende opdracht uit te voeren.

Toon status

SHOW STATUS LIKE 'Last_Query_Cost';

Hier is de officiële documentatie voor het commando. De totale kosten van de laatst gecompileerde query zoals berekend door de query-optimizer. Dit is handig om de kosten van verschillende queryplannen voor dezelfde query te vergelijken. De standaardwaarde 0 betekent dat er nog geen query is samengesteld. De standaardwaarde is 0. Last_query_cost heeft een sessiebereik.

Laat ons een eenvoudig voorbeeld zien van hoe het werkt met behulp van de Sakila-voorbeelddatabase voor 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';

Dit is het resultaat dat u krijgt als u de bovenstaande query uitvoert:

Met behulp van de status kunnen we weten wat de kosten waren voor het uitvoeren van de query. Als je nog andere suggesties hebt, laat het me weten. Als u bovendien in realtime wilt controleren op corrigerende maatregelen en probleemoplossing, kunt u overwegen SQL Diagnostic Manager voor MySQL en MariaDB .


  1. Wat is de beste manier om database-inserts bulksgewijs vanuit c# in te voeren?

  2. Openshift en net-ssh incompatibiliteit? (2.9.3-beta1 versus 2.9.2)

  3. Wat moet ik kiezen - JSON of SQLite?

  4. Jenkins gebruiken met Kubernetes AWS, deel 1