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

Ускорение обработки запросов mysql


Recommended Posts

Здравствуйте, уважаемые форумчане. Пытаюсь разобраться с тормозами сайта на ocStore 2.1.0.1 (на сайте примерно 3000 товаров) Решил проверить скорость и количество запросов у себя на сайте и вот какие данные получил для главной страницы:server_time.PNG

 

Анализ запросов к базе данных дал такие результаты (при чистом кєше):  Queries: 918, Total time: 734.030 ms

А вот самые медленные запросы:

sql_zapros.PNG

Подскажите, количество запросов 918 - это очень много? И как можно сократить время этих запросов? (индексы таблицам проставлены). Ткните носом, в каком направлении копать?

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


2 часа назад, markimax сказал:

Много

А какие модули стоят ?

Да уж много модулей стоит: SeoGen 2.0.5, Image Manager Pro+, SORTS+, SEO CMS (+мультиязык), Magic Zoom Plus, SOFORP SMS Информер, After Purchase Review Invitation, Email Template - Advanced, GeoIP, Mega Filter PRO, Rev Slider Opencart, YO • Меню, Акции, подарки [sv2109.com], Группы товаров ( louise170 ), Модуль Настройки заказов ( Alex.Konushin ), Поиск с вариантами [sv2109.com], Поиск с морфологией и релевантностью PRO [sv2109.com], Простая регистрация и заказ Simple, Статусы Товаров PRO [sv2109.com], Оплата после проверки и/или оплата на реквизиты, Доставка Плюс ( louise170 ), Новая Почта API, Менеджер скидок/наценок ( louise170), Система поощрения и лояльности клиентов ( sergius_sv ), а так же мод, изменяющий кнопку купить в зависимости от состояния на складе.

Как видите, достаточно много, но они мне все нужны... Кроме этого использую тему MAGAZIN, а там еще хватает своих модулей.

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


3 часа назад, Dimdimych сказал:

Имел ввиду - почистил системный кэш и кэш изображений движка и кэш браузера

Приходите ко мне в личку.
Долго Дорого Хорошо!

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

Мне вот не понятна такая ситуация: есть некоторые товары, которые ну ооочень долго грузятся. Если обычно у товара Queries: 475, Total time: 574.206 ms , то у некоторых товаров  Queries: 1885, Total time: 4,281.468 ms. Причем специально создавал новый товар с контентом и настройками, как у тормознутого товара и у этого товара было намного меньше запросов. Я вручную переносил базу данных с 1.5 на 2.1 и заметил, что попадаются такие тормознутые товары (их не так много) только созданные еще на 1.5. Вот я не могу понять, с чем это может быть связано, ладно бы все старые товары имели много запросов, а то только некоторые и логики, какие из них будут с тормозами я не вижу...

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


Отключайте по очереди модули связанные с товарами и смотрите результат

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

1 час назад, nikifalex сказал:

отключать-включать-мерить время-сравнивать-искать-оптимизировать. и там как повезет.

Очень мало модуле-писателей пробовали с 3000 товаров

чтоб понимать что такой запрос будет тяжелым а в цикле тем более, прописывать LIMIT если изначально известна размерность выборки, использовать собственные модели, ... не нужно пробовать на 3000

да и в целом 3000 это смешная цифра для разговора о нагрузках из-за кол-ва

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

Просмотрел лог запросов - большая часть - это однотипные запросы  по 3-4 мс типа:

SELECT DISTINCT *, pd.name AS name, p.image, (SELECT md.name 
FROM oc_manufacturer_description md 
WHERE md.manufacturer_id = p.manufacturer_id AND md.language_id = '1') AS manufacturer, (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, (SELECT points 
FROM oc_product_reward pr 
WHERE pr.product_id = p.product_id AND customer_group_id = '1') AS reward, (SELECT ss.name 
FROM oc_stock_status ss 
WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '1') AS stock_status, (SELECT wcd.unit 
FROM oc_weight_class_description wcd 
WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '1') AS weight_class, (SELECT lcd.unit 
FROM oc_length_class_description lcd 
WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '1') AS length_class, (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 COUNT(*) AS total 
FROM oc_review r2 
WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order 
FROM oc_product p 
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) 
LEFT JOIN oc_manufacturer m ON (p.manufacturer_id = m.manufacturer_id) 
WHERE p.product_id = '1674' AND pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0'

Меняется только p.product_id = '1674'. 

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


1 час назад, Otvet сказал:

да и в целом 3000 это смешная цифра для разговора о нагрузках из-за кол-ва

Число то смешное, но, как правильно было сказано, большинство разработчиков модулей не подозревают, что в магазинах бывает больше пары сотен товаров. Да и сам Дэниэль об этом не особо думает.

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


44 минуты назад, nikifalex сказал:

и сколько их? Кто-то зачем-то по одному товару дергает. Сколько же их на странице то?

 

34 минуты назад, chukcha сказал:

Ну, так наверное огромная куча связанных товаров

Сопутствующих товаров у рассматриваемого товара - 8 шт. А запросов, блин, я даже сразу не сосчитаю, но на вид 60-70% от 1885 запросов...

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


1 минуту назад, chukcha сказал:

Ну так ищите источник!!!

А искать, как markimax предлагал?

3 часа назад, markimax сказал:

Отключайте по очереди модули связанные с товарами и смотрите результат

 

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


10 минут назад, Dimdimych сказал:

Отключайте по очереди модули связанные с товарами и смотрите результат

Это очень затруднительно.. и глупо, если можно ускорить процесс обнаружения.

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

1 минуту назад, chukcha сказал:

Это очень затруднительно.. и глупо, если можно ускорить процесс обнаружения.

А каким образом можно ускорить процесс обнаружения?

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


14 минут назад, Dimdimych сказал:

А запросов, блин, я даже сразу не сосчитаю, но на вид 60-70% от 1885 запросов...

Это стандартный запрос на выборку товара (метод getProduct в /catalog/model/catalog/product.php), так что этих запросов и должно быть много (имею ввиду запрос из этого поста:

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

 

Если запросов больше, чем должно быть, ищите места использования getProduct.

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


29 минут назад, chukcha сказал:

Это очень затруднительно..

Это почему же ? Да еще с таким "громким" заявлением
Да я бы нашел быстрее, как и любой профессионал.
Но если у пользователя нет квалификации ему надо подсказать путь, какой ему проще.
Отключаешь модуль и смотришь количество запросов - логично и просто.
Если после какого то модуля резко упадет количество запросов - тот  и "папа"
 

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

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

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

6 минут назад, chukcha сказал:

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

И я увижу быстрее. Но пользователь хочет сам.
Ему так будет логичнее понять.
Можно попробовать сначала с отключения ocmod - в
А потом связанные с товарами модули (понятное дело что SEO CMS и т п отключать не надо - он там не работает и не связан. Да и не выдает такое количество "лишних" запросов). А вот стоит обратить внимание на YO • Меню (первый подозреваемый), Mega Filter PRO, Акции, подарки, Группы товаров, Статусы Товаров PRO и т.п.
Кстати а микроразметка Microdata стоит ?

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

19 минут назад, chukcha сказал:

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

 

Я больше отношусь к продвинутым пользователям и более-менее знаю html и css. Но с php и sql я пока на Вы. Но ошибку мне надо найти, поэтому мне наверно больше подходит метод markimax:

20 минут назад, markimax сказал:

И я увижу быстрее. Но пользователь хочет сам.
Ему так будет логичнее понять.

Можно конечно и прогон сделать, если есть желание объяснить, как это делается...

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


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

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

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

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

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

Вхід

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

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

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

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

Important Information

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