Верх страницы
Обложка к записи Оптимизация WooCommerce путём переноса товаров в отдельную таблицу
Время для прочтения: 0 мин. 21 сек.

Оптимизация WooCommerce путём переноса товаров в отдельную таблицу

Одним из самых узких мест в WooCommerce по производительности является хранение товаров и заказов в стандартной таблице записей WordPress.

Благодаря тому, что WooCommerce с версии 3.0 добавили встроенный функционал Data Stores и CRUD, появилась простая возможность переносить хранилище данных в произвольные таблицы.

Плагин WooCommerce Custom Product Tables позволяет в один клик перенести хранилище товаров, атрибутов, изображений, их связей и настроек в произвольные таблицы с правильной структурой и индексами.

Производительность

Перенос товаров в произвольные таблицы по результатам тестирования даёт 30% прирост производительности.

Замеры производились на идентичных инсталляциях (500 товаров, тема Storefront, 70000 заказов и 1.4 млн строк метаданных), но с одним отличием: на второй инсталляции был установлен плагин WooCommerce Custom Product Tables.

Для простого создания огромного количества товаров и заказов был использован плагин WooCommerce Smooth Generator.

Результаты замеров приведены на графике ниже и они потрясающе.

Установка плагина

Для установки плагина вам потребуется:

  • Скачать последнюю версию плагина Custom Products Table.
  • Скачать и установить WooCommerce 3.5 Dev или выше.
  • Скачать и установить WP-CLI для запуска процесса миграции товаров в новое хранилище.

Так как плагин пока находится на стадии разработки, не рекомендуется его устанавливать на продуктовых серверах.

Миграция

Для запуска процесса миграции данных в плагине предусмотрено две WP-CLI команды.

wp wc-product-tables migrate-data [--clean-old-data]

Эта команда перенесёт данные из текущих таблиц WordPress в новое хранилище.

Если передать дополнительный параметр --clean-old-data, то все данные по товарам, которые хранятся в стандартных таблицах WordPress, будут уничтожены безвозвратно.

wp wc-product-tables recreate-tables

Эта команда удалит все свежесозданные таблицы и данные о товарах в них, а затем создаст новые чистые таблицы.

Любые новые товары, созданные после активации плагина, будут созданы в новых таблицах и не будут доступны при деактивации плагина.

Таблицы

После установки и активации плагина будут созданы несколько новых таблиц в базе данных для хранения информации о товарах.

  • wc_products – содержит информацию о товарах, исключая большую часть метаданных.
  • wc_product_attributes – содержит информацию об атрибутах товаров и их настройки.
  • wc_product_attribute_values – содержит информацию о значениях атрибутов товаров и их настройки.
  • wc_product_downloads – содержит информацию о скачиваемых товарах и их настройки.
  • wc_product_relationships – содержит информацию о связях между товаров и их объектов, например, изображений.
  • wc_product_variation_attribute_values – содержит информацию о данных вариаций для товаров.

В настоящее время эти таблицы охватывают все аспекты товаров, в том числе настройки товаров, атрибуты, вариации, скачиваемые товары, а также другие взаимосвязи, такие как апселлы, кросселлы, сгруппированные товары и изображения.

Автор: Кобзарёв Михаил

Русский разработчик с 20-ти летним стажем. Работаю с PHP, ООП, JavaScript, Git, WordPress, Битрикс, Joomla, Drupal, Opencart, DLE, Laravel, Moonshine, SuiteCRM.

Оптимизирую сайты под Google Page Speed, настраиваю импорты для больших магазинов на WooCommerce + WP All Import. Пишу плагины на заказ. Все мои услуги.

Веду блог о разработке, дайджест в телеграмме и в ВК.

Вы всегда можете нанять меня.

Комментарии
Подписаться
Уведомить о
guest

18 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Фахад Сулейманович
Фахад Сулейманович
4 лет назад

Планируете ли Вы объединять этот плагин с WooCommerce Custom Orders Table или даже создавать отдельный WooCommerce Bundle?

Фахад Сулейманович
Фахад Сулейманович
4 лет назад
Ответить на  Кобзарёв Михаил

В ядро WooCommerce или WordPress 5.4?

Фахад Сулейманович
Фахад Сулейманович
4 лет назад
Ответить на  Кобзарёв Михаил

А случайно не знаете, пострадают ли от этого те, кто уже использовал плагин WooCommerce Custom Orders Table? Да и вообще, будут ли предусмотрены какие-то механизмы миграции? Вообще, идея оптимизировать таблицы в БД мне нравится.

Илья Лапочкин
3 лет назад
Ответить на  Кобзарёв Михаил

Приветствую. Подскажите, пожалуйста, где можно подробнее ознакомиться на счет подобной интеграции? Статья, срок, версия.

Олег
Олег
2 месяцев назад

Добрый день, верно понимаю, что так ничем и не закончилась эта история и отдельно товары не выносятся из стандартной таблицы?

Олег
Олег
2 месяцев назад
Ответить на  Кобзарёв Михаил

у нас обмен на сайте используется с мой склад, а не сломается ли эта логика в обмене из-за того, что не стандартные таблицы будут использоваться?

Олег
Олег
2 месяцев назад
Ответить на  Кобзарёв Михаил

и не будет ли ваш плагин конфликтовать с HPOS

Михаил
Михаил
2 месяцев назад

Подскажите есть ли какая то возможность например вынести эти таблицы вообще в отдельную БД от сайта.. и потом с нескольких сайтов использовать централизованную БД с товарами.. т.е в одном месте обновил везде обновилось. Единая БД с товарами для нескольких сайтов. Или где то можно прописать это в плагине что бы сделать эти таблички на отдельном сервере и с отдельного сервера получать. Спасибо вам большое!

Алекс
Алекс
2 месяцев назад

Будет ли все корректно работать с WP ALL IMPORT? Если товары импортируются от поставщика через файл по крону?

Предыдущая запись
Следующая запись

Давайте дружить
в Telegram

Авторский блог вашего покорного слуги в Telegram про web, программирование, алгоритмы, инструменты разработчика, WordPress, Joomla, Opencart, Laravel, Moonshine, фильмы и сериалы