Медленные запросы в базу данных

F

Feetrus9836

Шопмейкер
#1
добрый день
хостинг начал ругатся на медленные запросы в базу данных
пример запросов
это поправимо? может кто знает как исправить запросы? может кто за деньги исправит это? на сайте 12 тыс товаров

SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_category_path cp LEFT JOIN oc_product_to_category p2c ON (cp.category_id = p2c.category_id) LEFT JOIN oc_product p ON (p2c.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p2s.store_id = '0' AND cp.path_id = '15'



SELECT MIN(p.price) AS `min`, MAX(p.price) AS `max` FROM oc_product p LEFT JOIN oc_product_to_category p2c ON (p.product_id = p2c.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_category_path cp ON (p2c.category_id = cp.category_id) WHERE p.status = '1' AND p.price > '0' AND p2s.store_id = '0' AND p.date_available <= '2021-08-02' AND cp.path_id = '156'




SELECT * FROM (SELECT p.product_id, p.sort_order, p.model, pd.name, p.quantity, p.price,p.date_added,(SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM oc_category_path cp LEFT JOIN oc_product_to_category p2c ON (cp.category_id = p2c.category_id) LEFT JOIN oc_product p ON (p2c.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND cp.path_id = '15' GROUP BY p.product_id ORDER BY (p.price>0) DESC,(p.image>'') DESC,(p.quantity>0) DESC,p.date_added DESC, p.sort_order DESC, LCASE(pd.name) DESC LIMIT 0,15) p ORDER BY p.date_added DESC, p.sort_order DESC, LCASE(p.name) DESC LIMIT 0,5
 
Baco

Baco

architect
#2
Доброго времени, судя по всему, у вас стоит не брокарт, раз уж такие запросы появились. Оптимизировать можно, но тут структурно и масштабней смотреть надо, например 2-й "медленный запрос", предположительно вызван фильтром (какй из множества??). ставить на кэш не пробовали ? 12К это уже солидный маркет, почти АТБ, он-лайн магазином назвать сложно) так что личный совет - смотрите в сторону кешировщика. если нужно помочь с оптимизацией - напишите в ЛС, как минимум проанализирую ситуацию, чтобы дать ответ по решению.
 
S

SlaSoft

Maestro
#3
отключить - подсчет товаров в категории

2-й фильтр по цене, возможно что в категории много товаров
 
OP
F

Feetrus9836

Шопмейкер
Thread Starter #4
если кому интересно, человека выбрал для работы и он дал такой ответ:

Я так понял что там был ряд проблем,
1. не совсем удачный шаблон по оптимизации нагрузки на сервер для такого количества товаров
2. некоторые модули которые постоянно обращались к серверу, например Валюта плюс

Если по сути, то я профилировал нагрузку, которую создаёт ваш проект на хостинг и устранял / оптимизировал эти места. В основном, как обычно, работал с базой данных и ускорял запросы, с помощью которых опенкарт получает данные из базы, необходимые ему для формирование страниц. Структуру категорий, информацию о товарах и прочее. Так же устранил ряд типовых проблем, которые есть в опенкарт из коробки и мешают ему работать быстро. Ну и чуть настроил пхп в панели управления
 
ALarik

ALarik

expert
#5
Здравствуй.
да, это стандартный подход при подобного рода задачах, сперва профайлером снимаешь нагрузки, определяешь "узкое горлышко" и уже работаешь с ним, @SlaSoft предложил сразу проверенные методы, но тут все индивидуально и не видя кода, вaши ответы не несут конструктива, так как придёт новый пользователь и прочитав сообщение, полезет к вам в личку, узнать контакты мастера по починке, а у нас форум - для решения задач, а не для рекламы специалистов, уж сорян за цинизм.
 
Останнє редагування модератором:
OP
F

Feetrus9836

Шопмейкер
Thread Starter #6
Здравствуй.
да, это стандартный подход при подобного рода задачах, сперва профайлером снимаешь нагрузки, определяешь "узкое горлышко" и уже работаешь с ним, @SlaSoft предложил сразу проверенные методы, но тут все индивидуально и не видя кода, выши ответы не несут конструктива, так как придёт новый пользователь и прочитав сообщение, полезет к вам в личку, узнать контакты мастера по починке, а у нас форум - для решения задач, а не для рекламы специалистов, уж сорян за цинизм.
можете удалить эту тему, что бы не было подобного. Не я сам делал, поэтому не могу дать решение здесь.
 
S

SlaSoft

Maestro
#7
ответ спеца очень и очень

Разберем?


о я профилировал нагрузку, которую создаёт ваш проект на хостинг и устранял / оптимизировал эти места.
Это понятно
Не понятно - устранял / оптимизировал - Не понятно что оптимихировал

Структуру категорий, информацию о товарах и прочее.
Структура категорий? Причем здесь оптимизация запросов
информацию о товарах ? Хм, ну ладно и то сомнительно

не совсем удачный шаблон по оптимизации нагрузки на сервер
Если это не аля журнал
Ну и чуть настроил пхп в панели управления
Это как? А так можно? :)
 
Baco

Baco

architect
#8
Слав, главное что получили результат ожидаемый, остальное - пыль в глаза, я часто встречал таких парней, которые заливают по типу:
Реализовали сложный алгоритм по оптимизации запросов для модели товара, что ускорило... бла-бла-бла...
а по факту, ребята поставили на кэширование кол-во в категориях, прогнали это все дело ну и понимая узкие места, убрали сложные подзапросы, сейчас большинство джунов умеет это делать. Не берусь осуждать или клеветать, это так, чисто из опыта, для поддержания холивара :cool:
 
OP
F

Feetrus9836

Шопмейкер
Thread Starter #9
по факту установил модуль jet cache И настроил его
правда теперь не оформляется заказ и проблема с сессиями и куками - выкидывает постояннос админки, иногда не с первого раза получается войти
 
yura_co

yura_co

master
#13
@Baco, ну если модуль не с варезника взят то конечно поможет автор, но часто те кого находиш на фрилансе берут варезные модули и это знаю не по наслышке, сам попал в такую ситуацию. Да и много случаев встречал когда обращаются люди к автору даж не зная что модуль просто скомуниздили.
 
Останнє редагування модератором:
Baco

Baco

architect
#14
у нас, кодеров, есть так же свой "этикет", по крайней мере за некоторых могу говорить, а не тех, что на ёпенфоруме в борцов с варезом именуются, согласно которому, поддержку осуществляет автор. я осознанно отказываюсь от поддержки такого кода, ровно как и многие автора, видя "мой почерк" в проектах - отправляют ко мне. но бывают и случаи, когда натыкаешся на варезный клондайк в админке у заказчика, поддержку не оказываешь, но согласно конфиденциальности, умалчиваешь об этом, ну это чисто индивидуальный момент.
 
Останнє редагування:
Зверху