- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Доброго времени..
Долго мучаюсь с хотсерами по скорости моего сайта, последние что они мне показали , это запросы которые гробят базу. (время от времени выпадает 504 ошибка )
Подскажите пожалуйста , куда лезть, что подправить аки есть у кого свободная минутка для консультации
72863490
SELECT p.product_id, (SELECT AVG(rating) AS total FROM oym_review r1 WHERE
r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS
rati
ng, (SELECT price FROM oym_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.da
te_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 COUNT(*)
AS
total FROM oym_order_product op LEFT JOIN `oym_order` o ON (op.order_id =
o.order_id) WHERE o.order_status_id > '0' AND op.product_id = p.product_id
GROUP
BY op.product_id) as topsellers FROM oym_product p LEFT JOIN
oym_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN
oym_product_to_store p2
s 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' GROUP BY p.product_
id ORDER BY p.date_added DESC LIMIT 10;
# Query_time: 145.558326 Lock_time: 66.791127 Rows_sent: 10 Rows_examined:
72863490
SELECT p.product_id, (SELECT AVG(rating) AS total FROM oym_review r1 WHERE
r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS
rati
ng, (SELECT price FROM oym_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.da
te_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 COUNT(*)
AS
total FROM oym_order_product op LEFT JOIN `oym_order` o ON (op.order_id =
o.order_id) WHERE o.order_status_id > '0' AND op.product_id = p.product_id
GROUP
BY op.product_id) as topsellers FROM oym_product p LEFT JOIN
oym_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN
oym_product_to_store p2
s 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' GROUP BY p.product_
id ORDER BY p.date_added DESC LIMIT 10;
# Query_time: 72.412323 Lock_time: 6.867669 Rows_sent: 10 Rows_examined:
72863490
SELECT p.product_id, (SELECT AVG(rating) AS total FROM oym_review r1 WHERE
r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS
rati
ng, (SELECT price FROM oym_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.da
te_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 COUNT(*)
AS
total FROM oym_order_product op LEFT JOIN `oym_order` o ON (op.order_id =
o.order_id) WHERE o.order_status_id > '0' AND op.product_id = p.product_id
GROUP
BY op.product_id) as topsellers FROM oym_product p LEFT JOIN
oym_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN
oym_product_to_store p2
s 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' GROUP BY p.product_
id ORDER BY p.date_added DESC LIMIT 10;
# Query_time: 128.729961 Lock_time: 63.209647 Rows_sent: 10 Rows_examined:
72844697
use shopauto_db;
SELECT p.product_id, (SELECT AVG(rating) AS total FROM oym_review r1 WHERE
r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS
rati
ng, (SELECT price FROM oym_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.da
te_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 COUNT(*)
AS
total FROM oym_order_product op LEFT JOIN `oym_order` o ON (op.order_id =
o.order_id) WHERE o.order_status_id > '0' AND op.product_id = p.product_id
GROUP
BY op.product_id) as topsellers FROM oym_product p LEFT JOIN
oym_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN
oym_product_to_store p2
s 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' GROUP BY p.product_
id ORDER BY p.viewed DESC LIMIT 10;
Выполните такие же запросы, тольки впереди используйте EXPLAIN.
Дальше читать и думать по его результатам.
Возможно, нужно добавить индексы.
Какой размер базы?
Кеширование mysql используете?
Тогда нужно избавиться от NOW() в запросах.
Запросы идут через АПИ или написаны вручную?
Нагрузку на БД может снять кеширование (memcached / файлы)
---------- Добавлено 07.04.2016 в 14:37 ----------
Ну и можно изменить логику работы, но хз писался код вами или это код ядра.
Например, не считать каждый раз срелний рейтинг товара, а раз в день обновлять его.
Выполните такие же запросы, тольки впереди используйте EXPLAIN.
Дальше читать и думать по его результатам.
Возможно, нужно добавить индексы.
Какой размер базы?
Кеширование mysql используете?
Тогда нужно избавиться от NOW() в запросах.
Запросы идут через АПИ или написаны вручную?
Нагрузку на БД может снять кеширование (memcached / файлы)
---------- Добавлено 07.04.2016 в 14:37 ----------
Ну и можно изменить логику работы, но хз писался код вами или это код ядра.
Например, не считать каждый раз срелний рейтинг товара, а раз в день обновлять его.
Спасибо ! пошел курить )
lexter, слышал про такую проблему у OC.. попробуйте погуглить что-то по оптимизации запросов Opencart, типа этого
lexter, слышал про такую проблему у OC.. попробуйте погуглить что-то по оптимизации запросов Opencart, типа этого
спасибо , похоже на мою проблему !
та нет там проблемы..
Там проблема, в том что используется подзапрос
в частности вот этот
AS
total FROM oym_order_product op LEFT JOIN `oym_order` o ON (op.order_id =
o.order_id) WHERE o.order_status_id > '0' AND op.product_id = p.product_id
GROUP
BY op.product_id) as topsellers