MySQL Profiler - Нет записей в выставочном профиле - PullRequest
3 голосов
/ 25 января 2011

Я использую MySQL, чтобы помочь с диагностикой некоторых проблем MySQL, которые я исследую. Однако, когда я выполняю команду show profiles, я не получаю никаких результатов.

Вот как я его использую:

set profiling=1 --Enable profiling

-- Run some selects / inserts etc
select count(*) from mytable
insert into mytable (mydata) values ('wibble')

show profiles

Я ожидал, что команда show profiles выдаст мне данные профиля для операций выбора и т. Д., Которые я выполнил после включения профилирования (согласно информации с этой страницы разработчика MySQL ), однако все, что я получаю, пустой набор результатов. Я не вижу никаких ошибок при включении / отключении профилирования и не вижу никаких ошибок при попытке просмотра профилей.

Следующее может иметь или не иметь отношение:

  1. Команды были введены через phpMyAdmin
  2. Я использую MySQL 5.0.77
  3. select * from information_schema.profiling не возвращает результатов

Ответы [ 3 ]

7 голосов
/ 27 мая 2012

Проверено, это работает.

Вы можете сделать это из PhpMyAdmin, если можете использовать TRANSACTION (в зависимости от ваших механизмов хранения?)

Попробуйте это:

START TRANSACTION;

set profiling=1; --Enable profiling

-- Run some selects / inserts etc
select count(*) from mytable;
insert into mytable (mydata) values ('wibble');

show profiles;

COMMIT; --or rollback

Обратите внимание, что я также добавляю точку с запятой после каждого запроса !

4 голосов
/ 26 января 2011

В ответ на мой собственный вопрос ...

Кажется, что встроенные утилиты профилирования MySQL, описанные выше, работают на основе сеанса MySQL.Кажется, phpMyAdmin создает новое соединение каждый раз, когда выполняется команда.Таким образом, команда для включения профилирования и последующего выбора отключается друг от друга.

Это подтверждается подключением к серверу MySQL через SSH и выполнением тех же команд.В этой конфигурации работает профилирование.

Однако оно профилирует только команды, выполненные в этом сеансе.Это означает, что любые другие запросы, выполняемые к БД из другого источника (например, веб-приложения), не включаются в результат профиля.

Я не нашел способа профилировать все запросы к БД независимо от источника(то есть, как работает профилировщик MSSQL).Поэтому на данный момент я должен положиться на установку значения конфигурации журнала в my.cnf, а затем выполнить зарегистрированные запросы вручную в сеансе SSH:

log=/var/log/mysqldquery.log

Не идеальное решение, так как это несколько трудоемко, но это работает.

0 голосов
/ 20 февраля 2014

Хотя вышеперечисленное может работать, оно все же несколько опасно.Вы должны иметь в виду, что если вы используете репликацию и / или если в этих журналах запросов есть обновления, вы будете изменять свои наборы данных.Используйте с осторожностью.

...