Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] Медленный запрос


Recommended Posts

Здравствуйте. Помогите пожалуйста, кто может, Долго грузятся страницы категорий, остальное нормально. Хостер указывает, что БД ест весь процессор. Отладчик показывает медленные  запросы:

1. С отключенным ЧПУ (скрин): http://joxi.ru/QlEaVIwyTJDsAjt5_nQ

2. Если ЧПУ включен:

99 SELECT COUNT(DISTINCT p.product_id) AS total FROM product p LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN product_to_category p2c ON (p.product_id = p2c.product_id) LEFT JOIN product_master pm ON pm.product_id = p.product_id WHERE (pm.master_product_id = -1 OR pm.master_product_id = 0 OR pm.master_product_id IS NULL) AND pd.language_id = '1' AND p.STATUS = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND p2c.category_id = '137'/var/www/babyplaza/baby-plaza.com.ua/vqmod/vqcache/vq2-catalog_model_catalog_product.php (559) 1.23586 s

 

100 SELECT p.product_id, (SELECT AVG(rating) AS total FROM review r1 WHERE r1.product_id = p.product_id AND r1.STATUS = '1' GROUP BY r1.product_id) AS rating FROM product p LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN product_to_category p2c ON (p.product_id = p2c.product_id) LEFT JOIN product_master pm ON pm.product_id = p.product_id WHERE (pm.master_product_id = -1 OR pm.master_product_id = 0 OR pm.master_product_id IS NULL) AND pd.language_id = '1' AND p.STATUS = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND p2c.category_id = '137' GROUP BY p.product_id ORDER BY p.quantity DESC, LCASE(pd.name) DESC LIMIT 0,12/var/www/babyplaza/baby-plaza.com.ua/vqmod/vqcache/vq2-catalog_model_catalog_product.php (199) 1.24852 s

 

101 SELECT pm.master_product_id, p.product_id, p.image, p.model AS 'product_model', pd.name AS 'product_name', sa.special_attribute_name, sa.special_attribute_value FROM product_master pm LEFT JOIN product_special_attribute psa ON psa.product_id = pm.product_id LEFT JOIN special_attribute sa ON sa.special_attribute_id = psa.special_attribute_id LEFT JOIN product p ON p.product_id = pm.product_id LEFT JOIN product_description pd ON pd.product_id = p.product_id LEFT JOIN product_to_store p2s ON p2s.product_id = p.product_id WHERE sa.special_attribute_group_id = '2' AND p.STATUS = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND pd.language_id = '1' ORDER BY p.sort_order ASC, sa.special_attribute_id ASC/var/www/babyplaza/baby-plaza.com.ua/vqmod/vqcache/vq2-catalog_model_catalog_product.php (684) 0.84946 s

 

Страница категорий загружается 10-12 секунд, уже не знаю что предпринять. Товаров около 9000, Категорий штук 200, opencart 1.5.3.1

Надіслати
Поділитися на інших сайтах


Добрый день. Разберитесь с модулем Product Series, насколько знаю, таблица product_master именно оттуда. Отключите xml файл модуля буквально на пару секунд, чтобы проверить как с ним и без него. Если без него не тормозит, то лучше спросить у автора модуля, велика вероятность, что он с этим уже сталкивался. Добавьте в эту таблицу индекс к столбцу product_id , если его там нет. Если хотите простое и работающее решение костылем, то можно просто добавить запрос в кэш.

Змінено користувачем halfhope
Надіслати
Поділитися на інших сайтах

Напишите автору Product Series.

Или наймите профессионала.

Во всех запросах "прикрепляется" таблица, от этого модуля. Соответственно, если без неё opencart не тормозит (а OC стоит у ооочень многих), то при "прикреплении"  LEFT JOIN product_masteк , всё сразу уходит в даун - виноват модуль, который "прикрепляет" данную таблицу.

Автор модуля однозначно должен исправить свой модуль.

halfhope :) Если человек задает такие вопросы, как вы думаете он сможет добавить индекс или добавить код кеширования для модуля. ;)?

Нужна квалификация.

 

P.S. Да, сайт тормозит не по детски

Надіслати
Поділитися на інших сайтах

Я бы хостинг менял, что-то мне не верится, что парочка таблиц даже если они и без индексов может ТАК тормозить запросы в таких несложных запросах при таком относительно небольшом к-ве товаров. Если хостинг за 5 баксов в месяц (где на 1 сервере хостер размещает несколько сотен сайтов) то его однозначно нужно менять.

Надіслати
Поділитися на інших сайтах

Проверьте на всякий случай сайт на вирусы http://www.revisium.com/ai/. И посмотрите на размер файла "system/library/response.php", его размер не должен превышать 2 КБ. Если размер более 2 КБ, то меняйте файл на оригинальный.

Надіслати
Поділитися на інших сайтах

Добрый день. Разберитесь с модулем Product Series, насколько знаю, таблица product_master именно оттуда. Отключите xml файл модуля буквально на пару секунд, чтобы проверить как с ним и без него. Если без него не тормозит, то лучше спросить у автора модуля, велика вероятность, что он с этим уже сталкивался. Добавьте в эту таблицу индекс к столбцу product_id , если его там нет. Если хотите простое и работающее решение костылем, то можно просто добавить запрос в кэш.

Вы правы, после отключения файла, все шустро заработало. 

 

Напишите автору Product Series.

Или наймите профессионала.

Во всех запросах "прикрепляется" таблица, от этого модуля. Соответственно, если без неё opencart не тормозит (а OC стоит у ооочень многих), то при "прикреплении"  LEFT JOIN product_masteк , всё сразу уходит в даун - виноват модуль, который "прикрепляет" данную таблицу.

Автор модуля однозначно должен исправить свой модуль.

halfhope :) Если человек задает такие вопросы, как вы думаете он сможет добавить индекс или добавить код кеширования для модуля. ;)?

Нужна квалификация.

 

P.S. Да, сайт тормозит не по детски

Это правда, не знаю как добавить этот запрос в кэш. Это возможно как то сделать или нужно нанимать специалиста? Автору модуля написал, он в америке, ответит только ближе к вечеру.

 

Проверьте на всякий случай сайт на вирусы http://www.revisium.com/ai/. И посмотрите на размер файла "system/library/response.php", его размер не должен превышать 2 КБ. Если размер более 2 КБ, то меняйте файл на оригинальный.

Этот участок кода пару недель назад удалял, теперь вот новые проблемы появились=(

Надіслати
Поділитися на інших сайтах


Добрый день. Разберитесь с модулем Product Series, насколько знаю, таблица product_master именно оттуда. Отключите xml файл модуля буквально на пару секунд, чтобы проверить как с ним и без него. Если без него не тормозит, то лучше спросить у автора модуля, велика вероятность, что он с этим уже сталкивался. Добавьте в эту таблицу индекс к столбцу product_id , если его там нет. Если хотите простое и работающее решение костылем, то можно просто добавить запрос в кэш.

Добавил индекс, теперь все летает. Ну как летает, по сравнению с тем что было - это прогресс. Спасибо Вам большое. Как тут плюсы к репутации ставить?

Надіслати
Поділитися на інших сайтах


Добавил индекс, теперь все летает. Ну как летает, по сравнению с тем что было - это прогресс. Спасибо Вам большое. Как тут плюсы к репутации ставить?

 

Уже нельзя ставить)

Надіслати
Поділитися на інших сайтах

  • 1 year later...

Добавил индекс, теперь все летает. Ну как летает, по сравнению с тем что было - это прогресс. Спасибо Вам большое. Как тут плюсы к репутации ставить?

 

Тоже столкнулся с данной проблемой. Не подскажите как Вы добавляли индекс?

Надіслати
Поділитися на інших сайтах


Вроде разобрался:

 

после добавления в базу данных SQL запроса вида: ALTER TABLE oc_product_master ADD INDEX product_id (product_id); тоже все залетало.

Змінено користувачем kibyury
Надіслати
Поділитися на інших сайтах


  • 1 month later...

Вроде разобрался:

 

после добавления в базу данных SQL запроса вида: ALTER TABLE oc_product_master ADD INDEX product_id (product_id); тоже все залетало.

А какие вы еще изменения делали? Начал переносить магазин на опенкарт версией выше и опять тормозит, индексы остались, но уже не спасают.

Надіслати
Поділитися на інших сайтах


  • 1 year later...

Доброго времени суток Уважаемые! Может и мне кто подскажет верное направление! медленные запросы

SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_product_to_category p2c 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 <= '2017-11-24 16:35:00' AND p2s.store_id = '0' AND p2c.category_id = '79'
 

Надіслати
Поділитися на інших сайтах


  • 2 months later...

Есть вот такой запрос. Весь не влазит в лог на хостинге - Но вот его начало

SELECT p.product_id, p.sort_order FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id AND pd.language_id = 1) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_product_attribute pa ON (p.product_id = pa.product_id) LEFT JOIN oc_attribute a ON (pa.attribute_id = a.attribute_id) LEFT JOIN oc_attribute_group_description agd ON (a.attribute_group_id = agd.attribute_group_id) LEFT JOIN oc_attribute_description ad ON (pa.attribute_id = ad.attribute_id) LEFT JOIN oc_product_option_value pov ON (p.product_id = pov.product_id) LEFT JOIN oc_option_description od ON (pov.option_id = od.option_id) LEFT JOIN oc_option_value_description ovd ON (pov.option_value_id = ovd.option_value_id) WHERE p.date_available <= NOW() AND p.STATUS = 1 AND p.sort_order >= 0 AND p2s.store_id = 0 AND ((LCASE(pd.name) LIKE '%

Хостинг пишет, что это медленный запрос и выполняется долго, иногда даже сайт упирается в лимиты. Но как-то странно, что медленный он бывает не каждый день и постоянно. 

Вот статистика медленных запросов, что выполнялись больше 5 сек,за последние 2 месяца - во всех этих случая медленный запрос, вот тот, что указан выше

29.01.2018 21:26:59

29.01.2018 20:19:44

29.01.2018 20:19:38

29.01.2018 20:19:32

29.01.2018 20:19:25

28.01.2018 20:36:01

28.01.2018 13:39:40

28.01.2018 13:39:35

23.01.2018 19:02:08

22.01.2018 21:43:08

22.01.2018 12:06:12

18.01.2018 16:16:32

18.01.2018 16:16:37

 

И сайт постепенно начинает выходить за лимит процессорного времени на хостинге при лимите 100, он колеблется от 70 до 110

Версия ocStore 1.5.5.1.2 - фильтры никакие на сайте не стоят.

Товаров около 2000 на сайте, посещаемость 1700-2000 пользователей в день.

Как можно оптимизировать запрос или нужно сменять shared hosting на VPS или VDS ?

Змінено користувачем niger
Надіслати
Поділитися на інших сайтах


26 минут назад, niger сказал:

Есть вот такой запрос. Весь не влазит в лог на хостинге - Но вот его начало


SELECT p.product_id, p.sort_order FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id AND pd.language_id = 1) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_product_attribute pa ON (p.product_id = pa.product_id) LEFT JOIN oc_attribute a ON (pa.attribute_id = a.attribute_id) LEFT JOIN oc_attribute_group_description agd ON (a.attribute_group_id = agd.attribute_group_id) LEFT JOIN oc_attribute_description ad ON (pa.attribute_id = ad.attribute_id) LEFT JOIN oc_product_option_value pov ON (p.product_id = pov.product_id) LEFT JOIN oc_option_description od ON (pov.option_id = od.option_id) LEFT JOIN oc_option_value_description ovd ON (pov.option_value_id = ovd.option_value_id) WHERE p.date_available <= NOW() AND p.STATUS = 1 AND p.sort_order >= 0 AND p2s.store_id = 0 AND ((LCASE(pd.name) LIKE '%

Хостинг пишет, что это медленный запрос и выполняется долго, иногда даже сайт упирается в лимиты. Но как-то странно, что медленный он бывает не каждый день и постоянно. 

Вот статистика медленных запросов, что выполнялись больше 5 сек,за последние 2 месяца - во всех этих случая медленный запрос, вот тот, что указан выше

29.01.2018 21:26:59

29.01.2018 20:19:44

29.01.2018 20:19:38

29.01.2018 20:19:32

29.01.2018 20:19:25

28.01.2018 20:36:01

28.01.2018 13:39:40

28.01.2018 13:39:35

23.01.2018 19:02:08

22.01.2018 21:43:08

22.01.2018 12:06:12

18.01.2018 16:16:32

18.01.2018 16:16:37

 

И сайт постепенно начинает выходить за лимит процессорного времени на хостинге при лимите 100, он колеблется от 70 до 110

Версия ocStore 1.5.5.1.2 - фильтры никакие на сайте не стоят.

Товаров около 2000 на сайте, посещаемость 1700-2000 пользователей в день.

Как можно оптимизировать запрос или нужно сменять shared hosting на VPS или VDS ?

Можно оптимизировать - можно.

Но при условии, что на хостинге достаточно ресурсов для сортировки-обработки индексов.

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.