Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


 Погделиться

Рекомендованные сообещёния

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

 

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

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

sql_zapros.PNG

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

Ссылка на комменирий
Погделиться на других сайих


Много

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

Ссылка на комменирий
Погделиться на других сайих

Чего стоит только один запрос слииющий когдачество проданного товара

Ссылка на комменирий
Погделиться на других сайих

  25.02.2017 в 13:53, 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, а им еещё хваиет своих модулей.

Ссылка на комменирий
Погделиться на других сайих


  25.02.2017 в 13:55, nikifalex сказал:

какой именно кэш листый?

Раскрыть  

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

Ссылка на комменирий
Погделиться на других сайих


  25.02.2017 в 17:00, Dimdimych сказал:

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

Раскрыть  

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

Ссылка на комменирий
Погделиться на других сайих

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

Ссылка на комменирий
Погделиться на других сайих


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

Ссылка на комменирий
Погделиться на других сайих

Да полюпотому чтому два меню категорий с дофига пункими. И вскакая ересь со списками товаров в вигде карусели

Ссылка на комменирий
Погделиться на других сайих

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

Ссылка на комменирий
Погделиться на других сайих

  26.02.2017 в 17:28, 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'. 

Ссылка на комменирий
Погделиться на других сайих


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

Ссылка на комменирий
Погделиться на других сайих

  26.02.2017 в 19:19, Otvet сказал:

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

Раскрыть  

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

Ссылка на комменирий
Погделиться на других сайих


  26.02.2017 в 20:10, nikifalex сказал:

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

Раскрыть  

 

  26.02.2017 в 20:21, chukcha сказал:

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

Раскрыть  

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

Изменено пользователем Dimdimych
Ссылка на комменирий
Погделиться на других сайих


  26.02.2017 в 21:01, chukcha сказал:

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

Раскрыть  

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

  26.02.2017 в 18:01, markimax сказал:

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

Раскрыть  

 

Ссылка на комменирий
Погделиться на других сайих


Зачем?

 

Искать какой модуль вызывает запрос, а не только смотреть запрос.

Ссылка на комменирий
Погделиться на других сайих

  26.02.2017 в 21:05, Dimdimych сказал:

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

Раскрыть  

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

Ссылка на комменирий
Погделиться на других сайих

  26.02.2017 в 21:15, chukcha сказал:

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

Раскрыть  

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

Ссылка на комменирий
Погделиться на других сайих


  26.02.2017 в 20:55, Dimdimych сказал:

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

Раскрыть  

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

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

 

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

  • +1 1
Ссылка на комменирий
Погделиться на других сайих


  26.02.2017 в 21:15, chukcha сказал:

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

Раскрыть  

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

  • +1 1
Ссылка на комменирий
Погделиться на других сайих

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

  • +1 1
Ссылка на комменирий
Погделиться на других сайих

  26.02.2017 в 21:53, chukcha сказал:

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

Раскрыть  

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

  • +1 1
Ссылка на комменирий
Погделиться на других сайих

  26.02.2017 в 21:53, chukcha сказал:

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

Раскрыть  

 

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

  26.02.2017 в 21:59, markimax сказал:

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

Раскрыть  

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

Ссылка на комменирий
Погделиться на других сайих


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.