Если на вашем сайте перестали работать поиск и фильтры, проблема может оказаться в базе данных. Такие проблемы достаточно коварны, ведь базу данных нельзя увидеть напрямую. С её помощью мы видим на сайтах различный динамический контент: новости, каталоги, различного рода списки и так далее. Если с этими списками что-то не так, то страница загружается долго или не загружается, что влечёт за собой потерю трафика. В данной статье разберём, что может нарушить стабильную работу базы и как это исправить
Недостаточная производительность
Проблема возникает из-за неоптимизированных компонентов инфраструктуры. Пример обработки данных выглядит следующим образом: посетитель применяет фильтр в каталоге, после чего на сервер уходит SELECT-запрос, после сервер возвращает запрошенные сведения. Если информация разбросана по разным таблицам, представлена во множестве форматов и кодировок, её передача ощутимо замедляется. В результате сайт и его элементы грузятся дольше обычного.
Для решения проблемы можно:
- Кешировать клиентские запросы. Снизить нагрузку на систему позволяет утилита memcached. Она сохраняет данные в кэш-памяти, благодаря чему первый запрос обрабатывается чуть медленнее, а все последующие — значительно быстрее.
- Проверить скорость записи/чтения накопителей. Причиной низкой производительности может быть устаревшее железо. Например, если на сервере установлен медленный HDD-диск, данные с него считываются неторопливо. В данной ситуации рекомендуется заменить диск, например на SSD. Если ваш сайт размещён на хостинге, то нужно уточнять заранее про оборудование.
- Произвести оптимизацию таблиц внутри базы. Если ваша информация раскидана по разным базам данных, нужно всё собрать в единую базу. Если у вас имеется куча дубликатов данных, нужно избавиться от них.
Несогласованность данных
Такая проблема возникает когда в разных таблицах внутри базы применяются несовместимые кодировки, например UTF-8 и CP1251, либо при переносе информации между базами без контроля единых стандартов отображения. В этом случае данные из базы загружаются как набор нечитаемых символов. Также симптомом именно этой проблемы может быть медленная загрузка элементов на сайте.
Проблему можно решить следующими способами:
- Привести все записи к общему формату. Необходимо выявить и зафиксировать единый принцип хранения информации в таблицах, исключающий искажения.
- Удалить избыточную информацию. Если сведения об одном объекте дублируются в разных таблицах, обработка запроса замедляется. Задача разработчика — устранить однотипные повторяющиеся данные.
Дефицит ресурсов при масштабировании
Проблема возникает, когда растущая нагрузка на сервер превышает возможности оборудования. Ситуация может ухудшаться постепенно, по мере увеличения трафика, либо обостряться в пиковые периоды. Примером может быть Интернет-площадка по продаже билетов на концерты/кинотеатры когда в прокате появляется всеми ожидаемый фильм или стартует продажа билетов на концерт очень известного музыканта. Пользователи одновременно пытаются заказать билет, из-за чего они сталкиваются с долгой обработкой запросов. В худшем случае система выдает уведомление о сбое.
Проблема разрешается:
- Поддерживать актуальные копии базы данных. Если основной массив данных станет недоступен, управляющий сервер автоматически назначит новую мастер-базу. Для пользователя это пройдет незаметно: запросы продолжат обрабатываться быстро и будут отражать свежую информацию.
- Применять вертикальное масштабирование. Наращивать количество жестких дисков и других аппаратных компонентов до исчерпания лимита материнской платы сервера. Решение простое и логичное, однако бесконечно увеличивать ресурсы не получится.
- Использовать горизонтальное масштабирование. Более эффективен кластерный подход. К примеру, в системе присутствует несколько серверов и данные о машинах. Информацию распределяют с помощью шардирования — технологии, позволяющей организовать и закрепить наблюдения за сегментами данных. Для грамотного распределения вводится специальный ключ шардирования. При высоких нагрузках система по этому ключу оперативно определяет, где хранятся нужные сведения о товаре, и быстро обрабатывает запрос.
Если ваш сайт на Bitrix
Достаточно часто проблемой медленной работы базы данных в Bitrix возникают из-за не самого лучшего строения запросов к базе и отсутствия индексов. В таких случаях лучше проверить логи базы данных, добавить недостающие индексы и чуть оптимизировать код. Данные решения помогут ускорить работу сайта, однако данные действия стоит принимать только при наличие должного уровня квалификации.

