Долгий запрос в MySQL/InnoDB — Как ускорить WooCommerce?

День добрый!

Имеется интернет-магазин > 3 миллионов товаров.
Очень долго работает поиск по товарам, и вообще сам каталог.

Улучшение сервера (ОЗУ) и оптимизация my.cnf результата не дали, вернее настройка my.cnf результат дала (сервер перестал отдавать 504,502 ошибки, и в целом кешируются запросы, т.е то что недавно запрашивалось - искалось открывается быстро, а что по новой - нет)
Все страницы летают, тормозит сам WooCommerce - очень долго грузятся.
Тормозит все MySQL, вот такие вот запросы, от 14-17 секунд

SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id ) WHERE 1=1  AND ( 
  ( wp_postmeta.meta_key = '_visibility' AND wp_postmeta.meta_value IN ('visible','catalog') )
) AND wp_posts.post_type = 'product' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') GROUP BY wp_posts.ID ORDER BY wp_posts.menu_order ASC, wp_posts.post_title ASC LIMIT 0, 10;


Как можно его оптимизировать?
Спасибо!

a039c04df3c8477c8fd0acb7a611222a.jpeg
  • Вопрос задан
  • 859 просмотров
Пригласить эксперта
Ответы на вопрос 1
MaxDukov
@MaxDukov
впишусь в проект как SRE/DevOps.
в данном конкретном случе, сдается мне, Вам все портит "SQL_CALC_FOUND_ROWS". Из-за него читаются все ~2M строк. Вам точно надо знать. сколько строк в Вашей выборке?
либо правьте код, либо добавляйте памяти, чтобы кэш не чистился часто. Или переходите на SSD. Хотя с такими таблицами...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы