Как регистрировать медленные запросы на виртуальном хостинге MySQL?

У меня есть виртуальный хостинг, где у меня есть мой сайт и база данных MySQL. Я установил скрипт с открытым исходным кодом для статистики (phpMyVisites), и в последнее время он стал работать очень медленно. Он написан с использованием какого-то фреймворка и содержит много PHP-файлов. Я знаю, что для поиска медленных запросов я могу использовать функцию журнала медленных запросов в MySQL. Но на этом виртуальном хостинге я не могу использовать этот метод, потому что не могу изменить свой .cnf. Я не хочу менять свой скрипт статистики на другой и не хочу возиться со всеми файлами этого скрипта, чтобы выяснить, куда поместить диагностический код для регистрации запросов вручную. Я хотел бы сделать это без изменений в PHP-коде.

Итак, мой вопрос:

Как регистрировать медленные запросы в этих кодах?:

  • Не удается изменить my.cnf, чтобы включить журнал медленных запросов
  • Не могу поменять скрипт статистики на другой
  • Не знаю, как пишется scrpt и где выдаются команды mysql
  • Не могу запросить у моего провайдера журнал медленных запросов

Есть ли способ сделать это простым, легким и быстрым способом?


person Tomasz Smykowski    schedule 17.04.2010    source источник
comment
@Col.Shrapnel Я разработчик уже 9 лет, и на этот раз у меня много практики, и я сталкиваюсь с очень узкими проблемами, подобными этой. Я хотел бы быть академическим теоретиком, у которого есть только проблемы, связанные с книгами, но я им не являюсь. Я надеюсь, что вы можете принять участие, чтобы понять мою точку зрения и эту проблему, чтобы выяснить, для чего был задан этот вопрос. Надеюсь, что вы можете помочь, и если нет, я все равно ценю, что вы представили здесь свое мнение о том, что вас злит в людях, задающих узкие вопросы. Надеюсь, вы достигнете личной цели, ответив на вопросы, которые не решаетесь принять.   -  person Tomasz Smykowski    schedule 17.04.2010
comment
Так что если у Вас так много практики, Вы должны знать ответ: Вам нужен выделенный сервер. Это все. И @полковник. Шрапнель имеет право. Ты не хочешь Тебя, но Тебе нужно.   -  person Michał Mech    schedule 17.04.2010
comment
Не могу запросить у моего провайдера журнал медленных запросов. Если мы принимаем что-то еще как должное (просто ради аргумента), почему это? Они могут сказать нет, вы не можете получить это, но что удерживает вас от того, чтобы попросить об этом?   -  person VolkerK    schedule 18.04.2010
comment
@Reynevan Я спрашиваю, как добраться до другого города без бензина, а ты мне говоришь, что я должен купить машину. Большое спасибо за вашу помощь, чем!   -  person Tomasz Smykowski    schedule 18.04.2010
comment
@VolkerK Я дважды спрашивал его и все еще пытаюсь получить от него это, но он не так заинтересован в этом, как я.   -  person Tomasz Smykowski    schedule 18.04.2010
comment
@tomaszs Ответьте сами себе, возможно ли путешествие без газа, если у Вас машина только на бензине. Ответ все тот же: Вы не можете этого сделать.   -  person Michał Mech    schedule 19.04.2010
comment
@Reynevan Да, вы правы - если вы можете путешествовать только на машине - у вас большие проблемы. Я не думаю, что это обсуждение имеет какую-либо цель в этом вопросе. Я понимаю вашу точку зрения и не хочу ее менять. Живи хорошо.   -  person Tomasz Smykowski    schedule 19.04.2010


Ответы (4)


Хм, может быть, сделать функцию, которая проверяет, сколько времени потребовалось SQL-запросу, прежде чем он вернул значение? Затем, если он превышает указанную сумму, зарегистрируйте его... например, в php я бы сделал это так

$before = time();
//run your query
$after = time();
$difference = $after - $before
if($difference > 5000)
   //Log query

Это эмулирует регистратор запросов slog, я не думаю, что есть способ включить его на виртуальном хостинге.

Надеюсь это поможет :)

person studioromeo    schedule 17.04.2010
comment
я знаю, что это не соответствует тому, что вы сказали в пункте 3, но это лучший ответ, о котором я мог подумать: \ - person studioromeo; 17.04.2010
comment
Ответ не могу сделать, это все еще ответ;) Спасибо - person Tomasz Smykowski; 17.04.2010

Я быстро просмотрел phpMyVisites. В config.inc.php я нашел следующее:

// Other
if(!defined('DEBUG')) define('DEBUG', false);
define('DEFAULT_ACTION', false);

error_reporting( E_ALL );

if(DEBUG)
{
    define('PRINT_TIME', false);
    define('PRINT_QUERY_COUNT', true);
    define('SAVE_DB_LOG', true);
    define('PRINT_QUERY', true);
} 

Я подозреваю, что SAVE_DB_LOG может быть хорошей отправной точкой, поэтому я попытаюсь включить режим DEBUG.

person Syntax Error    schedule 17.04.2010

Является ли перенос дампа данных в локальную тестовую систему, где вы можете активировать журнал медленных запросов, опцией?

person VolkerK    schedule 17.04.2010
comment
Да, это решение, но оно требует времени. - person Tomasz Smykowski; 18.04.2010
comment
Ну, ты сказал, что заинтересован в решении проблемы. И в качестве бонуса вы также одновременно протестируете свою стратегию резервного копирования, теперь это выгодная сделка ;-) - person VolkerK; 18.04.2010

Вы можете написать скрипт, который отслеживает список процессов mysql. пока работает ваш медленный скрипт.

person elias    schedule 17.04.2010