12 промтов для PostgreSQL и MongoDB: как ускорить запросы, шардирование и миграции без DBA

Введение

Медленные запросы, неудачные индексы, миграции с простоем — эти проблемы знакомы каждому, кто работает с базами данных. Часто не хватает времени или экспертизы, чтобы вникнуть в EXPLAIN или переписать сложный JOIN. Но что, если использовать AI как ассистента? В этой подборке — 12 промтов для PostgreSQL и MongoDB, которые помогают решать типовые задачи производительности без привлечения отдельного DBA. Каждый промт проверен на реальных кейсах и сопровождается примером запроса, ожидаемым результатом и пояснением.

1. Генерация EXPLAIN ANALYZE для PostgreSQL

Задача: быстро получить план выполнения запроса и понять, где узкое место.

Промт:

Ты — эксперт по PostgreSQL. Проанализируй следующий SQL-запрос и сгенерируй для него команду EXPLAIN (ANALYZE, BUFFERS). Объясни, что означает каждый узел плана и на что обратить внимание.

Запрос:
SELECT o.id, o.total, c.name
FROM orders o
JOIN customers c ON c.id = o.customer_id
WHERE o.created_at >= '2026-01-01'
ORDER BY o.total DESC
LIMIT 100;

Пример результата:

AI выдаст команду:

EXPLAIN (ANALYZE, BUFFERS)
SELECT o.id, o.total, c.name
FROM orders o
JOIN customers c ON c.id = o.customer_id
WHERE o.created_at >= '2026-01-01'
ORDER BY o.total DESC
LIMIT 100;

И пояснит: «Узел Seq Scan на orders указывает на отсутствие индекса по created_at. Рекомендуется создать индекс...».

Пояснение: подходит для быстрой диагностики без ручного анализа плана.

2. Подбор индексов для PostgreSQL

Задача: определить, какие индексы улучшат производительность.

Промт:

Ты — DBA. Проанализируй запрос и предложи оптимальные индексы. Учти селективность, порядок столбцов и тип индекса (B-tree, GIN, BRIN). Объясни, почему каждый индекс поможет.

Запрос:
SELECT * FROM products WHERE category_id = 5 AND price > 1000 ORDER BY created_at DESC;

Пример результата:

AI предложит:

CREATE INDEX idx_products_category_price_created ON products (category_id, price, created_at DESC);

И пояснит: «Составной индекс покрывает условия фильтрации и сортировку, что позволит избежать сортировки в памяти».

Пояснение: помогает не создавать лишние индексы и ускорить конкретные запросы.

3. Переписывание медленных JOIN

Задача: оптимизировать сложный запрос с множеством JOIN.

Промт:

Ты — эксперт по оптимизации SQL. Перепиши запрос, чтобы уменьшить количество JOIN или использовать более эффективные конструкции (например, EXISTS вместо IN, или CTE). Объясни изменения.

Запрос:
SELECT c.name, COUNT(o.id) AS order_count
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
LEFT JOIN order_items oi ON oi.order_id = o.id
WHERE o.created_at >= '2026-01-01'
GROUP BY c.name;

Пример результата:

AI может предложить:

SELECT c.name, COUNT(o.id) AS order_count
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id AND o.created_at >= '2026-01-01'
GROUP BY c.name;

Или использовать подзапрос. Пояснение: «Перенос условия в ON уменьшает количество строк до группировки».

Пояснение: подходит для запросов с большим количеством соединений.

4. Проектирование схемы для PostgreSQL

Задача: создать оптимальную схему с учётом нормализации и производительности.

Промт:

Ты — архитектор БД. Спроектируй схему для интернет-магазина: пользователи, товары, заказы, категории. Учти требования: частые выборки по категориям и датам, поддержка транзакций. Предложи DDL и объясни выбор типов и индексов.

Пример результата:

AI сгенерирует таблицы с типами (SERIAL, TIMESTAMPTZ, JSONB для метаданных) и индексами. Например:

CREATE TABLE orders (
    id SERIAL PRIMARY KEY,
    customer_id INT REFERENCES customers(id),
    total NUMERIC(10,2),
    created_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX idx_orders_customer_created ON orders (customer_id, created_at DESC);

Пояснение: ускоряет старт проекта и избегает типичных ошибок.

5. Миграции без даунтайма в PostgreSQL

Задача: добавить столбец или изменить тип без блокировки таблицы.

Промт:

Ты — эксперт по миграциям. Предложи безопасный способ добавить столбец email в таблицу users (10 млн строк) без блокировки. Учти PostgreSQL 14+. Напиши шаги и SQL.

Пример результата:

AI предложит:

ALTER TABLE users ADD COLUMN email TEXT;
-- затем заполнение батчами
UPDATE users SET email = ... WHERE ...;

Использовать ALTER TABLE ... ADD COLUMN ... DEFAULT NULL без перезаписи. Для изменения типа — создание новой колонки и переливка данных.

Пояснение: позволяет избежать простоя при миграциях.

6. Агрегации MongoDB

Задача: построить сложный агрегационный пайплайн.

Промт:

Ты — эксперт по MongoDB. Напиши агрегацию для коллекции orders: сгруппируй по customer_id, посчитай сумму заказов за последний месяц, отфильтруй тех, у кого сумма > 1000, отсортируй по убыванию. Объясни этапы.

Пример результата:

AI сгенерирует:

db.orders.aggregate([
  { $match: { created_at: { $gte: new Date(Date.now() - 30*24*60*60*1000) } } },
  { $group: { _id: "$customer_id", total: { $sum: "$amount" } } },
  { $match: { total: { $gt: 1000 } } },
  { $sort: { total: -1 } }
])

Пояснение: ускоряет написание аналитических запросов.

7. Индексы в MongoDB

Задача: выбрать правильный индекс для запроса.

Промт:

Ты — DBA MongoDB. Проанализируй запрос и предложи индекс. Учти порядок полей, направление сортировки и покрывающие индексы.

Запрос:
db.products.find({ category: "electronics", price: { $lt: 500 } }).sort({ rating: -1 })

Пример результата:

AI предложит:

db.products.createIndex({ category: 1, price: 1, rating: -1 })

И пояснит: «Индекс покрывает фильтр и сортировку, что ускорит выполнение».

Пояснение: помогает избежать коллекскейнов.

8. Репликация и шардирование

Задача: настроить отказоустойчивость и масштабирование.

Промт:

Ты — эксперт по распределённым БД. Объясни, как настроить репликацию в PostgreSQL и шардирование в MongoDB для высоконагруженного проекта. Какие подводные камни?

Пример результата:

AI опишет шаги: для PostgreSQL — streaming replication, для MongoDB — sharding с выбором ключа. Укажет на необходимость мониторинга лага и балансировки.

Пояснение: даёт понимание основ без глубокого погружения.

9. Защита от N+1 в ORM

Задача: обнаружить и исправить проблему N+1.

Промт:

Ты — эксперт по ORM. Проанализируй код на Python (SQLAlchemy) и найди проблему N+1. Предложи решение с жадной загрузкой.

Код:
users = session.query(User).all()
for user in users:
    print(user.orders)

Пример результата:

AI предложит использовать joinedload или selectinload:

users = session.query(User).options(selectinload(User.orders)).all()

Пояснение: устраняет лишние запросы.

10. Бэкапы и восстановление

Задача: настроить регулярные бэкапы и проверить восстановление.

Промт:

Ты — администратор БД. Составь план бэкапов для PostgreSQL и MongoDB: частоту, инструменты, проверку целостности. Как автоматизировать?

Пример результата:

AI порекомендует pg_dump, pg_basebackup, mongodump, указав на необходимость тестирования восстановления.

Пояснение: помогает избежать потери данных.

11. Мониторинг производительности

Задача: выявить медленные запросы.

Промт:

Ты — эксперт по мониторингу. Какие метрики и инструменты использовать для PostgreSQL и MongoDB? Как настроить сбор медленных запросов?

Пример результата:

AI перечислит pg_stat_statements, mongostat, объяснит, как включить логирование медленных запросов.

Пояснение: позволяет proactively реагировать на проблемы.

12. Миграция с MongoDB на PostgreSQL

Задача: перенести данные без потерь.

Промт:

Ты — эксперт по миграциям. Опиши процесс миграции коллекции MongoDB в таблицу PostgreSQL. Учти преобразование типов и индексы.

Пример результата:

AI предложит использовать ETL-инструменты или скрипты на Python, покажет пример маппинга BSON в JSONB.

Пояснение: упрощает переход между СУБД.

Заключение

Эти 12 промтов покрывают ключевые задачи разработчика и аналитика при работе с PostgreSQL и MongoDB. Они не заменят глубоких знаний, но помогут быстро получить экспертный совет и сэкономить время. Попробуйте применить их в своём проекте — начните с EXPLAIN ANALYZE и подбора индексов. А если хотите системно прокачать навыки работы с БД, обратите внимание на наши курсы по базам данных.

← Все статьи

Комментарии

Читайте также

Освоение государственных закупок (44-ФЗ, 223-ФЗ): ваш ИИ-маршрут к успеху в тендерах

3 июля 2026

Поступление в Кембридж: TSA (Оценка навыков мышления) – Обзор курса и как ИИ готовит вас

15 августа 2026

Rust и Tokio без боли: 7 промтов, которые объяснят ownership и async на реальных задачах

14 октября 2026

ISO 9001:2015 (Системы менеджмента качества): как ИИ и автоматизация меняют СМК в 2026 году

10 сентября 2026

10 промтов для Vue.js и Nuxt: компоненты, composables и роутинг

6 июля 2026

Интеграция датчиков 1-Wire с AI-агентом ASI Biont: мониторинг температуры и влажности без программирования

17 июля 2026

Заметки о внедрении ИИ в Vibe Coding: Часть 1 — Почему ИИ «срезает углы»?

19 июля 2026

Интеграция CAN bus с AI-агентом ASI Biont: промышленная автоматизация нового поколения

15 июля 2026

Освоение корпоративной разработки: почему курс Java & C# — Enterprise Development — ваш путь к современному корпоративному программированию

20 июля 2026