Как Оптимизировать и Ускорить Базу Данных WordPress

В этом руководстве мы расскажем об общей структуре БД, а также о множестве методов оптимизации, которые помогут ее ускорить

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

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

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

Как понять структуру базы данных WordPress

Одним словом, база данных WordPress — это основа вашего сайта. В ней хранится практически все: контент, данные пользователей, настройки и многое другое. Что касается WordPress, то «таблицы» базы данных отвечают за хранение определенных типов информации.

Платформа использует системы управления базами данных MySQL или MariaDB, а доступ к ним осуществляется с помощью таких инструментов, как phpmyAdmin или Adminer:

Доступ к базе данных WordPress с помощью phpMyAdmin.

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

При установке WordPress создает набор таблиц по умолчанию, чтобы охватить все типичные случаи использования, которые вам понадобятся. Однако плагины, темы и установка могут также создавать таблицы для хранения специфических и связанных с ними данных.

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

Понимание структуры базы данных для WordPress очень важно по двум причинам:

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

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

Таблицы, специфичные для WordPress

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

Хотя мы не будем рассматривать их все здесь, вы будете сталкиваться с некоторыми таблицами чаще, чем с другими:

  • wp_options. Здесь хранятся настройки всего сайта, и это, пожалуй, одна из самых посещаемых таблиц в вашей базе данных. Вы захотите сохранить эту таблицу с помощью хорошей оптимизации.
  • wp_postmeta. Здесь хранятся метаданные ваших постов. По мере роста вашего сайта эта таблица может стать одной из самых больших в вашей базе данных.
  • wp_users и wp_usermeta. В этих двух таблицах хранится вся информация о пользователях вашего сайта и их метаданные. В некоторых редких случаях вам может понадобиться зайти сюда, чтобы изменить пароль, если вы заблокированы в WordPress.

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

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

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

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

Поэтому есть две основные причины, по которым регулярная оптимизация базы данных WordPress должна стать основным элементом рабочего процесса:

  • Повышение скорости и производительности сайта. Со временем ваша база данных WordPress будет содержать ненужные или избыточные данные, такие как переходные опции, изменения в постах, спам-комментарии или устаревшие черновики. Это приведет к снижению скорости получения информации.
  • Улучшение пользовательского опыта. Пользователи также ожидают плавной и быстрой работы с сайтом. Хорошо оптимизированная база данных обеспечивает более быструю загрузку страниц и более эффективную обработку данных. Проще говоря, каждое взаимодействие на сайте зависит от запросов к базе данных. Повышение эффективности приводит к улучшению пользовательского интерфейса.

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

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

Одним словом, оптимизация базы данных WordPress увеличит время отклика. Задержка загрузки даже на несколько секунд может привести к увеличению числа отказов и потере трафика, что не лучшим образом сказывается на рейтинге сайта в поисковой выдаче.

Как проводить регулярное обслуживание и чистку

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

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

WP-Optimize — популярное решение для этой задачи. В плагине есть множество способов оптимизировать базу данных. Есть и другие, но именно этот имеет отличные оценки и отзывы на WordPress.org, бесплатен и регулярно обновляется.

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

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

Что нужно сделать, прежде чем приступать к оптимизации

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

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

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

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

Вкратце, процесс заключается в том, чтобы выбрать все ваши таблицы, а затем использовать кнопку Check table для создания отчета.

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

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

Как оптимизировать БД в ручную

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

Во многих случаях вы уже находитесь в базе данных для вашего сайта WordPress. В любом случае, вы увидите список таблиц в вашей базе данных. Просто выделите их все, а затем выберите опцию Optimize table из выпадающего меню, прежде чем нажать кнопку Go:

Через некоторое время вы увидите отчет с описанием состояния каждой таблицы в вашей базе данных:

Как оптимизировать БД с помощью WP-Optimize

С помощью WP-Optimize перейдите в WP-Optimize > База данных > Оптимизации. Здесь нажмите кнопку Запустить оптимизацию рядом с опцией Оптимизировать таблицы базы данных:

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

2. Очистка ревизий постов

Система редактирования постов WordPress означает, что каждое ваше сохранение может со временем накапливаться. Вы можете легко удалить их из своей базы данных с помощью SQL-запросов. Самый простой способ — сделать это с помощью одной строки:

DELETE FROM wp_posts WHERE post_type = 'revision';

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

DELETE FROM wp_posts WHERE post_type = 'revision';
DELETE FROM wp_term_relationships WHERE object_id NOT IN (SELECT ID FROM wp_posts);
DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT ID FROM wp_posts);

Разумеется, при копировании и вставке этих данных вы должны использовать правильный префикс таблицы для вашей собственной базы данных. С плагином эта задача занимает считанные секунды. Как и в случае с общей оптимизацией базы данных WordPress, WP-Optimize дает вам возможность нажать одну кнопку изнутри WordPress:

В будущем вы можете ограничить количество ревизий, используемых WordPress, через доступ к вашему файлу wp-config.php. Здесь добавьте в файл следующую строку и сохраните изменения:

define( 'WP_POST_REVISIONS', X );

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

3. Удаление спам-комментариев и удаленных элементов

Мы также можем использовать SQL-запросы для удаления спам-комментариев. Обратите внимание, что при модерации комментариев нежелательные остаются в базе данных в течение 30 дней. Это означает, что комментарии, помеченные как спам в течение этого периода времени, будут оставаться в вашей базе данных.

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

DELETE FROM wp_comments, wp_commentmeta
ИСПОЛЬЗОВАНИЕ wp_comments
LEFT JOIN wp_commentmeta ON wp_comments.comment_ID = wp_commentmeta.comment_id
WHERE wp_comments.comment_approved = 'spam';

Аналогично обстоит дело с элементами, которые вы отправляете в корзину в WordPress. Там может быть много контента, который можно удалить с помощью другого SQL-запроса:

DELETE p, pm, tr
FROM wp_posts p
LEFT JOIN wp_postmeta pm ON p.ID = pm.post_id
LEFT JOIN wp_term_relationships tr ON p.ID = tr.object_id
WHERE p.post_status = 'trash';

Как и в случае с ревизиями постов, в файле wp-config.php можно задать значения для времени удаления мусорных элементов:

define( 'EMPTY_TRASH_DAYS', X )

В WP-Optimize есть три опции, которые помогут вам удалить спам-комментарии и корзину WordPress:

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

4. Удалите неиспользуемые теги

Таксономии очень важны для WordPress, но со временем они могут превратиться в огромную коллекцию. Это отличный пример для оптимизации базы данных, и, как и в случае с другими техниками, вы можете использовать SQL-запрос:

DELETE t, tt
FROM wp_terms AS t
INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id
LEFT JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.taxonomy = 'post_tag' AND tt.count = 0;

Ближайшая опция для удаления неиспользуемых тегов в WP-Optimize — Clean post meta data. Она оценивает, есть ли у вас бесхозные метаданные, и удаляет их:

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

5. Избавьтесь от пингбэков и трекбэков

Мы не уверены, сколько сайтов WordPress используют пингбэки и трекбэки в нынешнюю эпоху, но они все еще могут загромождать вашу базу данных, если вы оставите эту настройку включенной. В первую очередь необходимо проверить, отключена ли у вас эта опция. Это легко сделать на экране Настройки > Обсуждение в WordPress:

В разделе Default Post Settings убедитесь, что вы сняли флажки с опций «Attempt to notify any blogs…» и «Allow link notifications…», и сохраните изменения. Далее вернитесь в инструмент управления базой данных и выполните следующий запрос:

DELETE c, cm
FROM wp_comments c
LEFT JOIN wp_commentmeta cm ON c.comment_ID = cm.comment_id
WHERE c.comment_type IN ('trackback', 'pingback');

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

Как только вы выполните эту работу, вы больше не увидите трекбеков и пингбеков в вашей базе данных!

Использование автоматической оптимизации базы данных WordPress от Kinsta

Клиентам Kinsta не нужен плагин для оптимизации базы данных WordPress. Мы проводим постоянную автоматическую оптимизацию для всех сайтов в круглосуточном режиме. Это означает, что вам не нужно ничего знать о SQL-запросах, о том, где находятся данные в вашей базе данных, или о чем-либо еще, имеющем отношение к оптимизации базы данных WordPress.

Непрерывная оптимизация базы данных является частью нашего мониторинга производительности приложений (APM). Это позволяет поддерживать базу данных WordPress (и сайт) в рабочем состоянии без необходимости ручного вмешательства.

APM очищает вашу базу данных, удаляя ненужные данные, такие как переходные периоды, осиротевшие метаданные и спамные комментарии. Таким образом, вы можете быть уверены, что ваша база данных остается оптимизированной без необходимости вмешательства.

Использование APM не является основной темой этого поста, но мы рассказываем о нем в нашей документации. Когда речь идет о мониторинге базы данных, APM следит за самыми медленными SQL-запросами, которые выполняются:

Доступ к APM осуществляется через панель MyKinsta, а именно через экран APM. Обратите внимание, что вам может потребоваться сначала включить его:

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

Как оптимизировать запросы к базе данных для повышения эффективности

Оптимизация запросов к базе данных, которые вы используете, очень важна для повышения производительности и скорости вашего сайта WordPress. Эффективные запросы означают более быстрое получение данных, что, в свою очередь, приводит к улучшению времени загрузки и повышению качества работы пользователей.

Учитывая, что вы можете использовать запросы для оптимизации базы данных WordPress, вот несколько советов о том, как сделать их более эффективными:

  • Оптимизируйте структуры запросов. Вы заметили, что мы не используем подстановочные знаки (или звездочки) в наших примерах запросов. Вместо того чтобы использовать SELECT *, уточните, какие именно столбцы вам нужны. Кроме того, по возможности используйте JOIN вместо подзапросов. Подзапросы могут быть менее эффективными, особенно если они не имеют хорошей структуры или содержат большие наборы данных.
  • Используйте кэширование запросов. Такие инструменты, как Redis, могут хранить результаты запросов в памяти. Это означает, что результаты запроса можно получить из кэша, а не запрашивать базу данных в следующий раз.

Это лишь общие советы, но вы можете сделать гораздо больше. Давайте быстро рассмотрим это далее.

Продвинутые советы по оптимизации и устранению неполадок в базе данных WordPress

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

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

Затем выберите столбцы, которые вы хотите проиндексировать, и выберите опцию Index в нижней части таблицы:

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

Оператор EXPLAIN также может помочь вам понять, как MySQL выполняет ваш запрос. Это поможет вам обнаружить неэффективность и понять, как ваш запрос взаимодействует с индексами. Чтобы запустить этот оператор, добавьте его в начало существующего запроса. Когда вы запустите его, SQL разберет, как он будет выполнять запрос:

Мы не можем рассказать здесь обо всем, что касается оператора EXPLAIN, хотя в документации MySQL описано практически все, что вам нужно знать о нем.

Мониторинг производительности

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

Многие из техник, которые мы рассмотрим в этом посте, будут направлены на мониторинг производительности, например, использование EXPLAIN для медленных запросов. Однако возможно и многое другое. На самом деле phpmyAdmin включает свои собственные показатели производительности на вкладке Status для сервера:

Это позволяет просматривать время выполнения запросов и процессы (на вкладке Query statistics ), что помогает выявить те запросы, которые нуждаются в оптимизации. Для расширенного мониторинга неоценимую помощь окажет MySQL Workbench:

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

В рамках WordPress, есть многолетний плагин Query Monitor. Он позволит вам отслеживать запросы к базе данных, хуки, условия, HTTP-запросы и многое другое.

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

Как работать с большими базами данных в WordPress

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

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

  • Архивируйте старые данные. Вместо того чтобы хранить все данные в реальном времени, подумайте об архивировании старых постов или пользовательских данных, к которым вы не обращаетесь регулярно.
  • Используйте сеть доставки контента (CDN). Выгрузка и обслуживание статических ресурсов, таких как изображения, видео и загрузки, с другого сервера может снизить нагрузку на ваш сайт и помочь ускорить его работу. Более того, ваш сайт будет быстрее загружаться для пользователей независимо от того, где они находятся.
  • Пользовательские запросы. Если вы являетесь разработчиком WordPress, напишите эффективные запросы для своих тем и плагинов. Это поможет вам получать только то, что нужно, и поддерживать эффективность на высоком уровне.

Вы можете даже рассмотреть такие передовые методы, как разделение таблиц и «шардинг базы данных» В этом случае данные распределяются по нескольким базам данных. Это очень сложно и, как правило, требует экспертного управления.

Кстати говоря, эксперты просто необходимы, когда речь идет о высокой производительности вашей базы данных и подключенного к ней сайта. WordPress-хостинг Kinsta масштабируется, управляется и оптимизируется для платформы.

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

Резюме

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

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

Мы будем рады узнать, помогли ли вам наши советы по оптимизации базы данных WordPress. Сообщите нам, какие из них оказали наибольшее влияние, в разделе комментариев ниже!

Джереми Холкомб

Редактор по контенту и маркетингу в Kinsta, веб-разработчик WordPress и автор контента. Помимо WordPress, я люблю пляж, гольф и кино. А еще у меня проблемы с высокими людьми ;).

Читайте так же

Обратная связь

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

  • Электронная почта: Пишите нам на info@kowalski.su для подробных запросов или отправки дополнительных материалов. Мы обеспечиваем оперативный ответ и всестороннюю информацию.
  • Телефон: Звоните на номер +7 (906) 825 44-41 для немедленной помощи или консультации. Рабочие часы с 7:00 до 15:00 (МСК).
  • Telegram: Для быстрой связи используйте наш Telegram-канал @ivan_zh. Идеально подходит для получения оперативных ответов.

Откройте новые возможности с интеграцией WordPress и Bitrix24

Отличных вам сайтов!

Задать вопрос