drupal + views = медленный mysql
Здравствуйте!
проанализировал работу сайта за ночь всплыли вот такие неприятности:
в slow_log попало почти 400 запросов со временем запроса, большем 1 секунды.
натравил на лог парсер
результат в конце страницы.
Получается, 3 запроса выполняются очень долго и часто, есть ли способ их оптимизировать?
1. запрос - стандартный views taxonomy_term для страницы taxonomy/term/%
среднее время запроса - 2.5 секунды
количество строк для анализа - 170к - 250к
По моему, не самый удачный запрос select * from node where vid in (...) .
И как к этому запросу добавить SQL_NO_CACHE ?
Самый тупой запрос - листалка, пока даже не знаю, как это можно оптимизировать.
2. запрос - как я понял подсчет числа нод определенного термина - это pager считает их?
среднее время запроса - 2.4 секунды
Получается, при плохом раскладе страница может генериться 2.5 (заголовки нод) + 2.4 (отрисовка пейджера) = 5 секунд??
ну, при хорошем раскладе, конечно этот запрос попадет в query_cache, только вот он засирается быстро другими запросами.
нет ли какого модуля в друпале, который кеширует статистику нода-термин в базу, пусть даже по крону, все равно?
3. запрос - views вида content/%year/%month/%day - вывод нод за дату.
среднее время запроса - 1.3 секунды.
делается проход на 340к нод - жесть.
честно говоря, мне больше нравится запрос вида
created between UNIX_TIMESTAMP('2003-08-18') and UNIX_TIMESTAMP('2003-08-19')