Каждый разработчик, работающий с базами данных, рано или поздно сталкивается с ситуацией, когда запрос выполняется секундами, индексы не используются, а схема данных превращается в запутанный лабиринт. PostgreSQL и MongoDB — мощные инструменты, но их эффективность напрямую зависит от того, насколько грамотно вы формулируете задачи и анализируете узкие места. В этой подборке я собрал 11 промтов, которые помогут вам быстрее находить проблемы, проектировать оптимальные схемы и писать запросы, которые летают.
Мы пройдём путь от базовых операций — анализа запросов и создания индексов — до экспертных сценариев, таких как шардирование и работа с транзакциями. Каждый промт сопровождается примером результата, который вы можете получить, используя AI-ассистента или собственный анализ. Статья будет полезна как новичкам, делающим первые шаги в оптимизации, так и опытным инженерам, ищущим свежие идеи.
Базовый уровень
1. Анализ медленного запроса в PostgreSQL
Задача: Выявить причину медленного выполнения запроса.
Промт:
Проанализируй план выполнения запроса PostgreSQL, найди узкие места и предложи оптимизации. Запрос: SELECT * FROM orders WHERE user_id = 123 AND created_at > '2026-01-01' ORDER BY total DESC LIMIT 10;
Пример результата:
AI-ассистент запросит вывод EXPLAIN ANALYZE, укажет на последовательное сканирование таблицы orders, предложит создать составной индекс по (user_id, created_at, total) и переписать запрос с использованием покрывающего индекса. Вы сэкономите часы ручного анализа.
2. Создание индекса в MongoDB
Задача: Ускорить поиск по полю в коллекции.
Промт:
Какой индекс создать для коллекции users в MongoDB, чтобы ускорить запрос: db.users.find({ email: "test@example.com" })?
Пример результата:
Ассистент порекомендует создать уникальный индекс по полю email: db.users.createIndex({ email: 1 }, { unique: true }). Также объяснит, что индекс автоматически используется для запросов на равенство.
3. Проектирование схемы для интернет-магазина
Задача: Спроектировать коллекции MongoDB для каталога товаров и заказов.
Промт:
Предложи структуру коллекций MongoDB для интернет-магазина: товары, категории, заказы, пользователи. Учти необходимость частых запросов по категориям и истории заказов.
Пример результата:
Ассистент предложит вложенные документы для категорий внутри товаров (денормализация) и отдельные коллекции для заказов с массивом товаров. Также даст рекомендации по индексам.
Продвинутый уровень
4. Оптимизация JOIN в PostgreSQL
Задача: Ускорить запрос с множественными JOIN.
Промт:
Запрос с 5 JOIN выполняется 10 секунд. Как оптимизировать? Вот план выполнения: [вставить EXPLAIN ANALYZE].
Пример результата:
Ассистент проанализирует план, обнаружит неэффективный Nested Loop, предложит изменить порядок соединения, добавить индексы на внешние ключи и использовать CTE для материализации промежуточных результатов.
5. Агрегация в MongoDB
Задача: Построить сложный агрегационный пайплайн для отчёта.
Промт:
Напиши агрегационный запрос MongoDB для расчёта среднего чека по дням за последний месяц, с группировкой по категориям товаров.
Пример результата:
Ассистент сгенерирует пайплайн с $match, $unwind, $group, $sort и $project. Вы получите готовый код с комментариями.
6. Партиционирование таблицы в PostgreSQL
Задача: Разбить большую таблицу на партиции для ускорения запросов.
Промт:
Как разбить таблицу logs с 500 млн строк на партиции по месяцам в PostgreSQL 14+?
Пример результата:
Ассистент предложит использовать декларативное партиционирование по диапазону (RANGE) с ключом created_at, приведёт пример создания родительской таблицы и партиций, а также настройки автоматического создания новых партиций.
7. Использование транзакций в MongoDB
Задача: Обеспечить атомарность операций в MongoDB.
Промт:
Как выполнить несколько операций записи в MongoDB атомарно? Нужно обновить баланс пользователя и создать запись о транзакции.
Пример результата:
Ассистент расскажет о многодокументных транзакциях (доступны с версии 4.0), приведёт пример с session.startTransaction(), commitTransaction() и обработкой ошибок.
Экспертный уровень
8. Шардирование в MongoDB
Задача: Настроить шардирование для горизонтального масштабирования.
Промт:
Спроектируй стратегию шардирования для коллекции events с 1 млрд документов. Как выбрать shard key?
Пример результата:
Ассистент проанализирует кардинальность полей, предложит составной shard key, например { tenant_id: 1, created_at: 1 }, объяснит, как избежать горячих точек, и даст команды для включения шардирования.
9. Настройка autovacuum в PostgreSQL
Задача: Уменьшить bloat и улучшить производительность.
Промт:
Таблица orders часто обновляется, autovacuum не справляется. Как настроить параметры autovacuum для этой таблицы?
Пример результата:
Ассистент предложит изменить autovacuum_vacuum_scale_factor и autovacuum_vacuum_threshold для конкретной таблицы, приведёт команды ALTER TABLE, а также расскажет о мониторинге через pg_stat_user_tables.
10. Оптимизация запросов с JSONB в PostgreSQL
Задача: Ускорить поиск по JSONB-полю.
Промт:
Есть таблица products с полем attributes JSONB. Запрос WHERE attributes @> '{"color": "red"}' выполняется медленно. Как оптимизировать?
Пример результата:
Ассистент порекомендует создать GIN-индекс: CREATE INDEX idx_attributes ON products USING GIN (attributes); и использовать оператор @> для поиска. Также объяснит разницу между jsonb и json.
11. Миграция с MongoDB на PostgreSQL
Задача: Спланировать миграцию данных из MongoDB в PostgreSQL.
Промт:
Как перенести данные из MongoDB в PostgreSQL с минимальным простоем? Коллекции: users, orders, products.
Пример результата:
Ассистент предложит использовать ETL-инструменты (например, Airbyte или собственный скрипт на Python), составит план поэтапной миграции с двойной записью, даст советы по преобразованию документов в реляционные таблицы.
Как использовать эти промты
Все промты можно применять с любым AI-ассистентом, поддерживающим контекст. Чем больше деталей вы предоставите (версия СУБД, структура таблиц, примеры данных), тем точнее будет ответ. Не забывайте проверять рекомендации на тестовом окружении.
Источники и дополнительное чтение
- Официальная документация PostgreSQL: https://www.postgresql.org/docs/current/
- Документация MongoDB: https://www.mongodb.com/docs/
- Книга «PostgreSQL 14. Полное руководство» (авторы: Д. Рогов и др.)
- Блог Use The Index, Luke: https://use-the-index-luke.com/
Эти промты — не волшебная таблетка, а инструмент, который экономит время и помогает структурировать мысли. Экспериментируйте, адаптируйте под свои задачи и делитесь находками в комментариях.
Комментарии