Page 1 of 2
Медленный запрос (видимо в ротаторе)
Posted: Thu Dec 02, 2021 11:56 am
by anton.sivanov2
Добрый день.
Мы с вами пытались разобраться с медленным запросом
тут
Сейчас есть схожая ситуация. Есть запрос:
Code: Select all
SELECT gt.tag_id, t.tag_name as tag_name, count(*) as hits FROM rot_gal2tag AS gt left join rot_tags as t on t.tag_id = gt.tag_id WHERE t.status = 'active' and gt.site_id = 59 GROUP BY gt.tag_id;
и он работает 7 секунд.
Code: Select all
SELECT gt.tag_id, t.tag_name as tag_name, count(*) as hits FROM rot_gal2tag AS gt force index(tag_id) left join rot_tags as t on t.tag_id = gt.tag_id WHERE t.status = 'active' and gt.site_id = 59 GROUP BY gt.tag_id;
с указанием же индекса работает великолепно (0,07)
Почему мускуль игнорирует имеющийся индекс - идей нет(
Re: Медленный запрос (видимо в ротаторе)
Posted: Thu Dec 02, 2021 3:35 pm
by admin
Добрый
а попробуйте перевести в myisam для теста
Re: Медленный запрос (видимо в ротаторе)
Posted: Mon Dec 06, 2021 12:08 pm
by anton.sivanov2
ничего не меняется
Re: Медленный запрос (видимо в ротаторе)
Posted: Mon Dec 06, 2021 1:25 pm
by admin
в гугле есть кучка вариантов ответов почему мускл может игнорировать индекс
я конечно не знаю почему в конкретно вашем случае это происходит
для решения ситуация я просто добавил в запрос форсирование инедкса, посмотрим на последствия )
Re: Медленный запрос (видимо в ротаторе)
Posted: Wed Jan 12, 2022 6:45 pm
by anton.sivanov2
Code: Select all
SELECT gs.gallery_id, gs.thumb_id, gi.sponsor_id, gi.content_count, gi.content_type, gs.total_shows, gs.total_clicks, gs.total_ctr, gt.thumb_url, gd.*, gi.content_count, gi.crop_profile_id, gs.activation_date, gi.added_date, gi.duration, gi.url, gi.gallery_total_shows, gi.sponsor_id, gi.source_url, gi.custom_gallery FROM rot_gallery_stats34 as gs FORCE INDEX (group_id) JOIN rot_gallery_info as gi on gi.gallery_id = gs.gallery_id
JOIN rot_gallery_data32 as gd on gd.gallery_id = gs.gallery_id
JOIN rot_thumbs as gt on gt.thumb_id = gs.thumb_id
WHERE 1 = 1 AND gi.gallery_status = 'active' AND gi.gallery_type = 0 and gs.best_thumb = 'yes' and gs.group_id IN (170) ORDER BY tested_thumb DESC, gs.total_ctr DESC LIMIT 0, 80
сейчас запрос безбожно тупит. Что можно сделать?
Re: Медленный запрос (видимо в ротаторе)
Posted: Wed Jan 12, 2022 6:56 pm
by admin
апдейт не помогает?
что говорит explain в мускле?
Re: Медленный запрос (видимо в ротаторе)
Posted: Wed Jan 12, 2022 7:11 pm
by anton.sivanov2
обновили на свежую версию - не помогло.
Re: Медленный запрос (видимо в ротаторе)
Posted: Wed Jan 12, 2022 7:12 pm
by anton.sivanov2
Code: Select all
+----+-------------+-------+------------+--------+------------------------------------------------+--------------+---------+------------------------+------+----------+----------------------------------------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-------+------------+--------+------------------------------------------------+--------------+---------+------------------------+------+----------+----------------------------------------------+
| 1 | SIMPLE | gi | NULL | ref | PRIMARY,sponsor_id,gallery_type,gallery_status | gallery_type | 1 | const | 1 | 100.00 | Using where; Using temporary; Using filesort |
| 1 | SIMPLE | gd | NULL | eq_ref | PRIMARY | PRIMARY | 4 | adamporn.gi.gallery_id | 1 | 100.00 | NULL |
| 1 | SIMPLE | gs | NULL | ref | group_id | group_id | 3 | const,const | 692 | 0.01 | Using index condition |
| 1 | SIMPLE | gt | NULL | eq_ref | PRIMARY | PRIMARY | 4 | adamporn.gs.thumb_id | 1 | 100.00 | NULL |
+----+-------------+-------+------------+--------+------------------------------------------------+--------------+---------+------------------------+------+----------+----------------------------------------------+
Re: Медленный запрос (видимо в ротаторе)
Posted: Thu Jan 13, 2022 4:25 am
by admin
так тут же идеальный explain
692 строки перебора это копейки
думаю сервак просто перегружен
Re: Медленный запрос (видимо в ротаторе)
Posted: Thu Jan 13, 2022 4:35 am
by anton.sivanov2
такое происходит и после ребута. запросы встают в очередь (там несколько сиджеев). по итогу набирается около 1000 запросов, которые не могут исполнится. при этом кол-во строк более 35К в explain я не видел. Но запрос выполняется очень медленно.