Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запросы ложат сервер, нужна помощь по оптимизации. / 8 сообщений из 8, страница 1 из 1
22.12.2016, 08:56
    #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
22.12.2016, 11:32
    #39372675
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы ложат сервер, нужна помощь по оптимизации.
авторRows_sent: 24032
И зачем на клиенте 24к строк? Limit не забыли?

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

MelkijИндекс по event_id & time позволит пропустить сортировку и читать с индекса уже упорядоченное множество.
Спасибо, удалил старый индекс, поставил новый, показывает хороший прирост, смотрю в phpmyadmin: 30861 всего, Запрос занял 0.0007 сек, ранее 0, 5 помоемому занимал
...
Рейтинг: 0 / 0
22.12.2016, 12:43
    #39372785
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы ложат сервер, нужна помощь по оптимизации.
Нипанимаю... в EXPLAIN значится индекс, а в DDL его не видать...
...
Рейтинг: 0 / 0
22.12.2016, 12:54
    #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
22.12.2016, 13:24
    #39372863
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы ложат сервер, нужна помощь по оптимизации.
Индекс по city_id & event_id & time, если вслепую попробовать согласиться с порядком объединения, предложенным планировщиком.
А так надо представлять распределение данных. Может быть city_id & time с вычитыванием time в первую очередь будет селективнее.
...
Рейтинг: 0 / 0
22.12.2016, 13:45
    #39372902
monro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы ложат сервер, нужна помощь по оптимизации.
MelkijИндекс по city_id & event_id & timeСпасибо, так лучше. ХЗ что делать, пока скидываются в slowlog более чем с 5 сек., почти все на сайте кешируется nginx на 30мин, также мемкешед пока не сброшу, но все равно, когда пускаю дикого поискового бота, ложит mysql
...
Рейтинг: 0 / 0
22.12.2016, 15:40
    #39373061
monro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы ложат сервер, нужна помощь по оптимизации.
Melkij, вроде все получилось, осталось только один запрос сделать))
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запросы ложат сервер, нужна помощь по оптимизации. / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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