Нотификатор окончания запроса MySQL
Рубрика: Development, MySQL | 6 May 2007, 19:35 |
Vadim Voituk
Думаю любому, кто хоть как-то работает с СУБД MySQL, приходилось выполнять запросы, которые обрабатывают огромные массивы данных и в результате их время выполнения достигает нескольких часов, а иногда и суток.
Чаще всего без предварительных тестов оценить время выполнения такого запроса нереально, а ещё чаще такие тесты проводить некогда.
Потому в какой-то момент я написал небольшой нотификатор, какой уведомляет меня по емайл об окончании выполнения такого запроса:
#!/bin/sh
my_user='my-mysql-user'
my_pswd='my=mysql-passwd'
pid=$1
if [ "$pid" = "" ]
then
echo "Usage: $0 "
exit
fi
echo Waiting for process $pid
qty=`mysqladmin -u$my_user -p$my_pswd processlist | grep $pid | grep -c Query`
while [ $qty -gt 0 ]
do
qty=`mysqladmin -u$my_user -p$my_pswd processlist | grep $pid | grep -c Query`
echo -n "."
sleep 10
done
date | mail -s "MySQL: Connection-Id: $pid DONE" $2
echo "Done"
запускается просто:
./mysql_notifier Connection-Id email
Где
Conection-Id – ID подключения в каком исполняется запрос (можно узнать командой show processlist)
email – Адрес, на который прийдет письмо-уведомление об окончании исполнения.
Если будут вопросы по работе скрипта – пишите, отвечу.
Tweet
Гм, интересно…
А какого рода запросы ты так пускаешь?
У меня всё как-то просто – селектики для вывода страницы, а у тебя, как я посмотрю, целая система с нотификациями… Ух!
Обычно долго отрабатываются запросы для формирования сложных отчетов или статистических выборок за длительные периоды времени.
При этом анализируются порядка 100-200 млн записей, а в некоторых случаях и 400.