2.7.3.5. Большой размер базы данных

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

Наиболее частые причины роста размера БД:

  • Используется тип хранилища InnoDB. InnoDB, в отличие от MyISAM, поддерживает транзакции, внешние ключи и другие полезные функции. Минусом InnoDB является то, что размер таблиц только растёт и никогда не уменьшается. Это связано с тем, что при удалении записей из таблицы место под ними остаётся зарезервированным для новых строк. Поэтому удаление данных не приводит к уменьшению места, которое занимает таблица на диске. Для уменьшения размеров таблиц можно использовать функцию оптимизации — она не только уменьшает размер базы данных, но и в некоторых случаях ускоряет работу с оптимизированными данными:
    1. Запустите оптимизацию таблиц базы данных.
    2. После завершения операции нажмите на кнопку обновления информации о пространстве, занимаемом базой данных.
  • Особенности работы сайта или CMS:
    • Хранение сессий в базе данных. Некоторые CMS по умолчанию записывают сессии в базу данных, что увеличивает нагрузку на базу данных, а также может провоцировать огромный рост размера базы данных из-за проблем с удалением сессий или очень большой аудиторией сайта. Настоятельно рекомендуем для хранения сессий использовать файлы, Memcache(d) или Redis. Если всё же необходимо хранение сессий именно в базе данных — следует проверять наличие устаревших сессий, так как в некоторых ситуациях происходит сбой и записи в базе данных только накапливаются, что вызывает большой рост занимаемого пространства.
    • Запись кешируемых данных в базу данных. Существует ряд плагинов и систем, которые создают кеш страниц или элементов сайта и помещают его в базу данных, что в дальнейшем может сказываться как на производительности, так и на размере базы данных. Если на сайте есть подобный функционал — следует внимательно отнестись к его использованию и для больших проектов вовсе от него отказаться. Кеш лучше хранить в виде файлов или используя дополнительные, более производительные технологии, например Memcache или Redis.
Содержание