Продакшен тормозит прямо сейчас
Запросы, которые раньше шли 50 мс, теперь идут секунды, и с ростом данных становится только хуже. Начинаем с pg_stat_statements и планов выполнения, а не с совета купить сервер побольше.
Аудит и оптимизация базы данных PostgreSQL — это разбор реальных планов выполнения запросов, индексов, блокировок и настроек сервера, после которого медленные места переписываются, а не описываются в отчёте. Мы работаем на обезличенной копии продакшена, показываем EXPLAIN ANALYZE до и после и правим схему, индексы и конфигурацию до измеримого результата.
Запросы, которые раньше шли 50 мс, теперь идут секунды, и с ростом данных становится только хуже. Начинаем с pg_stat_statements и планов выполнения, а не с совета купить сервер побольше.
Таблицы росли вместе с продуктом: денормализация там, где не надо, JSON вместо связей, индексов либо нет, либо их два десятка на таблицу. Перепроектируем схему и переносим данные версионными миграциями.
Перенос с MS SQL, Oracle или MySQL: маппинг типов, переписывание хранимых процедур, перенос исторических данных и переключение через логическую репликацию — без многочасового окна простоя.
Дамп раз в сутки на тот же сервер — это не бэкап. Настраиваем pgBackRest или WAL-G с PITR, отдельным хранилищем и регулярной проверкой восстановления, чтобы вы знали реальное время возврата в строй.
Тяжёлые отчёты ходят в ту же базу, что и приложение, и роняют её в конце месяца. Выносим аналитику на реплику или в ClickHouse либо BigQuery и оставляем в PostgreSQL только оперативные данные.
Приложение упирается в max_connections, длинные транзакции блокируют друг друга, автовакуум не успевает. Ставим pgBouncer, разбираем pg_locks и приводим транзакции к предсказуемой длительности.
Созвон на 30–40 минут: симптомы, версия PostgreSQL, объём базы, где она размещена. На выходе — гипотезы о причине и честная оценка, сколько займёт работа. Ничего не стоит.
Подписываем NDA до того, как что-то получим. Работаем на обезличенной копии или read-only реплике; в продакшен заходим только под согласованные задачи и с фиксацией всех выполненных команд.
Снимаем pg_stat_statements, разбираем топ запросов через EXPLAIN (ANALYZE, BUFFERS), смотрим неиспользуемые и недостающие индексы, блокировки, автовакуум, раздувание таблиц и конфигурацию сервера.
Список правок по приоритету: что даёт ускорение сразу, что требует изменений в коде, что — в схеме. По ключевым запросам показываем план до и замеренное время после правки на копии базы.
Индексы создаём CONCURRENTLY, схему меняем обратно совместимыми версионными миграциями с планом отката, тяжёлые запросы переписываем вместе с вашими разработчиками. Продакшен при этом продолжает работать.
Повторяем замер на тех же запросах, отдаём миграции, документацию по изменениям и настроенный мониторинг с алёртами. Дальше — месяц гарантии или ежемесячная поддержка.
Стек выбирается под задачу, а не наоборот: девять из десяти работ — это PostgreSQL и инструменты вокруг него. Аналитику переносим в ClickHouse или BigQuery только тогда, когда реплики PostgreSQL действительно перестаёт хватать.
Около 20 часов по ставке от 3 000 ₽ в час: сбор статистики, разбор топ-20 запросов по суммарному времени, проверка индексов, блокировок, автовакуума, конфигурации и бэкапов. Отчёт с планами выполнения и приоритетным списком правок за 3–5 рабочих дней.
Аудит плюс сами правки: индексы, переписанные запросы, партиционирование крупных таблиц, pgBouncer, настройка сервера, замер до и после. Цену двигают объём базы, количество проблемных запросов и то, нужно ли трогать код приложения.
Схема с нуля для нового продукта либо перенос с MS SQL, Oracle или MySQL на PostgreSQL: маппинг типов, перенос данных, логическая репликация, переключение, репликация и бэкапы на новом контуре. Цена зависит от числа таблиц и логики в хранимых процедурах.
Цены указаны справочно и не являются публичной офертой (п. 1 ст. 437 ГК РФ). Итоговая стоимость, объём работ и сроки фиксируются в договоре или счёте после обсуждения задачи.
CRM для крупной сервисной компании в HoReCa мы вели с нуля, включая схему данных — за время проекта она прошла 89 миграций и обслуживает 12+ модулей. Права доступа живут на уровне данных: 9 ролей против 87 разрешений, а не проверки, разбросанные по коду. Это ровно та работа со схемой, которую мы делаем, когда команда просит перепроектировать базу под рост.
Смотреть кейс KMDОпишите симптомы, версию PostgreSQL и примерный объём базы — в рабочее время вернёмся в течение 2 часов с гипотезами и оценкой. Разбор бесплатный и ни к чему не обязывает.
Обсудить задачу