Оптимизация базы данных монолитного приложения: стратегии и решения

Для снижения нагрузки на базу данных монолитного приложения, разработчики применили комплексный подход, включающий анализ «медленных» запросов, вынос таблиц в отдельные базы данных и сокращение объёма хранимых данных. Сначала была проведена оптимизация запросов, на основе анализа slow query логов, что позволило снизить нагрузку на CPU и ОЗУ.
Оптимизация базы данных монолитного приложения: стратегии и решения
Изображение носит иллюстративный характер

Для ускорения процесса разгрузки основной базы данных был разработан инструмент TableSwitcher. Он позволяет переключать чтение и запись отдельных таблиц на новую БД, минимизируя риски. Изначально используется одновременная запись в обе базы, затем переключение чтения и генерации ID на новую. Процесс включает в себя последовательное переключение стратегий, основанных на первичных ключах, и последующую миграцию отсутствующих данных.

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

Дополнительно были реализованы стратегии по сокращению размера БД. Это включало отсеивание забытых таблиц, удаление устаревших данных, поиск неиспользуемых таблиц и индексов, и, наконец, сокращение срока хранения информации о заказах. В результате, размер БД был уменьшен с 4 ТБ до 750 ГБ, что позволило перенести её в облако.


Новое на сайте

19857Острова как политический побег: от Атлантиды до плавучих государств Питера Тиля 19856Яйца, которые спасли предков млекопитающих от худшего апокалипсиса на Земле? 19855Могут ли омары чувствовать боль, и почему учёные требуют запретить варить их живыми? 19854Премия в $3 млн за первое CRISPR-лечение серповидноклеточной анемии 19853Почему сотрудники игнорируют корпоративное обучение и как это исправить 19852Тинтагель: место силы Артура или красивая легенда? 19851Голоса в голове сказали правду: что происходит, когда галлюцинации ставят диагноз точнее... 19850Куда исчезает информация из чёрных дыр, если они вообще исчезают? 19849Чёрная дыра лебедь Х-1 бросает джеты со скоростью света — но кто ими управляет? 19848Что увидели фотографы над замком Линдисфарн — и почему они закричали? 19847Почему антисептики в больницах могут создавать устойчивых к ним микробов? 19846Правда ли, что курица может жить без головы? 19845Как Оскар Уайльд использовал причёску как оружие против викторианской морали? 19844Назальный спрей против всех вирусов: как далеко зашла наука 19843«Я ещё не осознал, что мы только что сделали»: первая пресс-конференция экипажа Artemis II
Ссылка