Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL - Obtenez le coût de la dernière requête en utilisant SHOW STATUS LIKE 'Last_Query_Cost'

Lors du récent webcast que j'ai fait pour Idera, j'ai eu le plaisir de montrer pas mal de nouveaux trucs et astuces. L'un des conseils les plus appréciés concernait la façon d'obtenir le coût de la dernière requête dans MySQL à l'aide de la commande SHOW STATUS LIKE 'Last_Query_Cost'. Découvrons-le aujourd'hui.

Si vous utilisez SQL Server, il est très facile d'obtenir le coût de la requête en utilisant un plan d'exécution graphique, un plan d'exécution XL ou en utilisant le cache de plan DMV. Cependant, si vous utilisez MySQL, il est très difficile de déterminer le coût de la dernière requête. J'ai souvent vu lors de mon Vérification complète de l'état des performances de la base de données que les administrateurs de bases de données souhaitent ajuster leurs requêtes MySQL, mais qu'ils ne savent pas comment mesurer les performances de leurs requêtes.

Si vous utilisez MySQL ou MariaDB, vous pouvez toujours mesurer les performances de votre requête en termes de coût en exécutant la commande suivante.

Afficher l'état

SHOW STATUS LIKE 'Last_Query_Cost';

Voici la documentation officielle de la commande. Le coût total de la dernière requête compilée tel que calculé par l'optimiseur de requête. Ceci est utile pour comparer le coût de différents plans de requête pour la même requête. La valeur par défaut de 0 signifie qu'aucune requête n'a encore été compilée. La valeur par défaut est 0. Last_query_cost a une portée de session.

Voyons un exemple simple de son fonctionnement à l'aide de la base de données d'exemple Sakila pour 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';

Voici le résultat que vous obtenez lorsque vous exécutez la requête ci-dessus :

Avec l'aide du statut, nous pouvons savoir quel était le coût impliqué dans l'exécution de la requête. Si vous avez d'autres suggestions faites le moi savoir. De plus, si vous souhaitez surveiller en temps réel les actions correctives et la résolution des problèmes, vous devez envisager SQL Diagnostic Manager pour MySQL et MariaDB .