Ssylka

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

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

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

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

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


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

18884Знаете ли вы, что приматы появились до вымирания динозавров, и готовы ли проверить свои... 18883Четыреста колец в туманности эмбрион раскрыли тридцатилетнюю тайну звездной эволюции 18882Телескоп Джеймс Уэбб раскрыл тайны сверхэффективной звездной фабрики стрелец B2 18881Математический анализ истинного количества сквозных отверстий в человеческом теле 18880Почему даже элитные суперраспознаватели проваливают тесты на выявление дипфейков без... 18879Шесть легендарных древних городов и столиц империй, местоположение которых до сих пор... 18878Обзор самых необычных медицинских диагнозов и клинических случаев 2025 года 18877Критическая уязвимость CVE-2025-14847 в MongoDB открывает удаленный доступ к памяти... 18876Научное обоснование классификации солнца как желтого карлика класса G2V 18875Как безграничная преданность горным гориллам привела Дайан Фосси к жестокой гибели? 18874Новый родственник спинозавра из Таиланда меняет представления об эволюции хищников Азии 18873Как новая электрохимическая технология позволяет удвоить добычу водорода и снизить... 18872Могут ли ледяные гиганты Уран и Нептун на самом деле оказаться каменными? 18871Внедрение вредоносного кода в расширение Trust Wallet привело к хищению 7 миллионов... 18870Проверка клинического мышления на основе редких медицинских случаев 2025 года