Оптимизация WooCommerce путём переноса заказов в отдельную таблицу
WooCommerce Custom Orders Table — простой, но полезный плагин, который улучшает производительность WooCommerce, добавляя пользовательскую таблицу с правильными индексами для хранения информации о заказах.
Бэкграунд
В WooCommerce 3.0 появился долгожданный CRUD (Create, Read, Update и Delete) интерфейс, благодаря которому появилась возможность унифицировать способ хранения и получения данных WooCommerce.
Однако заказы по-прежнему хранятся в WordPress как пользовательские типы записей, причем каждая дополнительная часть информации о заказе (адрес выставления счета, адрес доставки, налоги, итоги и т. д.) хранится в мета записях.
Не секрет, что WooCommerce создает более 40 отдельных мета записей для каждого отдельного заказа. Если у вашего магазина в день появляется хотя бы 10 заказов, то в таблице мета записей создаётся 400 новых строк каждый день!
Чем больше таблица мета записей, тем дольше будут выполняться запросы, что потенциально замедляет время загрузки страницы для вас и ваших посетителей.
Плагин WooCommerce Custom Orders Table использует WooCommerce CRUD для сохранения данных о заказе в единую произвольную таблицу, оптимизированную для запросов WooCommerce.
Один заказ создает только одну новую строку с минимальным влиянием на производительность.
Требования
Для правильной работы WooCommerce Custom Orders Table необходим WooCommerce 3.5.1 или выше.
Если вы хотите перенести существующие данные о заказах, у вас должна быть возможность запускать команды WP-CLI в вашей среде WooCommerce.
Миграция
После установки и активации плагина вам нужно будет перенести заказы из мета записей во вновь созданную таблицу заказов.
Самый простой способ сделать это — через WP-CLI. Плагин поставляется с тремя командами, которые помогут вам в этом процессе.
Подсчёт количества заказов для миграции
Если вы хотите увидеть количество заказов, которые еще не были перемещены в новую таблицу заказов, вы можете быстро получить это значение с помощью команды count
:
wp wc orders-table count
Миграция заказов в новую таблицу
Команда migrate
перенесёт наиболее распространенные мета записи для заказов WooCommerce в единую таблицу базы данных, оптимизированную для производительности вашего магазина.
wp wc orders-table migrate
Опции
--batch-size=<размер>
— количество заказов, которое обрабатывается за одну итерацию. По умолчанию 100.
--save-post-meta
— предотвращает удаление мета записей из таблицы wp_postmeta
при успешной миграции в новую таблицу.
Копирование заказов обратно в мета записи
Если вам потребуется вернуть данные о заказах обратно в таблицу wp_postmeta
(например при удаление плагина WooCommerce Custom Orders Table), вы можете откатить миграцию в любое время с помощью команды backfill
.
wp wc orders-table backfill
Эта команда выполняет миграцию в обратном порядке, просматривая таблицу заказов и сохраняя каждый столбец в соответствующей мета записи. Имейте в виду, что это может значительно увеличить размер вашей мета таблицы!
Опции
--batch-size=<размер>
— количество заказов, которое обрабатывается за одну итерацию. По умолчанию 100.
Сотрудничество
Если вы заинтересованы в том, чтобы внести свой вклад в разработку плагина или хотите сообщить о проблеме, ознакомьтесь с соответствующим руководством.
Хочу выразить огромную благодарность разработчикам WooCommerce Custom Orders Table — у нас было 18 тысяч заказов, сайт начал дико зависать, а API вообще не отвечало. После переноса всех заказов в единую таблицу уменьшилось количество записей в БД, а поиск по заказам ускорился в разы. Планирую описать свой опыт в статье, а плагин применять в будущем.
Ждём от вас статью. Благодраности передам.
Здравствуйте. Скажите, пожалуйста, если устанавливать плагин на новый сайт, где еще нет заказов, получается и переносить ничего не нужно? Есть ли подробная инструкция установки и настройки плагина на новый сайт?
Да, переносить ничего не нужно, просто поставить плагин и заказы будут падать в отдельную таблицу.