Профиль Хранимые процедуры в MySQL - PullRequest
3 голосов
/ 27 сентября 2010

Я работаю с MySQL и использую хранимые процедуры.У меня есть инструмент профилирования, который я использую для профилирования кода, который связывается с MySQL через хранимые процедуры, и мне было интересно, есть ли инструмент или возможность в клиенте MySQL для профилирования выполнения хранимых процедур.Я имею в виду то, что похоже на выполнение запросов с включенным profiling.Я использую MySQL 5.0.41 на Windows XP.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 25 октября 2018

Существует замечательная подробная статья о таком профилировании: http://mablomy.blogspot.com/2015/03/profiling-stored-procedures-in-mysql-57.html

Начиная с MySQL 5.7, вы можете использовать performance_schema для получения информации о продолжительности каждого оператора в хранимой процедуре.Просто:

1) Активируйте профилирование (используйте «NO», если хотите отключить его)

UPDATE performance_schema.setup_consumers SET ENABLED="YES" 
       WHERE NAME = "events_statements_history_long"; 

2) Запустите процедуру

CALL test('with parameters', '{"if": "needed"}');

3) Запросите схему производительности, чтобы получить общую информацию о событии

SELECT event_id,sql_text, 
          CONCAT(TIMER_WAIT/1000000000,"ms") AS time 
             FROM performance_schema.events_statements_history_long 
   WHERE event_name="statement/sql/call_procedure";

|event_id |sql_text |время |

| 2432 |CALL test (...) |1726.4098ms |

4) Получить подробную информацию о событии, которое вы хотите профилировать

SELECT EVENT_NAME, SQL_TEXT,   
    CONCAT(TIMER_WAIT/1000000000,"ms") AS time   
 FROM performance_schema.events_statements_history_long   
 WHERE nesting_event_id=2432 ORDER BY event_id;   

|EVENT_NAME |SQL_TEXT |время |

|заявление / sp / stmt |... 1 запрос процедуры ... |4.6718мс |

|заявление / sp / stmt |... еще один запрос процедуры ... |4.6718мс |

|заявление / sp / stmt |... еще один ... ... |4.6718ms |

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

Я не знаю ни одного инструмента, который превратил бы этот набор результатов в KCachegrindдружественный файл или около того.

Обратите внимание, что его не следует активировать на производственном сервере (это может быть связано с проблемой производительности, увеличением размера данных, и, поскольку performance_schema. events_statements_history_long содержит значения параметров процедуры, тогда онможет быть проблема безопасности [если параметром процедуры является, например, конечный адрес электронной почты пользователя или пароль])

0 голосов
/ 12 октября 2012

Вы можете включить медленное ведение журнала запросов в MySQL.

Взгляните на этот другой ТАК вопрос:

MYSQL Slow Query

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

Подробнее см. Здесь:

http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_long_query_time

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...