»  Производительность  »  База данных Вордпресс

База данных Вордпресс

Как работает база данных ВордпрессБаза данных — это библиотека сайта, в которой в соответствующих разделах находится вся информация сайта, от имен пользователей и паролей до комментариев и содержания постов и страниц. MySQL — софт библиотеки, phpMyAdmin — веб-интерфейс для управления MySQL, SQL — язык запросов для управления софтом.

Кроме Вордпресс, софтом MySQL пользуются Drupal, Joomla, Google, Facebook, YouTube, Twitter и другие.

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

Содержание:

Что такое MySQL
Архитектура базы данных Вордпресс
Движки MySQL
Оптимизация базы данных

  1. Устанавливайте только те плагины, которые будете использовать
  2. Спам
  3. Ревизии постов
  4. Удаление неиспользуемых таблиц
  5. Оптимизация БД вручную
  6. Оптимизация БД при помощи плагинов

Восстановление БД
База данных свежей установки Вордпресс 4.9.8
Как работает кеширование базы данных
Заключение

Что такое MySQL

Вордпресс использует SQL-запросы для работы с базами данных MySQL. Например, если у пользователя есть роль Подписчика на сайте, SQL используется для входа пользователя на сайт. При помощи sql запросов пользователь находится в базе данных, проверяются его права доступа и дается разрешение на вход. После этого проверяется правильность выведенных данных во фронт-энде.

PHP и SQL создают динамический контент, который зависит от разных факторов, например, ID пользователя и Роль на сайте. Это позволяет показывать или скрывать контент для разных пользователей, например, Администратора, Редактора или Подписчика.

Архивы Рубрик и Меток тоже делаются с помощью sql запросов.

Кроме ядра Вордпресс базу данных используют темы и плагины. Они хранят свои настройки в базе данных, во время работы они создают SQL запросы к базе данных и получают ответы.

Это суть работы базы данных.

Архитектура базы данных Вордпресс

База данных стандартной установки Вордпресс состоит из 11 неудаляемых таблиц, которые используются Вордпресс для своей работы.

  • wp_commentmeta — метаданные всех комментариев на Постах и Страницах и в кастомных видах записей.
  • wp_comments — все комментарии на сайте, включая Опубликованные, Ожидающие проверки, Одобренные и Спам.
  • wp_links — информация о ссылках в менеджере ссылок; эта функция сейчас редко используется, после версии 3.5 скрыта по умолчанию.
  • wp_options – самая большая таблица Вордпресс, в которой хранится множество настроек, от адреса сайта до настроек Чтения и Обсуждения. В этой таблице хранят свои записи темы и плагины.
  • wp_postsmeta – в этой таблице хранятся метаданные постов и страниц.
  • wp_posts – хранит контент постов и страниц и данные меню и навигации.
  • wp_terms – эта таблица хранит категории постов, ссылок и тегов.
  • wp_term_relationships – сообщения связаны с категориями и тегами в таблице wp_terms, эти ассоциации хранятся в таблице wp_term_relationships.
  • wp_term_taxonomy – хранит таксономию категорий, ссылок и тегов для записей в таблице wp_terms.
  • wp_usermeta – хранит метаданные всех пользователей из таблицы wp_users.
  • wp_users – в этой таблице хранятся данные о всех пользователях сайта.

В структуру базы данных мультисайт установки Вордпресс добавлено еще несколько таблиц:

  • wp_blogs – каждый сайт Мультисайт сети хранится здесь.
  • wp_blog_versions – хранит текущую версию базы данных каждого сайта в сети, и используется в основном для обновления Мультисайт сети. Обновляется когда обновляется каждый сайт.
  • wp_registration_log – хранит информацию о пользователях на каждом сайте.
  • wp_site – содержит адрес сайта.
  • wp_sitemeta – эта таблица хранит разные настройки сайтов.
  • wp_users – содержит данные о всех пользователях. Такая же таблица есть в одиночной установке Вордпресс, но в этой таблице есть 2 дополнительных поля / строки: Спам и Удаленные.
  • wp_usermeta – содержит метаданные каждого пользователя каждого сайта.

Кроме этих таблиц добавляются таблицы каждого подсайта в мультисайт установке, например, wp_2_commentmeta, wp_2_comments, wp_2_links и так далее. Данные основного сайта хранятся в своих основных ненумерованных таблицах.

Плагины хранят свои данные в базе данных

Когда вы устанавливаете новый плагин, он использует базу данных сайта для хранения своей информации. Например, плагин рекламы создает место для вставки рекламы и хранит это место и саму рекламу в базе данных. При запросе нужной страницы плагин извлекает эту информацию из базы данных и помещает ее в нужное место. Без базы данных плагин не сможет это делать.

Плагины могут использовать стандартные таблицы Вордпресс, например, wp_posts или wp_postsmeta, или создавать свои собственные таблицы. Некоторые плагины создают свои собственные таблицы, например, WooCommerce. Он создает 8 собственных таблиц, которые хранят ID товаров, заказы, налоги и так далее.

Считается более предпочтительным, чтобы плагины использовали стандартные таблицы Вордпресс для хранения своей информации, например, таблицу wp_options, но это не всегда возможно, особенно для таких больших плагинов как WooCommerce.

После того, как вы удалили плагин, можно удалить его таблицы в базе данных, потому что через некоторое время база данных будет наполнена большим количеством неиспользуемых таблиц. Некоторые плагины имеют встроенную опцию удаления своих таблиц из базы данных после своего удаления, некоторые — нет. Удаляйте таблицы осторожно, потому что удаленные таблицы нельзя восстановить.

Движки MySQL

MySQL использует разные движки для хранения и извлечения информации из таблиц базы данных. MySQL поддерживает несколько движков, самые популярные из них — MyISAM и InnoDB.

В большинстве случаев в конфигурационном файле MySQL по умолчанию установлен движок MyISAM.

Вы можете заменить движок MyISAM на InnoDB. MyISAM быстро считывает информацию. InnoDB тоже быстро считывает информацию, но записывает информацию быстрее с помощью механизма блокировки строк. Так как Вордпресс и считывает, и записывает информацию в базу данных, InnoDB будет лучшим выбором.

Движок InnoDB в базе данных

Обычно движок MyISAM установлен по умолчанию на недорогих хостингах. Чтобы сменить движок хранения базы данных, сделайте бэкап и используйте этот запрос:

SET default_storage_engine=InnoDB;

Чтобы изменить движок только одной таблицы, используйте этот запрос:

ALTER TABLE table_name ENGINE=InnoDB;

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

Оптимизация базы данных

Одна из причин медленного сайта — неочищенная и неоптимизированная база данных.

Первая оптимизация — измените движок на InnoDB. После этого очистите базу данных от мусора и оптимизируйте ее.

Перед очисткой / оптимизацией сделайте бэкап базы данных.

Устанавливайте только те плагины, которые будете использовать

Простой способ оптимизировать базу данных, ничего не делая — не устанавливайте плагины для тестирования на сайте. Для тестирования плагинов лучше иметь отдельный сайт на техническом домене или на локальном сервере.

Каждый плагин, который вы устанавливаете на сайт, создает свои записи в базе данных, то есть увеличивает размер базы данных.

Существует 5 видов плагинов, которые создают большое количество информации в базе данных:

  • Плагины безопасности. Большинство плагинов безопасности хранят большое количество информации об атаках, которые проводились на ваш сайт для защиты его от будущих атак, о спаме, попытках доступа и так далее.
  • Плагины статистики. Эти плагины хранят информацию о страницах, визитах, браузерах, ключевых словах и так далее.
  • Анти-спам плагины. Так же как плагины безопасности, эти плагины хранят большое количество данных об IP-адресах, емейл адресах, странах и так далее.
  • Плагины вывода контента. Вывод статей сайта в тех или иных местах по тому или иному признаку, лайки и визиты страниц, и так далее, эти плагины создают большое количество информации, лучше использовать их по минимуму.
  • Мультиязычные плагины. Плагин WPML создает большое количество таблиц и записей в БД.

Старайтесь использовать плагины статистики и вывода контента как можно меньше.

Спам

Спам — еще один источник наполнения базы данных мусором. Вы можете удалить весь спам в базе данных при помощи SQL запроса:

DELETE FROM wp_comments WHERE comment_approved = ‘spam’

Или из админки Вордпресс. Зайдите в КомментарииСпам, нажмите кнопку «Очистить спам». Перед удалением всех комментариев проверьте их, в спам могли попасть нужные комментарии.

Если вы не хотите бороться со спамом ручным способом, используйте плагин Kama SpamBlock.

Ревизии постов

В версии 2.6 появилась функция ревизии постов, которая позволяет хранить предыдущие версии постов, в том числе черновики и обновления. Автосохранение сохраняет только последнюю версию, предпоследняя версия автосохранения удаляется автоматически. Теперь база данных не будет переполняться автосохранениями, но будет наполняться ревизиями, когда вы нажимаете «Обновить» или «Сохранить Черновик».

Ревизии постов — полезная функция, и количество ревизий можно ограничить. Добавьте эти строки в wp-config.php:

Замените 4 на нужное количество, -1 если вы хотите сохранять все ревизии и 0, если хотите выключить ревизии вообще, кроме автосохранения.

Чтобы удалить ревизии существующих постов, используйте этот запрос:

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

Если вы не хотите использовать запросы, используйте плагин Optimize Database after Deleting Revisions или один из этих плагинов.

Удаление неиспользуемых таблиц

Плагины, которые создают таблицы в базе данных, обычно не удаляют их после своего удаления. Если вы удалили плагин и не планируете снова его использовать, вы можете удалить его таблицы из БД. Для этого вы можете использовать плагин Advanced Database Cleaner или Advanced Database Cleaner Pro, или сделать это вручную.

Не существует какого-то простого способа узнать, какие таблицы БД больше не используются, хотя обычно плагины называют свои таблицы именем плагина или главным классом плагина. Если вы не знаете, к чему относится таблица или запись, лучше не удаляйте или сделайте бэкап, так как удаленную информацию из БД нельзя восстановить.

Оптимизация БД вручную

У MySQL есть стандартная функция оптимизации базы данных OPTIMIZE, которая «реорганизует физическое хранилище табличных данных и связанных с ними индексных данных, чтобы уменьшить пространство для хранения и повысить эффективность ввода-вывода при доступе к таблице». В разных движках запрос optimize работает по-разному.

Вы можете оптимизировать базу данных запросом optimize в phpMyAdmin. Подробнее здесь.

Оптимизация БД при помощи плагинов

Если вы хотите, чтобы эту работу делал плагин, попробуйте WP-Optimize, это простой и популярный плагин, сейчас у него более 600.000 установок. Он удаляет ревизии постов, старые метаданные, черновики постов и удаленные комментарии.

Он может применять стандартный запрос OPTIMIZE к базе данных, так что вам не придется делать это вручную.

Восстановление БД

Если ваша база данных повредилась, попробуйте восстановить ее с помощью модуля Добавьте этот код в wp-config.php:

Сохраните файл, откройте в браузере этот адрес:

www.ваш-сайт.ru/wp-admin/maint/repair.php

На открывшейся странице вы можете восстановить базу данных, или восстановить и оптимизировать. Выберите свой вариант, Вордпресс попытается восстановить поврежденную базу данных.

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

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

База данных свежей установки Вордпресс 4.9.8

Как работает кеширование базы данных

Transients API

Options API — стандартный способ хранения информации в базе данных с простым созданием, обновлением и удалением записей. Transients API похож на Options API, но с дополнительной функцией срока хранения, которая упрощает работу с таблицей wp_options для временного хранения кешированной информации.

В Вордпрессе транзитное кеширование используется для постоянно обновляющихся данных, которые обновляются после установленного срока хранения.

Суть в том, чтобы кешировать постоянно создаваемые запросы к базе данных (например, при загрузке следующих страниц сайта) и обновлять их время от времени, не тратя времени на их создание и доставку пользователю.

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

Удаляйте transients с осторожностью.

Memcached

Memcached позволяет кешировать большие запросы к БД в оперативной памяти, это уменьшает количество обращений к базе данных. Это ускорит загрузку страниц, так как данные уже загружены без обращения к БД.

После того как вы обновили какую-то страницу на сайте, сбросьте кеш, чтобы увидеть изменения.

Если вы хотите использовать Memcached с плагином кеширования, например, W3 Total Cache, то сначала нужно настроить Memcached на сервере, после этого подключить Memcached к плагину кеширования. Неправильно настроенный модуль Memcached может нарушить работу базы данных или сайта, могут появиться проблемы с автоматическим обновлением или проблемы с темами и плагинами, которые используют transients.

Redis

Модуль Redis — это продвинутая технология хранения и кеширования базы данных в оперативной памяти, которая позволяет загружать страницы гораздо быстрее.

Чтобы подключить Redis к своему сайту, используйте плагин Redis Object Cache. Перед этим настройте Redis с помощью скрипта Predis или расширения Redis HHVM.

Не храните большие блоки данных в каждом ключе и старайтесь не создавать большого количества ключей, иначе теряется смысл использования кеширования базы данных. Если вы создадите тысячи Redis запросов, это приведет к более длительной передаче кеша.

Разница между Memcached и Redis в том, что Memcached — это технология кеширования в оперативной памяти, а Redis — это сервер с правильно организованной структурой данных, который может быть использован для реального хранения данных, а не просто в качестве хранилища обновляемого кеша.

Заключение

База данных — это основа любого сайта. Работа с базой данных может казаться трудной задачей, но если вы поняли механизм работы базы данных и используете хороший плагин, вы можете настроить это один раз и забыть.

Оставьте комментарий