Нагрузка на базу. 2млн записей в rot_search_queries
Posted: Wed Aug 04, 2021 6:23 am
Добавили в базу пару миллионов фраз. Сервер опух и упал
Админы сказали копятся запросы к базе
Что делать и кто виноват?
Админы сказали копятся запросы к базе
Сфинск стоит и Sphinx Search Index и Sphinx Search Log IndexПадает потому-что запрос неоптимизирован
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ГБ оперативки съедают и база падает.
Примерно так.
Что делать и кто виноват?