Содержание
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.
Какие данные хранятся в БД 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+, она чуть быстрее и современнее.
