По време на скорошното уеб излъчване, което направих за Idera, имах удоволствието да покажа доста нови трикове и съвети. Един от най-ценените съвети беше как да получите Last Query Cost в MySQL с помощта на командата SHOW STATUS LIKE ‘Last_Query_Cost’. Нека научим за това днес.
Ако използвате SQL Server, е много лесно да получите цената на заявката, като използвате или графичен план за изпълнение, XL план за изпълнение или използване на планов кеш DMV. Въпреки това, ако използвате MySQL, е много трудно да разберете цената на последната заявка. Често съм виждал по време на моята изчерпателна проверка на ефективността на базата данни че DBA искат да настроят своите MySQL заявки, но нямат представа как да измерват ефективността на своите заявки.
Ако използвате MySQL или MariaDB, винаги можете да измерите ефективността на вашата заявка по отношение на цената, като изпълните следната команда.
Показване на състоянието
ПОКАЗВАНЕ НА СТАТУС КАТО 'Last_Query_Cost';
Ето официалната документация за командата. Общата цена на последната компилирана заявка, изчислена от оптимизатора на заявки. Това е полезно за сравняване на цената на различни планове за заявка за една и съща заявка. Стойността по подразбиране 0 означава, че все още няма компилирана заявка. Стойността по подразбиране е 0. Last_query_cost има обхват на сесията.
Нека видим прост пример за това как работи с помощта на примерната база данни на Sakila за MySQL .
ИЗПОЛЗВАЙТЕ sakila;ИЗБЕРЕТЕ *ОТ филм FINNER JOIN film_actor fa ON f.film_id =fa.film_idINNER JOIN film_category fc ON fc.film_id =fa.film_idWHERE f.film_id =10; ПОКАЖЕТЕ СТАТУС КАТО 'Preryy_C';>Ето резултата, който получавате, когато изпълните горната заявка:
С помощта на състоянието можем да разберем каква е цената на изпълнението на заявката. Ако имате други предложения, уведомете ме. Освен това, ако искате да наблюдавате в реално време за коригиращи действия и разрешаване на проблеми, трябва да помислите за SQL Diagnostic Manager за MySQL и MariaDB .