Вопрос-ответ

Популярные вопросы с ответами для владельцев и разработчиков сайтов

Какую БД использует WordPress?

WordPress использует реляционные базы данных MySQL или её форк MariaDB. Это официально поддерживаемые и рекомендуемые системы управления базами данных (СУБД) для всех версий WordPress. На практике большинство хостингов предоставляют именно MySQL, однако MariaDB, которая является совместимой заменой, также работает без каких-либо изменений в коде. Другие базы данных, такие как PostgreSQL или SQLite, официально не поддерживаются, хотя существуют экспериментальные плагины и форки для их использования.

Почему WordPress использует MySQL

Выбор MySQL в качестве основной базы данных для WordPress обусловлен несколькими историческими и техническими причинами. На заре создания WordPress (и его предшественника b2/cafelog) MySQL была самой популярной бесплатной СУБД в связке с PHP. Эта связка (LAMP: Linux, Apache, MySQL, PHP) стала стандартом де-факто для хостинга. MySQL отлично интегрируется с PHP через расширения mysqli и PDO, обеспечивая высокую производительность для типовых задач веб-сайтов: чтение записей из блога, навигация по категориям, поиск, комментарии. Поэтому миллионы хостинг-провайдеров предлагают готовые тарифы с предустановленным WordPress и MySQL в один клик.

Структура базы данных WordPress

База данных WordPress состоит из 12 стандартных таблиц (количество может увеличиваться при добавлении плагинов и мультисайтовости). Каждая таблица отвечает за определённый тип данных. Префикс таблиц по умолчанию — wp_, но при установке его можно изменить для безопасности.

Дополнительные поля комментариев (редко используется, но бывает нужно для плагинов)
Название таблицы (с префиксом wp_)Что хранитОсновное назначение
users Данные пользователей: логин, пароль (хеш), email, никнейм, дата регистрации Аутентификация и отображение авторов
usermeta Дополнительные поля пользователей: права доступа, настройки интерфейса, произвольные поля Расширенные настройки профилей
posts Самые важные данные: все записи, страницы, произвольные типы записей, их заголовки, содержимое, даты, статусы Основа контента сайта (80-90% всех данных)
postmeta Произвольные поля для каждой записи: метаданные, настройки плагинов, SEO-заголовки, ключи Расширение функциональности без изменения структуры БД
terms, term_taxonomy, term_relationships Категории, метки, таксономии и связи между ними и записями Организация контента по рубрикам и тегам
options Глобальные настройки сайта: название, URL, тема, активные плагины, таймзона, настройки чтения Работа и конфигурация ядра и тем
comments Комментарии к записям: текст, автор, email, IP, статус модерации Обратная связь и взаимодействие с читателями
commentmeta
Расширенные данные комментариев

Когда вы открываете любую страницу сайта на WordPress, система выполняет десятки SQL-запросов к этим таблицам: выбирает нужную запись из posts, её категории из terms, подтягивает мета-данные из postmeta, информацию об авторе из users и глобальные настройки из options. Всё это происходит за доли секунды.

MySQL против MariaDB: что выбрать для WordPress

На многих хостингах сегодня вместо классической MySQL предлагают MariaDB — форк, созданный разработчиками MySQL из опасений закрытия кода после покупки Oracle. Для WordPress разница минимальна. MariaDB использует тот же протокол, те же структуры таблиц и синтаксис запросов. Вы просто указываете те же параметры подключения (хост, база, пользователь, пароль), и WordPress работает как ни в чём не бывало.

Основные отличия (для гиков):

  • MariaDB имеет несколько более быстрых движков хранения (Aria, ColumnStore) и оптимизатор запросов.
  • В некоторых версиях MariaDB по умолчанию используются другие настройки кодировок (utf8mb4), что лучше для хранения эмодзи и иероглифов.
  • Пул соединений и потоки в MariaDB работают чуть эффективнее при высоких нагрузках.

Если ваш хостинг предлагает выбор, ставьте MariaDB 10.4+ — современнее и быстрее. Но если доступна только MySQL 5.7+, это тоже отличный выбор. WordPress официально поддерживает обе СУБД, начиная с версий MySQL 5.7 и MariaDB 10.2.

0986

Какие данные хранятся в БД WordPress, а какие — в файлах

Важно понимать, что база данных и файловая система в WordPress делят обязанности. Не всё хранится в БД, и это надо учитывать при резервном копировании.

  • В БД хранятся: все тексты постов и страниц, комментарии, логины/пароли, настройки тем и плагинов, URL-адреса медиафайлов (но не сами файлы!).
  • В файлах хранятся: загруженные изображения (JPG, PNG), документы (PDF, DOCX), видео, темы оформления (папка /wp-content/themes/), плагины (/wp-content/plugins/), файлы ядра WordPress.

То есть если вы сделаете резервную копию только базы данных, то восстановите структуру, тексты и настройки, но все картинки и документы пропадут. Полный бэкап должен включать и БД, и папку wp-content/uploads/.

Как WordPress подключается к базе данных

Параметры подключения к БД хранятся в файле wp-config.php в корне сайта. Это самый важный файл конфигурации. Типичный блок подключения выглядит так:

define( 'DB_NAME', 'wordpress_db' );
define( 'DB_USER', 'wp_user' );
define( 'DB_PASSWORD', 'secure_password' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );
define( 'DB_COLLATE', '' );

Параметры DB_HOST чаще всего равен localhost, но на некоторых хостингах может быть указан отдельный сервер БД (например, mysql.example.com). Кодировка utf8mb4 поддерживает эмодзи и все символы Юникода — это стандарт для современных сайтов.

WordPress использует PHP-расширение mysqli для подключения к базе. Если ваш хостинг использует устаревшее расширение mysql, WordPress выдаст ошибку и не установится.

Альтернативные БД: можно ли использовать PostgreSQL или SQLite

Официально — нет. WordPress из коробки работает только с MySQL/MariaDB. Однако энтузиасты разработали несколько решений:

  • pg4wp — плагин, который перехватывает SQL-запросы WordPress и преобразует их в синтаксис PostgreSQL. Работает, но медленнее и не для всех плагинов. Подходит для экспериментов.
  • SQLite Integration — плагин для использования SQLite вместо MySQL. SQLite хранит всю БД в одном файле (как в Drupal). Это удобно для локальной разработки или очень маленьких сайтов (до 1000 посетителей в день). На реальном хостинге использовать не рекомендуется из-за тормозов.
  • LudicrousDB / HyperDB — решения для распределения нагрузки на несколько серверов БД (обычно MySQL), используются на гигантских проектах типа WordPress.com.

Для подавляющего большинства сайтов (блоги, визитки, небольшие магазины) MySQL/MariaDB более чем достаточно. Переход на PostgreSQL не даст выигрыша в производительности на обычных проектах, а совместимость с плагинами нарушится.

Как оптимизировать базу данных WordPress

Со временем база данных WordPress захламляется: остаются "удалённые" записи, ревизии (история изменений постов), спам-комментарии, транзитные опции. Всё это замедляет сайт. Для очистки используйте:

  • Плагин WP-Optimize — удаляет ревизии, оптимизирует таблицы БД, может сжимать изображения. Бесплатной версии хватает для 90% сайтов.
  • Плагин Advanced Database Cleaner — показывает устаревшие данные, оставленные плагинами после их удаления.
  • Ручной SQL-запрос через phpMyAdmin (только для опытных): OPTIMIZE TABLE wp_posts, wp_postmeta, wp_options;

Периодичность очистки: раз в 1-3 месяца для небольшого блога, раз в 1-2 недели для активного интернет-магазина или новостного портала.

Итог: WordPress использует MySQL (или совместимую MariaDB) в качестве основной базы данных. Это стандартная связка для миллионов сайтов, проверенная временем. Структура БД состоит из 12 таблиц, хранящих пользователей, посты, мета-поля, категории, опции и комментарии. Альтернативные СУБД (PostgreSQL, SQLite) официально не поддерживаются, и их использование на реальных проектах рискованно. Для здоровья сайта важно регулярно оптимизировать базу данных, очищать её от мусора и делать полные бэкапы (БД + загрузки). Если ваш хостинг предлагает выбор между MySQL и MariaDB — выбирайте MariaDB 10.4+, она чуть быстрее и современнее.