Таблица wp_postmeta весит более 1 гига, что делать?

Ребят, наверное таблица wp_postmeta в Wordpress это настоящая головная боль!
У меня в ней 214677 записей и весит она 1.5 ГиБ (использую движок InnoDB и кодировку utf8mb4_unicode_520_ci). При этом в таблице wp_woocommerce_order_itemmeta 310731 записей и она весит 34.6 МБ.

Пытался чистить вручную, удалил все `meta_value` = '', но это временное решение. Также удалил все записи для несуществующих постов (сравнил наличие айди в таблице wp_posts и wp_postmeta, нет поста - удаляем и мета-данные) - получилось всего 78 постов.

В общем, особо ничего и не удалилось. Возможно есть какие-то плагины или более умные SQL запросы?

В среднем, сайт грузиться за 0,801934 сек и делается 33 запроса к БД (первая загрузка) и 0,592067 сек с 27 запросами к БД (повторная). На сайте более 2000 товаров и 18 тысяч заказов WooCommerce.

Вот так сейчас выглядят таблицы:
5f49584a14996967307528.png
Поэтому возникли такие вопросы:
  1. Игнорировать ситуацию или искать способ почистить БД от мусора?
  2. Из-за чего таблица wp_postmeta весит больше чем таблицы с аналогичным количеством строк?
  3. Могут ли движок InnoDB и кодировка utf8mb4_unicode_520_ci как-то влиять на размер базы? Менять их или оставить как есть?
  • Вопрос задан
  • 1712 просмотров
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Вчера вечером как раз в телеграм канале задавался вопрос :)

SELECT meta_key, meta_value, length(meta_value) 
FROM wp_postmeta 
ORDER BY length(meta_value) DESC
LIMIT 10;


- этот запрос покажет вам 10 самых тяжелых записей в этой таблице
- изменяя LIMIT можно посмотреть больше/меньше записей
- length(meta_value) покажет вес значения в байтах

В итоге это позволило найти какие-то ненужные тяжелые записи в таблице и после чистки с 1+ гига уменьшилось до 300Мб.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@antoshadrobyshev
WordPress & Woocommerce developer
Попробуйте отсортировать таблицу по весу строки и посмотрите, какие строки самые тяжёлые и что в них хранится.
Ответ написан
Kozack
@Kozack Куратор тега WordPress
Thinking about a11y
Ещё можете посмотреть на какой-то плагин аля https://uk.wordpress.org/plugins/advanced-database...
Как посоветовали: проверьте какие метаданные у вас храняться. Возможно какой плагин или ещё что создаёт кучу записей к каждому посту.
В целом, я бы игнорировал ситуацию. У вас же не все метаданные загружаются за раз. Но я не эксперт в вопросе БД.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы