powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запросы ложат сервер, нужна помощь по оптимизации.
8 сообщений из 8, страница 1 из 1
Запросы ложат сервер, нужна помощь по оптимизации.
    #39372547
monro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую, нужна помощь по оптимизации. Пришел поисковый бот, 40rps положили сервер, нагрузка процессора mysql 700%, LA 500 по top, в slowlog попадают такие запросы:
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT * FROM time WHERE `event_id` = '102042' ORDER BY `time` ASC;
# User@Host: afisha[afisha] @ localhost []
# Thread_id: 418565  Schema: afisha  QC_hit: No
# Query_time: 3.294003  Lock_time: 0.000056  Rows_sent: 24032  Rows_examined: 48064
# Rows_affected: 0
# Full_scan: No  Full_join: No  Tmp_table: No  Tmp_table_on_disk: No
# Filesort: Yes  Filesort_on_disk: No  Merge_passes: 0  Priority_queue: No



Результат анализа запроса:
Код: sql
1.
2.
3.
4.
5.
+----+-------------+----------+------+---------------+--------+---------+-------+-------+-----------------------------+
| id | select_type | table    | type | possible_keys | key    | key_len | ref   | rows  | extra                       |
+----+-------------+----------+------+---------------+--------+---------+-------+-------+-----------------------------+
|  1 | SIMPLE      | time | ref  | event_id        | event_id | 4       | const | 37918 | Using where; Using filesort |
+----+-------------+----------+------+---------------+--------+---------+-------+-------+-----------------------------+


сама таблица на данный момент содержит 550 000 записей:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TABLE `time` (
  `id` int(14) NOT NULL,
  `event_id` int(14) NOT NULL DEFAULT '0',
  `time` int(14) DEFAULT NULL,
  `place` int(11) NOT NULL,
  `month` varchar(8) NOT NULL,
  `city_id` int(11) NOT NULL DEFAULT '0',
  `type` varchar(255) NOT NULL,
  `ticket` varchar(255) NOT NULL,
  `uniques` varchar(32) NOT NULL,
  `price min` int(7) NOT NULL,
  `price max` int(7) NOT NULL
) ENGINE=Aria DEFAULT CHARSET=cp1251;
...
Рейтинг: 0 / 0
Запросы ложат сервер, нужна помощь по оптимизации.
    #39372675
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторRows_sent: 24032
И зачем на клиенте 24к строк? Limit не забыли?

Индекс по event_id & time позволит пропустить сортировку и читать с индекса уже упорядоченное множество.
...
Рейтинг: 0 / 0
Запросы ложат сервер, нужна помощь по оптимизации.
    #39372769
monro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MelkijИ зачем на клиенте 24к строк? Limit не забыли?
Нет, не забыл, надо все сеансы выбрать по фильму. Спасибо. Обратил внимание, оказалось, что выбирается по всем городам, поэтому так много, видимо нужно в запрос добавить ограничение по городу.

MelkijИндекс по event_id & time позволит пропустить сортировку и читать с индекса уже упорядоченное множество.
Спасибо, удалил старый индекс, поставил новый, показывает хороший прирост, смотрю в phpmyadmin: 30861 всего, Запрос занял 0.0007 сек, ранее 0, 5 помоемому занимал
...
Рейтинг: 0 / 0
Запросы ложат сервер, нужна помощь по оптимизации.
    #39372785
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нипанимаю... в EXPLAIN значится индекс, а в DDL его не видать...
...
Рейтинг: 0 / 0
Запросы ложат сервер, нужна помощь по оптимизации.
    #39372801
monro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaНипанимаю... в EXPLAIN значится индекс, а в DDL его не видать...
хз почему версия phpmyadmin 4.6.5.1 не показывает его при экспорте данных из mariadb 10.1.19, у меня на денвере в локалке с индексами экспортирует

Поглядите пожалуйста профи взглядом:
Код: sql
1.
2.
3.
4.
5.
SET timestamp=1482399577;
SELECT time.time FROM event, time WHERE time.time >= '1482354000' AND time.time < '1483695572' AND time.city_id = '59' AND event.info > '2' AND event.id = time.event_id;
# User@Host: afisha[afisha] @ localhost []
# Thread_id: 567398  Schema: afisha  QC_hit: No
# Query_time: 4.896139  Lock_time: 0.000081  Rows_sent: 522  Rows_examined: 60875



Результат запроса:
Код: sql
1.
2.
3.
4.
5.
6.
+----+-------------+----------+-------+------------------+----------+---------+------------+------+------------------------------------+
| id | select_type | table    | type  | possible_keys    | key      | key_len | ref        | rows | extra                              |
+----+-------------+----------+-------+------------------+----------+---------+------------+------+------------------------------------+
|  1 | SIMPLE      | event  | range | PRIMARY,info | info | 4       | NULL       | 1393 | Using index condition              |
|  1 | SIMPLE      | time | ref   | event_id_2         | event_id_2 | 4       | event.id | 249  | Using index condition; Using where |
+----+-------------+----------+-------+------------------+----------+---------+------------+------+------------------------------------+
...
Рейтинг: 0 / 0
Запросы ложат сервер, нужна помощь по оптимизации.
    #39372863
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Индекс по city_id & event_id & time, если вслепую попробовать согласиться с порядком объединения, предложенным планировщиком.
А так надо представлять распределение данных. Может быть city_id & time с вычитыванием time в первую очередь будет селективнее.
...
Рейтинг: 0 / 0
Запросы ложат сервер, нужна помощь по оптимизации.
    #39372902
monro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MelkijИндекс по city_id & event_id & timeСпасибо, так лучше. ХЗ что делать, пока скидываются в slowlog более чем с 5 сек., почти все на сайте кешируется nginx на 30мин, также мемкешед пока не сброшу, но все равно, когда пускаю дикого поискового бота, ложит mysql
...
Рейтинг: 0 / 0
Запросы ложат сервер, нужна помощь по оптимизации.
    #39373061
monro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij, вроде все получилось, осталось только один запрос сделать))
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запросы ложат сервер, нужна помощь по оптимизации.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]