Определите медленный запрос без журналов медленных запросов на сервере MySQL

dba.stackexchange https://dba.stackexchange.com/questions/101623

  •  26-09-2020
  •  | 
  •  

Вопрос

Мне интересно, есть ли другой способ проверить наши медленные запросы без регистрации медленных запросов.Предположим, у меня очень загруженный сервер, который не может позволить себе много журналировать для экономии памяти и операций ввода-вывода.Тогда есть ли другой способ проверить, медленный ли у меня запрос?Я знаю, что мы можем выполнить профилирование запроса, но до сих пор не знаю, что именно делать, чтобы определить, какой запрос занимает больше всего времени и памяти.

Только начал администрировать MySQL и не знаю, как с этим справиться.Любое руководство будет высоко оценено.

Это было полезно?

Решение

Если вы вообще не хотите включать журнал медленных запросов, у меня есть предложение.

Вы можете использовать pt-запрос-дайджест в течение интервала времени.

Я предлагал это несколько раз в DBA StackExchange.

Если ты посмотришь на мою Nov 24, 2011 связь, Я предоставил сценарий оболочки, который вы можете запустить с помощью crontab. pt-запрос-дайджест.

ПОПРОБУЙТЕ!!!

Другие советы

Вы можете запустить следующее оператор в цикле в сценарии, который вызывает оператор каждые 10 секунд, например.

mysql -e 'SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST where time>10 and command<>"Sleep"'

Вы можете настроить его, чтобы дать вам более или менее информацию в зависимости от выпуска вашего запроса.

mysql> desc INFORMATION_SCHEMA.PROCESSLIST;
+---------------+---------------------+------+-----+---------+-------+
| Field         | Type                | Null | Key | Default | Extra |
+---------------+---------------------+------+-----+---------+-------+
| ID            | bigint(21) unsigned | NO   |     | 0       |       |
| USER          | varchar(16)         | NO   |     |         |       |
| HOST          | varchar(64)         | NO   |     |         |       |
| DB            | varchar(64)         | YES  |     | NULL    |       |
| COMMAND       | varchar(16)         | NO   |     |         |       |
| TIME          | int(7)              | NO   |     | 0       |       |
| STATE         | varchar(64)         | YES  |     | NULL    |       |
| INFO          | longtext            | YES  |     | NULL    |       |
| TIME_MS       | bigint(21)          | NO   |     | 0       |       |
| ROWS_SENT     | bigint(21) unsigned | NO   |     | 0       |       |
| ROWS_EXAMINED | bigint(21) unsigned | NO   |     | 0       |       |
+---------------+---------------------+------+-----+---------+-------+
11 rows in set (0.00 sec)
.

Для того, чтобы не сохранять тот же запрос много раз, вы можете использовать хеш запроса как уникальный ключ.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top