Нагрузка на базу. 2млн записей в rot_search_queries

Post Reply
Nikso
Posts: 590
Joined: Tue Mar 05, 2013 3:59 am

Нагрузка на базу. 2млн записей в rot_search_queries

Post by Nikso »

Добавили в базу пару миллионов фраз. Сервер опух и упал

Админы сказали копятся запросы к базе
Падает потому-что запрос неоптимизирован


mysql> explain SELECT `search_query` , `gal_id`, SUM(hits) as hits, items_found, max(date) as date FROM rot_search_queries as rs WHERE 1 = 1 GROUP BY rs.search_query, rs.gal_id ORDER BY rand() LIMIT 0, 30 ;
+----+-------------+-------+------------+------+---------------+------+---------+------+---------+----------+---------------------------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-------+------------+------+---------------+------+---------+------+---------+----------+---------------------------------+
| 1 | SIMPLE | rs | NULL | ALL | NULL | NULL | NULL | NULL | 2526784 | 100.00 | Using temporary; Using filesort |
+----+-------------+-------+------------+------+---------------+------+---------+------+---------+----------+---------------------------------+
1 row in set, 1 warning (0.01 sec)

Таблица в 2.5 миллиона записей сканируется полностью , чтобы выбрать 30 случайных строк . Это и даёт большую нагрузку на базу , под каждый такой запрос выделяется памяти в размера таблицы (500 МБ) , 100 таких запросов 50ГБ оперативки съедают и база падает.

Примерно так.
Сфинск стоит и Sphinx Search Index и Sphinx Search Log Index

Что делать и кто виноват?
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: Нагрузка на базу. 2млн записей в rot_search_queries

Post by admin »

сфинкс - это поиск по базе кейвордов, он тут никак не поможет

админ все верно говорит
у вас 2.5М записей из которых надо рендомно выбрать 30
мускл в этом случае перелопачивает всю базу

как я понимаю вы хотите засунуть много кейвордов и выводить на разных страницах каждый раз разное?
Don't forget to run script update
Nikso
Posts: 590
Joined: Tue Mar 05, 2013 3:59 am

Re: Нагрузка на базу. 2млн записей в rot_search_queries

Post by Nikso »

Есть в одном шаблоне <thumb search_log=all num=1-20 order=random skip_search_log=true>
если без него то все пройдет?

в другом шаблоне по дате вывод
<thumb search_log=all num=1-1000 order=date skip_search_log=true>
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: Нагрузка на базу. 2млн записей в rot_search_queries

Post by admin »

конкретно тут добавляет

order=random

вопрос в том насколько вы хотите это юзать
если без рендома подходит то можно убрать и сразу пропадет нагрузка

если рендом надо то для такой большой базы надо писать какой-то workaround что б убрать нагрузку
Don't forget to run script update
Nikso
Posts: 590
Joined: Tue Mar 05, 2013 3:59 am

Re: Нагрузка на базу. 2млн записей в rot_search_queries

Post by Nikso »

admin wrote: Wed Aug 04, 2021 6:52 am если рендом надо то для такой большой базы надо писать какой-то workaround что б убрать нагрузку
можно поподробее? Выбирать из базы по крону N строк, кешировать и тут выводить?
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: Нагрузка на базу. 2млн записей в rot_search_queries

Post by admin »

мне надо думать как в скрипте дописать обработку рендома для большой базы поисков как в вашем случае
Don't forget to run script update
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: Нагрузка на базу. 2млн записей в rot_search_queries

Post by admin »

сейчас такой фичи нет
ее надо дописывать
если вам это надо - допишем, но это ессно занимает какое-то время
если не надо - дописывать не будем
Don't forget to run script update
Nikso
Posts: 590
Joined: Tue Mar 05, 2013 3:59 am

Re: Нагрузка на базу. 2млн записей в rot_search_queries

Post by Nikso »

Надо конечно
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: Нагрузка на базу. 2млн записей в rot_search_queries

Post by admin »

залил в ап, тестировал как

<thumb search_log=all num=1-20 order=easy_random skip_search_log=true>
<!--SEARCH_QUERY--> <br>

</thumb>
Don't forget to run script update
Post Reply