fender
Новичок
MySQL - статистика нагрузки
Пришло письмо от админов валуя:
1) Как собрать такую статистику самому (Total*, Average* за период)
2) Как так происходит что этот запрос который в консольном клиенте выполнятся за 0.01 сек., выполняется 25 секунд?
Может, была пиковая нагрузка или медленный коннект с сервером БД и тормозило все не только у меня, а мой запрос случайно попался на глаза? Скрипту 5 лет в обед, раньше что-то никому не мешало... ))
Запрос-то ведь действительно простой - ни объединений, ни сортировок, строк всего 26 тысяч...
Что-то мне подсказывает, что я тут не виноват, а админы гонят.
И меры не самые красивые, но об этом я им отдельно напишу
Вот кусок кода где этот запрос выполняется:
Может медленно работает mysql_num_rows, но я сомневаюсь.
А еще порадовала фраза "Не очень понятно зачем вы используете базу, если вы выбираете из неё все значения". Жгут!!! Я бы еще понял если сказали "все строки"... ... но в этом случае это тоже мое личное дело )))
Пришло письмо от админов валуя:
Вопроса два:Работа вашей базы вызывает недопустимую нагрузку на сервер баз
данных. Ниже резюме по сегодняшним медленным запросам:
===================================
Total Query_time: 84.3333333333333 min
Average Query time: 25.5555555555556 sec
Total Lock_time: 6 sec
Average Lock time: 0.0303030303030303 sec
Total Rows_sent: 5162416
Average Rows sent by query: 26072.8080808081
Total Rows_examined: 5162416
Average Rows examined by query: 26072.8080808081
Rows_sent/Rows_examined: 100 %
Total Query: 198
===================================
В основном медленные запросы составляет всего один запрос:
# Time: 060315 18:54:20
# User@Host: example @ v43.valuehost.ru
# Query_time: 16 Lock_time: 0 Rows_sent: 26555 Rows_examined: 26555
select * from gb;
Не очень понятно зачем вы используете базу, если вы выбираете из неё все
значения.
Для включения базы вам следует убрать с сайта все конекты к ней. После этого
мы включим доступ к базе.
Пожалуйста пересмотрите способ работы с базой.
1) Как собрать такую статистику самому (Total*, Average* за период)
2) Как так происходит что этот запрос который в консольном клиенте выполнятся за 0.01 сек., выполняется 25 секунд?
Код:
mysql> explain select * from gb;
+-------+------+---------------+------+---------+------+-------+-------+
| table | type | possible_keys | key | key_len | ref | rows | Extra |
+-------+------+---------------+------+---------+------+-------+-------+
| gb | ALL | NULL | NULL | NULL | NULL | 26562 | |
+-------+------+---------------+------+---------+------+-------+-------+
1 row in set (0.01 sec)
Запрос-то ведь действительно простой - ни объединений, ни сортировок, строк всего 26 тысяч...
Что-то мне подсказывает, что я тут не виноват, а админы гонят.
И меры не самые красивые, но об этом я им отдельно напишу
Вот кусок кода где этот запрос выполняется:
PHP:
//узнаю кол-во записей для постраничного вывода
//про count() 5 лет назад я наверное не знал
$num = mysql_num_rows(mysql_query("select * from gb"));
$pages = ceil($num/$num_per_page);
А еще порадовала фраза "Не очень понятно зачем вы используете базу, если вы выбираете из неё все значения". Жгут!!! Я бы еще понял если сказали "все строки"... ... но в этом случае это тоже мое личное дело )))