Оптимизация SQL запросов
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Войти
Уже есть аккаунт? Войти в систему.
Похожий контент
750 20
Доступ к обновлениям: 300.00 руб за год
Доступ к обновлениям: 5.00 USD за год
Скачать/Купить дополнение
Буслік Кэш / Buslik Cache Full
ИНФОРМАЦИЯ
Название модуля: Буслік Кэш — «Buslik Cache»
Версия модуля: 1.0
Тип лицензии: Full (полная версия)
Тип установки: ocmod
Язык: Беларуская мова, English, Русский язык, Українська мова
Дата создания: 16.05.2021
Был протестирован на: OpenCart.pro 2.1.0.2.2 и 2.3.0.2.6, OpenCart-«Русская сборка» 2.1.0.2 (rs1), 2.3.0.2 (rs6) и 3.0.2.0 (rs3), ocStore 2.1.0.2.1 и 2.3.0.2.3 — шаблон (default)
Название архива: Buslik Cache v1.0 Full OpenCart 2.X-3.X.zip
Ознакомительная версия здесь
ОПИСАНИЕ
Модуль предназначен для уменьшения нагрузки на вашу базу данных и поднятию оценки Google PageSpeed.
Возможности по кэшу:
— такие же как в бесплатной версии;
— можно установить конкретно, что кэшировать;
— более точная настройка сессионных перемен.
Возможности по Google PageSpeed:
— такие же как в бесплатной версии;
— улучшенный скрипт loading=»lazy»;
— можно скачать стили и скрипты на свой сайт;
— можно указать исключение из сжатия стилей и скриптов;
— можно сделать замену данных для страниц;
— можно указать свои атрибуты для стилей и скриптов;
— можно предзагружать шрифты и изображения;
— можно установить стили и скрипты вверху, внизу, отложить загрузку по событию и таймеру;
— можно указать свои стили и скрипты;
— модуль быстрее работает, чем бесплатная версия;
— можно загружать критические стили;
ВНИМАНИЕ!
Оригинальные файлы магазина не заменяет!
УСЛОВИЯ СОГЛАШЕНИЯ
— Beta и Lite версии устанавливаете на свой страх и риск — бэкап базы данных (далее — БД) обязателен;
— Модуль (модификатор, дополнение, расширение, приложение) (далее — Модуль) можно устанавливать на 1 домен включая поддомены (одна покупка — один домен);
— Редактировать код можно только под нужды своего магазина;
— Распространение модуля запрещено;
— Техническая поддержка (далее — ТП) осуществляется только при появлении ошибки, бага, глюка (зависания) и не совместимости модуля с заявленными версиями Opencart и шаблонов на момент продажи, при установке на боевой сайт (рабочий хостинг);
— Адаптация модуля под другую версию Опенкарта, нестандартный шаблон и сторонние модули — платная;
— Автор модуля оставляет за собой право в любое время внести изменение в настоящее условие, описание и исходный код модуля;
— Автор модуля оставляет за собой право прекратить ТП пользователям по истечению 365 календарных дней со дня последнего обновления модуля (Full или Beta версии), или со дня окончания продления ТП, или при форс-мажорных обстоятельств;
— Автор не несёт ответственности за потерю или находку дохода пользователя из-за работы модуля;
— ТП осуществляется при условии соблюдения данного соглашения, пишите в личные сообщения.
Для тех кто выбирает опцию неограниченные домены — вам нужно заменить в модификаторах ссылку моего профиля на ваш.
Добавил buslikdrev Добавлено 22.05.2021 Категория Кэширование, сжатие, ускорение Системные требования php5.4+ Метод активации Автоматическая активация Ioncube Loader Нет OpenCart 3.0
2.3
2.2
2.1
2.0 ocStore 3.0
2.3.0.2.4
2.3
2.2
2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
Opencart.pro 2.1
OcShop 2.0.3.х Обращение к серверу разработчика Нет
Да
6000 150
Скачать/Купить дополнение
Оптимизация для максимальной оценки PageSpeed от Google
Для всех версий opencart делаю всё тоже самое, что и здесь.
+Никаких копирайтов на вашем сайте со стороны клиентской части.
+Установка и настройка модулей:
модуль кэширования генерация webp изображений (если сервер поддерживает
Оптимизация отклика сервера и скорости генерации сервером страниц (отдаваемый HTML) не входит в данную услугу. По оптимизации серверной части обратитесь к @snastik.
УСЛОВИЯ СОГЛАШЕНИЯ
На вашем сайте не должно быть ошибок в php и js коде (устраняются за отдельную плату);
Отклик сервера и обработка php кода должно отрабатывать не дольше 0.8 секунды (за плохой отклик сервера Гугл снимает 15-20 баллов, а значит гарантировать не могу оценку 90 без кэша);
После сдачи работы претензии и вопросы не предъявляются исполнителю;
Если результат оценки не будет достигнут 80+ на всех страницах (имеющий шаблон и количество товара не больше 100шт.), будут возвращены деньги без комиссии данной площадки (-30%) и восстановлен сайт в исходное состояние (по желанию клиента).
Добавил buslikdrev Добавлено 27.04.2020 Категория Услуги
ИНФОРМАЦИЯ
Название модуля: Буслік Кэш — «Buslik Cache»
Версия модуля: 1.0
Тип лицензии: Full (полная версия)
Тип установки: ocmod
Язык: Беларуская мова, English, Русский язык, Українська мова
Дата создания: 16.05.2021
Был протестирован на: OpenCart.pro 2.1.0.2.2 и 2.3.0.2.6, OpenCart-«Русская сборка» 2.1.0.2 (rs1), 2.3.0.2 (rs6) и 3.0.2.0 (rs3), ocStore 2.1.0.2.1 и 2.3.0.2.3 — шаблон (default)
Название архива: Buslik Cache v1.0 Full OpenCart 2.X-3.X.zip
Ознакомительная версия здесь
ОПИСАНИЕ
Модуль предназначен для уменьшения нагрузки на вашу базу данных и поднятию оценки Google PageSpeed.
Возможности по кэшу:
— такие же как в бесплатной версии;
— можно установить конкретно, что кэшировать;
— более точная настройка сессионных перемен.
Возможности по Google PageSpeed:
— такие же как в бесплатной версии;
— улучшенный скрипт loading=»lazy»;
— можно скачать стили и скрипты на свой сайт;
— можно указать исключение из сжатия стилей и скриптов;
— можно сделать замену данных для страниц;
— можно указать свои атрибуты для стилей и скриптов;
— можно предзагружать шрифты и изображения;
— можно установить стили и скрипты вверху, внизу, отложить загрузку по событию и таймеру;
— можно указать свои стили и скрипты;
— модуль быстрее работает, чем бесплатная версия;
— можно загружать критические стили;
ВНИМАНИЕ!
Оригинальные файлы магазина не заменяет!
УСЛОВИЯ СОГЛАШЕНИЯ
— Beta и Lite версии устанавливаете на свой страх и риск — бэкап базы данных (далее — БД) обязателен;
— Модуль (модификатор, дополнение, расширение, приложение) (далее — Модуль) можно устанавливать на 1 домен включая поддомены (одна покупка — один домен);
— Редактировать код можно только под нужды своего магазина;
— Распространение модуля запрещено;
— Техническая поддержка (далее — ТП) осуществляется только при появлении ошибки, бага, глюка (зависания) и не совместимости модуля с заявленными версиями Opencart и шаблонов на момент продажи, при установке на боевой сайт (рабочий хостинг);
— Адаптация модуля под другую версию Опенкарта, нестандартный шаблон и сторонние модули — платная;
— Автор модуля оставляет за собой право в любое время внести изменение в настоящее условие, описание и исходный код модуля;
— Автор модуля оставляет за собой право прекратить ТП пользователям по истечению 365 календарных дней со дня последнего обновления модуля (Full или Beta версии), или со дня окончания продления ТП, или при форс-мажорных обстоятельств;
— Автор не несёт ответственности за потерю или находку дохода пользователя из-за работы модуля;
— ТП осуществляется при условии соблюдения данного соглашения, пишите в личные сообщения.
Для тех кто выбирает опцию неограниченные домены — вам нужно заменить в модификаторах ссылку моего профиля на ваш.
750 11
Скачать/Купить дополнение
[SEO] Full IndeX : Улучшение индексации и устранение ряда недочетов Opencart
Модуль призван улучшить индексацию. Управляет множеством факторов и решает большой ряд мелких недочетов Opencart.
Патч совместимости с OCFilter 4.8 и новее
! Внимание БОЛЬШИЕ цветные буквы не просто так в тексте
Указывайте домен при покупке
Что делает модуль:
исправляет косяки вида сайт/категория/инфо которые присутствуют у 99% позволяет привести сайт к рекомендациям Google и Яндекс редиректы с некорректных страниц по типу сайт/категория/?page=-1 исправление ссылок и багов пагинаций выводить canonical на лишних страницах пагинации производить редирект с лишних страницах пагинации исправление адресов по типу index.php?route=product%2Fproduct&product_id= 404 на лишних страницах пагинации позволяет устранить большой ряд дублей фикс большой проблемы опенкарт — «мусорных» ссылок на теги (с версии 5.0) позволяет запретить индексацию страниц-пустышек уникализация мета-теги и заголовки страниц сайт/категория/бренд способствует распределению веса и более полной перелинковке позволяет убрать или управлять выводом атрибутов prev | next (с 21.03.2018 Google официально перестал учитывать) уникализирует страницы пагинации (они перестают быть дублями), в том числе: шаблоны мета-данных, шаблон заголовков H1, скрытие/закрытие сквозных блоков валидация и исправление значений стандартных параметров позволяет гибко управлять выводом canonical, с учетом таких факторов как тип url и путь в url, когда нужно и где нужно управление get-параметрами (редиректы, canonical, seo_pro) позволяет полноценно использовать определенные seo-фильтры позволяет убирать «хвосты» в индексе позволяет блокировать индексации отзывов как отдельного документа и сделать в то же время более полную индексацию отзывов способствует заполнению анкор листа товаров на страницах 2 и далее фикс кучи мелких проблем и недоработок в опенкарт и многое другое
Для более продуктивной борьбы с дублями так же крайне желательно наличие SEO_Pro (модуль его не заменяет и решает другие проблемы) и правильного robots.txt. Модуль не заменяет SEO_Pro, а решает иные задачи и проблемы.
[bonus] Sitemap Lite (OCMOD только для opencart 2.x):
заменяет оригинальный catalog/controller/feed/google_sitemap.php
ускоренная генерация благодаря собственной функции выборки товаров (
в 5 раз) добавление lastmod устранение дублирования товаров т.к. бонус, не подпадает под стандартную поддержку если нужна скорость, функционал, поддержка — рекомендую приобрести #FX Sitemap
Модуль не занимается генерацией ЧПУ. Для автоматического заполнения SEO URL (ЧПУ) можно установить это дополнение: https://opencartforum.com/files/file/2833-автоматическое-заполнение-чпу-ocmod/ и/или https://opencartforum.com/files/file/5570-fx-url-generator-free/
Важно:
Срок бесплатной технической поддержки — 1 год Локальные серверы и прочее не входит в поддержку Техподдержка на одну версию опенкарт При заказе настройки, учитывайте что она должна производиться на полностью готовом сайте, дабы потом не делать заново
[!] что за Аддоны — FX AddOn Pack #1
[!] что за Бренды — #FX Brands
Если ключ активации не пришел на почту, получить можно в ЛС или при запросе обновления.
Добавил Otvet Добавлено 15.08.2015 Категория SEO, карта сайта, оптимизация Системные требования умение читать инструкцию, работающий установщик, iq > 70 Метод активации Автоматическая активация
Через официальный сайт дополнения Ioncube Loader Нет OpenCart 3.0
2.3
2.2
2.1
2.0
1.5.6.4
1.5.6.3
1.5.6.2
1.5.6.1
1.5.6
1.5.5.1
1.5.5
1.5.4.1 ocStore 3.0
2.3.0.2.4
2.3
2.2
2.1
1.5.5.1.2
1.5.5.1.1
1.5.5.1
1.5.4.1.2
1.5.4.1.1
1.5.4.1 OpenCart.Pro, ocShop Opencart.pro 2.3
Opencart.pro 2.1
OcShop 2.0.3.х
OcShop 1.5.6.4.х Обращение к серверу разработчика Нет
Модуль призван улучшить индексацию. Управляет множеством факторов и решает большой ряд мелких недочетов Opencart.
Патч совместимости с OCFilter 4.8 и новее (для модуля версий 4 и 5)
! Внимание БОЛЬШИЕ цветные буквы не просто так в тексте
Указывайте домен при покупке
Что делает модуль:
исправляет косяки вида сайт/категория/инфо которые присутствуют у 99% позволяет привести сайт к рекомендациям Google и Яндекс редиректы с некорректных страниц по типу сайт/категория/?page=-1 исправление ссылок и багов пагинаций выводить canonical на лишних страницах пагинации производить редирект с лишних страницах пагинации исправление адресов по типу index.php?route=product%2Fproduct&product_id= 404 на лишних страницах пагинации позволяет устранить большой ряд дублей фикс большой проблемы опенкарт — «мусорных» ссылок на теги (с версии 5.0) позволяет запретить индексацию страниц-пустышек уникализация мета-теги и заголовки страниц сайт/категория/бренд способствует распределению веса и более полной перелинковке позволяет убрать или управлять выводом атрибутов prev | next (с 21.03.2018 Google официально перестал учитывать) уникализирует страницы пагинации (они перестают быть дублями), в том числе: шаблоны мета-данных, шаблон заголовков H1, скрытие/закрытие сквозных блоков валидация и исправление значений стандартных параметров позволяет гибко управлять выводом canonical, с учетом таких факторов как тип url и путь в url, когда нужно и где нужно управление get-параметрами (редиректы, canonical, seo_pro) позволяет полноценно использовать определенные seo-фильтры позволяет убирать «хвосты» в индексе позволяет блокировать индексации отзывов как отдельного документа и сделать в то же время более полную индексацию отзывов способствует заполнению анкор листа товаров на страницах 2 и далее фикс кучи мелких проблем и недоработок в опенкарт и многое другое
Для более продуктивной борьбы с дублями так же крайне желательно наличие SEO_Pro (модуль его не заменяет и решает другие проблемы) и правильного robots.txt. Модуль не заменяет SEO_Pro, а решает иные задачи и проблемы.
[bonus] Sitemap Lite (OCMOD только для opencart 2.x):
заменяет оригинальный catalog/controller/feed/google_sitemap.php
ускоренная генерация благодаря собственной функции выборки товаров (
в 5 раз) добавление lastmod устранение дублирования товаров т.к. бонус, не подпадает под стандартную поддержку если нужна скорость, функционал, поддержка — рекомендую приобрести #FX Sitemap
Модуль не занимается генерацией ЧПУ. Для автоматического заполнения SEO URL (ЧПУ) можно установить это дополнение: https://opencartforum.com/files/file/2833-автоматическое-заполнение-чпу-ocmod/ и/или https://opencartforum.com/files/file/5570-fx-url-generator-free/
Важно:
Срок бесплатной технической поддержки — 1 год Локальные серверы и прочее не входит в поддержку Техподдержка на одну версию опенкарт При заказе настройки, учитывайте что она должна производиться на полностью готовом сайте, дабы потом не делать заново
[!] что за Аддоны — FX AddOn Pack #1
[!] что за Бренды — #FX Brands
Если ключ активации не пришел на почту, получить можно в ЛС или при запросе обновления.
Последние посетители 0 пользователей онлайн
Ни одного зарегистрированного пользователя не просматривает данную страницу
Как оптимизировать sql запрос товаров opencart?
Добрый день, есть магазин на 700000 товаров.
В связи с этим страницы категорий грузятся секунд по 25.
Посмотрев какие запросы медленнее всего, нашёл 2:
getTotalProducts (Около 9 секунд)
getProducts (10-12 секунд)
Сам долгий запрос:
Сервер: 2ядра, 2gb ram.
Вопрос такой: Я знаю, что такое количесто товаро не мало, но всё же, 20 секунд это явно не нормально. Как можно оптимизировать запрос? Из-за какого подзапроса может быть такая шняга?
- Вопрос задан более двух лет назад
- 533 просмотра
Средний 5 комментариев
- Вконтакте
Это что за треш запрос вы привели в вопросе?
В нем вложенные подзапросы в select это не просто бад практикс, это пиздец. Это так в opencart сделано или вы добавили? избавляйтесь от этого, понятно почему оно 20 секунд копается.
Как минимум запрос по oc_review выносится легко. С запросами по oc_product_discount и oc_product_special наверное нужно что то делать, там limit стоит, Даже не разбираясь в структуре проекта и прочего, я бы эти данные выносил тригером в соседнюю таблицу (т.е. эти ‘тормоза’ были бы в момент заливки данных о товарах и скидках в базу), а на запросе брал бы информацию из нее.
- Вконтакте
Принцип прост, если получение данных сложным запросом при каждом обращении — долго, то нужно результаты этих запросов кэшировать, т.е. задача превращается в поиск механизмов своевременного обновления кэша. Один из способов — возложить контроль над тем что кэш будет соответствовать данным — триггеры базы данных, настраиваете вызов обновления кэша на изменение данных, от которых он зависит.
На практике лучше кэшировать не конечные данные, а промежуточные, выбирая их таким образом, чтобы итоговый запрос был максимально оптимальным. Т.е. например вот эти подзапросы с limit (кстати их можно и другим способом оптимизировать но надо разбираться с базой данных более глубоко).
Оптимизация SQL-запросов OpenCart 1.5.5.1
В общем то все три мнения имеют право на жизнь, но споры часто достигают масштаба холивара. Беда в том, что споры эти часто теоретические. Оптимизаторы в качестве панацеи от всех бед выбирают кэширование — пытаются кэшировать все и вся. А по-моему начинать надо с оптимизации SQL-запросов, а уже потом применять кэширование.
Начальные условия
- Интернет-магазин CD/DVD дисков.
- Количество категорий (разделов-подразделов): 278
- Количество товаров: 68800.
- Атрибутов и категорий нет.
- Магазин одноязычный.
Я выбрал себе простой сценарий тестирования: Главная страница — Страница категории — Страница подкатегории — Страница товара. Перед запуском сценария очищал кэш MySQL и файловый кэш OpenCart.
Медленные запросы
При помощи стандартного средства MySQL — журнала медленных запросов (или Slow Log) удалось обнаружить 3 самых медленных из частых запросов. Вот они:
(1) Запрос получает всего навсего список товаров в категории с разбивкой на страницы, с сортировкой.
(2) Запрос подсчитывает общее количество товаров в выбранной категории.
(3) Формирование SEO_URL.
Третий запрос самый простой, но и его можно оптимизировать. Нужно уменьшить длину поля `query`, по-умолчанию она 255 символов, 32 символа будет достаточно. Потом надо создать индекс по этому полю. Уменьшение длины поля необходимо для того, чтобы уменьшить общий размер индекса таблицы. Если индекс помещается в CACHE_INDEX MySQL, то поиск по нему идет быстрее.
Запросы (1) и (2) формируются в файле catalod/model/catalog/product.php, в методах класса ModelCatalogProduct соответственно getProduct и getTotalProducts. Будем оптимизировать PHP-код класса.
Оптимизация класса ModelCatalogProduct
Во многих контроллерах вызов методов getProducts и getTotalProducts происходит парно: Добравив к запросу (1) параметр SQL_CALC_FOUND_ROWS можно в одном запросе не только загрузить из базы N записей, ограниченных условием LIMIT, но и подсчитать все найденные записи. Тогда запрос (2) уже будет не нужен.
Еще MySQL сам по себе кэширует результаты SQL-запросов, поэтому в дополнительном кэшировании SQL мало смысла. Только MySQL не кэширует запросы, содержащие NOW(). Заменим в запросах NOW() на date(‘Y-m-d H:i’).’:00′ или даже date(‘Y-m-d H’).’:00:00′ .
В самом конце метода getProducts для каждого товара вызывается другой метод getProduct , в котором, в свою очередь, выполняется еще один SQL-запрос: В этом запросе при помощи вложенных SQL-запросов вновь вычисляется цена товара с учетом скидок и акций, и вновь вычисляется звездный рейтинг товара. Можно использовать данные, полученные при помощи запроса (1).
Оптимизированный OpenCart можно потестировать. Измененные файлы доступны в виде commit.
Дальнейшая оптимизация
Для дальнейшего ускорения SQL-запроса (1) можно сделать денормализацию базы данных. В таблицу `oc_product` добавить два поля rating и reviews для хранения рейтинга товара и количества оценок, формирующих этот рейтинг. Значения полей тогда можно будет вычислять не при каждом запросе, а только при одобрении рейтинга администратором магазина.
Если отказаться от скидок и акций, то можно еще ускорить SQL-запрос (1), удалив из него подзапросы: и заменив их на
Полезные SQL запросы в OPENCART
В этой статье мы рассмотрим полезные SQL запросы, который могут нам помочь в рутинной работе: изменение текста, добавление к тексту, изменение цен. Пример рассмотрим на популярном движке для интернет-магазина Opencart. Структуру таблиц базы будет использовать от 2й версии Опенката. Перейдем сразу к конкретике.
SQL запрос к базе можно сделать 2-мя основными способами:
- Через phpMyAdmin или другое подобное приложение для работы с MySQL. Обычно в phpMyAdmin можно зайти через панель управления хостингом. Нужно выбрать нужную Вам базу и зайти во вкладку SQL b вставить приведенный ниже запросы, заранее подправив под свои нужды.
- Через систему восстановления Opencart. Для этого перейдите Система — Инструменты — Бэкап / Восстановление. Далее выберите заранее подготовленный файл с SQL запросом (создайте в текстовом редакторе файл с расширением sql и в него добавьте код) нажмите кнопку (вверху справа) восстановить.
Теперь к самим примерам. Я привожу те случаи, с которыми я сталкивался, с моими цифрами, названиями таблиц и префиксами. Вы же должны подправить под свои данные!
Рекомендуем VPS и хостинг для интернет-магазина с функцией «Все включено» (бекап, администрирование, панель управления, DNS). Активация в течении 1 мин — https://adminvps.ru/host/hosting_internet_magazin.php
1. Массовое изменение цены в Opencart
Этот пример разделит все цены на 65.99, так мы можем перевести цены в рублях на доллары.
P.S позже опишу, как сделать цены в админке в валюте, а для пользователей в рублях.
Немного усложним, добавим условие
Так мы сделаем те же действий, но для тех товаров, у которых цена больше 1
Аналогично, Вы можете добавить свои условия, по другим полям.
Допустим, Вам нужно увеличить цену на 7%
Т.е в рамках запроса, мы можем производить математические действия +-*/.
Вычитаем 8% от товаров определенного производителя
Сам manufacturer_id можете узнать в админке, зайдя в производители и наведя курсор на «Изменить». Там в ссылке Вы его и увидите. Или же посмотрите в базе oc_manufacturer.
2. Массовое изменение мета тегов в Opencart
Рассмотрим на таком примере, Вы собрали базу, импортировали, но в ней есть наименование Вашего поставщика. И нужно заменить его на Ваше название.
Изменяем метатег title
Изменяем метатег description
Изменяем метатег description
Также можно добавить приставку Вашей фирмы в конце мет тегов, например тайтла. Для остальных по аналогии с вышеприведенными примерами.
Это основные примеры, которыми я пользуюсь. Они хорошо тем, что можно не использовать сторонние модули и тем более их покупать, если Вам это нужно проделывать не так часто. Или Вы часто создаете интернет магазины.
P.S Вы также можете использовать сразу несколько команд, каждая с новой строки и обязательно в конце каждой команты точка с запятой.