Что такое база данных на сайте. Просто о сложном

Инструкция от веб-разработчика Александра Гусева Изображение: unsplash.com

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

Краткий вводный абзац

Любую информацию на сайте нужно где-то хранить. Это факт очевидный. А вот места хранения могут быть разными. Первый вариант – прямо внутри html или php файла. Такой способ встречается часто. Это когда вы открываете страницу в админке, чтобы отредактировать там информацию, а внутри страница пустая. Совсем. Но при просмотре страницы на сайте там есть текст, картинки, другие данные.

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

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

Что такое база данных

Технически это файл с расширением .sql (для сайта на WordPress). Внутри у него есть таблицы, в которых есть строки. А уже в строках записаны данные. Именно отсюда эти данные и берутся для вывода на страницах сайта. Главное преимущество такой схемы хранения данных – вся информация лежит в одном файле. А значит, ее можно легко сохранить.

Помимо информации страниц, в базе данных содержится много служебной информации. В общем, важный файл. Посмотреть список баз данных вашего аккаунта на хостинге можно в разделе «Базы данных».

Список баз данных на хостинге Timeweb
Список баз данных на хостинге Timeweb.

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

Причем здесь скорость загрузки сайта

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

А это, в первую очередь, данные всех плагинов сайта. Если у вас есть плагин безопасности, который записывает всю активность пользователей (неудачные попытки входа на сайт, активные сессии), то где он хранит все эти данные? Все там же, в базе данных. Только в отдельной таблице.

База данных хранит в себе все комментарии на сайте, данные всех зарегистрированных пользователей, все ссылки и настройки сайта. Короче говоря, вообще все. Без базы данных ваш сайт просто не откроется. Вместо этого выводится пустой экран с фразой «Ошибка установки соединения с базой данных». Поэтому чем больше на сайте контента и плагинов, тем больше размер базы данных. А это значит, что со временем скорость работы сайта может упасть.

Что такое ревизии постов и страниц

По-английски это называется revision. На русский в данном контексте можно перевести как копия (или редакция) страницы. Каждый раз, когда вы изменили страницу на сайте и сохранили ее, WordPress создает копию страницы с вашими изменениями. Если через 5 минут вы вспомнили, что забыли поставить в тексте запятую и снова измените и сохраните страницу, то будет создана еще одна копия.

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

Поэтому время от времени такие копии нужно удалять. Сделать это можно с помощью плагина Optimize Database after Deleting Revisions.

Скриншот страницы плагина в каталоге WordPress
Скриншот страницы плагина в каталоге WordPress.

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

У меня стоят вот такие настройки плагина:

Скриншот настроек плагина оптимизации базы данных
Скриншот настроек плагина оптимизации базы данных.

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

К слову о плагинах – на сайте Теплицы есть статья про плагины под разные задачи для сайта на WordPress. Посмотрите, почитайте.

И вообще, воспринимайте базу данных как шкаф для хранения карточек. Каждый ящик заполнен информацией по своему разделу. Если места в ящике не хватает, то нужно или прибраться в нем, или заводить новый ящик рядом. Много данных – много ящиков. Такая система есть в библиотеках, где хранятся карточки книг – на какой полке какая книга находится. Это самый показательный пример работы базы данных.

Что в итоге

Да, вся эта база данных чуть сложнее, чем правка страниц в админке сайта. Но все равно разобраться можно. Очень рекомендую как минимум проверить размер базы данных вашего сайта. Сделать это можно на хостинге или через плагин, кому как удобней. Увидите там много строк в какой-нибудь таблице – значит, есть повод разобраться в причинах и прибраться там. Сделайте сами или создавайте задачу на it-волонтере. Я подобных задач там не припомню, будет интересно.