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

Медленные запросы


Recommended Posts

Добрый день! Помогите понять что это за медленные запросы и как можно сделать их загрузку быстрее. 

SELECT op.product_id, SUM(op.quantity) AS total FROM oc_order_product op LEFT JOIN `oc_order` o ON (op.order_id = o.order_id) LEFT JOIN `oc_product` p ON (op.product_id = p.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_product_to_category p2c ON (p.product_id = p2c.product_id) WHERE o.order_status_id > '0' AND p2c.category_id IN (196) AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' GROUP BY op.product_id ORDER BY total DESC LIMIT 8
SELECT *,COUNT(`product_id`) AS rating FROM oc_order_product WHERE order_id IN(SELECT op.`order_id` FROM (SELECT *,COUNT(`order_product_id`) AS totalpr FROM oc_order_product GROUP BY `order_id` ) AS src LEFT JOIN `oc_order_product` AS op ON (src.`order_id` = op.`order_id`) WHERE src.totalpr > 1 AND op.`product_id` IN ('598')) AND `product_id` NOT IN ('598') GROUP BY `product_id` ORDER BY rating DESC LIMIT 6

Спасибо 

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


Первый запрос:
Дай восемь id товаров, и количество продаж для  самых продаваемых товаров для всех активных, включенных товаров из категории 196 главного магазина со store_id=0 и отсортируй список по количеству продаж.
В общем выборка 8-ми самых продаваемых товаров из определенной категории.

Во втором запросе какая-то тарабарщина для товара с ID 598 (похоже что считает количество продаж). Не уверен. Не стал вникать :)

Вы б лучше сказали что Вам нужно, и тогда можно подсказать как это сделать )

Ну и для оптимизации запросов с джоинами желательно индексировать группы полей. Да, размер БД слегка (иногда и не слегка) увеличится, но даст прирост в производительности.

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

28.07.2022 в 15:41, nogocuHoBuk сказал:

Первый запрос:
Дай восемь id товаров, и количество продаж для  самых продаваемых товаров для всех активных, включенных товаров из категории 196 главного магазина со store_id=0 и отсортируй список по количеству продаж.
В общем выборка 8-ми самых продаваемых товаров из определенной категории.

Во втором запросе какая-то тарабарщина для товара с ID 598 (похоже что считает количество продаж). Не уверен.

Вы б лучше сказали что Вам нужно, и тогда можно подсказать как это сделать )

Ну и для оптимизации запросов с джоинами желательно индексировать группы полей. Да, размер БД слегка (иногда и не слегка) увеличится, но даст прирост в производительности.

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

 

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


В oc_order_product добавьте индексы для product_id и quantity
ну и можно создать общий индекс, как написал 
@buslikdrev для product_id order_id

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

28.07.2022 в 15:48, nogocuHoBuk сказал:

В oc_order_product добавьте индексы для product_id и quantity
ну и можно создать общий индекс, как написал 
@buslikdrev для product_id order_id

Спасибо большое, добавил индексы, но проблема оказалась не в этом. Сайт все равно лежит (

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


28.07.2022 в 16:01, Ch0oJoy сказал:

Сайт все равно лежит (

У Вас эти запросы в хедере чтоли? Просто непонятно как запрос продаваемых товаров может "уложить", например, страницу контактов.
Или под "лежит" Вы понимаете определенные страницы?

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

28.07.2022 в 16:04, nogocuHoBuk сказал:

У Вас эти запросы в хедере чтоли? Просто непонятно как запрос продаваемых товаров может "уложить", например, страницу контактов.
Или под "лежит" Вы понимаете определенные страницы?

Я не уверен что именно эти запросы нагружают базу, если их мы исправили добавлением индекса, то значит проблема в чем-то еще. Хотя медленных запросов показывает 20 тис шт. 

Прийдется дальше искать. 

Сайт по 10-20 минут может не загружаться. Вчера 6 часов не работал. Хостер говорит нагрузка в базе. 

 

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


Кстати. МОжет Вас просто ДДосят? Отсюда и нагрузка.
В момент падения сайта добавьте в htaccess
 

Order Allow,Deny
Deny from all
Allow from ВАШ_IP_АДРЕС

И если сайт в течение минуты оживёт (естественно только для Вас) - настраивайте cloudflare. 

  • +1 2
Надіслати
Поділитися на інших сайтах

В 28.07.2022 в 16:14, nogocuHoBuk сказав:

Кстати. МОжет Вас просто ДДосят? Отсюда и нагрузка.

Або "ботять" пошукові роботи

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

28.07.2022 в 16:14, nogocuHoBuk сказал:

Кстати. МОжет Вас просто ДДосят? Отсюда и нагрузка.
В момент падения сайта добавьте в htaccess
 

Order Allow,Deny
Deny from all
Allow from ВАШ_IP_АДРЕС

И если сайт в течение минуты оживёт (естественно только для Вас) - настраивайте cloudflare. 

 

28.07.2022 в 16:15, markimax сказал:

Або "ботять" пошукові роботи

Спасибо, это еще не пробовал. 

Попробую теперь с ботами разобраться

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


В 28.07.2022 в 16:29, Ch0oJoy сказав:

 

Спасибо, это еще не пробовал. 

Попробую теперь с ботами разобраться

Бо наскільки я пам'ятаю у вас на тестовому (піддомен) все літало.
А як на бойовий перемістили то "почалося"

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

28.07.2022 в 16:37, markimax сказал:

Бо наскільки я пам'ятаю у вас на тестовому (піддомен) все літало.
А як на бойовий перемістили то "почалося"

Да, после переноса прошло 2-3 часа как он нормально поработал, а потом перестал загружаться. 

Сейчас моментами работает, потом может опять на 10-30 минут перестать грузится. 

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


28.07.2022 в 16:48, max1985 сказал:

может впс или хостинг убогий?

или сервак настроен криво...

Сколько у вас товаров и категорий в магазе?

 

Товаров 2.5к, а категорий около 20

 

Я не думаю, так как демо сайт работал отлично и основной сайт до смены шаблона тоже 1 год работал без проблем. 

 

Сейчас заблокировал полностью яндекс ботов и в гугл поставил ограничения, буду наблюдать. 423986216_2022-07-2816_54_16.thumb.png.18fef429b6fe216619b3a72044fb52ce.png

 

 

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


28.07.2022 в 16:55, Ch0oJoy сказал:

Товаров 2.5к, а категорий около 20

ничего критичного даже для хостинга

28.07.2022 в 16:55, Ch0oJoy сказал:

до смены шаблона

Если после смены шаблона начал тупить, смотрите в сторону модулей которые идут в шаблоне и включены, может они все портят... Или какой-то вывод товаров в шаблоне за мудреный, например рекомендуемые в карточке товара...

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

Это у вас какой-то модуль типа хиты продаж

но надо просто разобраться что это за жесть такая 

 

COUNT(`product_id`) AS rating FROM oc_order_product WHERE order_id IN(SELECT op.`order_id` FROM (SELECT *,COUNT(`order_product_id`) AS totalpr

 

  • +1 3
Надіслати
Поділитися на інших сайтах

В 28.07.2022 в 17:17, max1985 сказав:

 например рекомендуемые в карточке товара...

Наскільки пам'ятаю є такє "діло" у Ch0oJoy

Я теж грішу на "рекомєндуємиє", бо зазвичай там чудять з запитами до БД

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

В 28.07.2022 в 17:19, spectre сказав:

Это у вас какой-то модуль типа хиты продаж

но надо просто разобраться что это за жесть такая 

 

COUNT(`product_id`) AS rating FROM oc_order_product WHERE order_id IN(SELECT op.`order_id` FROM (SELECT *,COUNT(`order_product_id`) AS totalpr

 

Це точно жесть, а не запит
Куча COUNT, потім в IN Select ...з COUNT ...
Там мабуть перебор всієї таблиці

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

28.07.2022 в 17:19, spectre сказал:

Это у вас какой-то модуль типа хиты продаж

но надо просто разобраться что это за жесть такая 

 

COUNT(`product_id`) AS rating FROM oc_order_product WHERE order_id IN(SELECT op.`order_id` FROM (SELECT *,COUNT(`order_product_id`) AS totalpr

 

 

28.07.2022 в 17:19, markimax сказал:

Наскільки пам'ятаю є такє "діло" у Ch0oJoy

Я теж грішу на "рекомєндуємиє"

Есть модуль на сайте "Товары в табах" и в нем можно выбрать товары категории (по кол. продаж или по просмотрам и тд). Раньше стояло по кол. продаж, но после изменения на кол. просмотров, сайт стал намного лучше грузится. Но как видно с панели хостинга медленные запросы все равно остались. 

 

так же есть и Рекомендуемые, но протестировать их отключение смогу когда сайт опять зависнет. После того как заблокировал ботов, сайт работает хорошо. Надеюсь и дальше так будет) 

 

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


28.07.2022 в 17:29, Ch0oJoy сказал:

Есть модуль на сайте "Товары в табах"

Проще все подобные запросы (тяжелые) повесить на крон (например раз в час, в зависимости от продаж. ВОзможно Вам и раз в сутки хватит) и писать результаты в отдельную таблицу, например 
oc_product_rating
Ну и модулем уже дёргать не из всей базы, нагружая её перебирая все товары и заказы, а брать рассчитанные значения непосредственно из таблицы.

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

28.07.2022 в 16:29, Ch0oJoy сказал:

После того как заблокировал ботов,

Поисковых? Ненужно.

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

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

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

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

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

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

Вхід

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

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

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

Important Information

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