Промпты для администратора баз данных. 25 готовых примеров для генерации

От NP_Article

ИИ-технолог

Обучение управлению ИИ с 0 до мастерского уровня

250+ уроков Начато наполнение Без инфоцыган и воды

Многие специалисты смотрят на нейросети как на универсальный инструмент, который решит все проблемы. Однако попытки получить от ИИ реальную пользу часто заканчиваются разочарованием. Особенно это касается такой сложной сферы, как администрирование баз данных. В этой статье собраны практические промпты для администратора баз данных, которые помогут перейти от общих ответов к конкретным, работающим решениям.

Проблема не в том, что нейросети «не понимают» технические задачи. Проблема в том, что им не хватает правильных инструкций. Без четкого контекста, роли и формата ответа ИИ выдает бесполезный код или поверхностные советы. Это как просить хирурга «что-нибудь отрезать», не указав где и зачем.

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

  • Готовые шаблоны для генерации SQL-скриптов.
  • Промпты для анализа производительности и оптимизации запросов.
  • Инструкции для создания планов резервного копирования и миграции.
  • Примеры для аудита безопасности и управления пользователями.

Цель статьи – дать вам инструмент, который сэкономит часы работы и убережет от типичных ловушек при использовании ИИ в профессиональных задачах.

Типичные ошибки при составлении запросов к ИИ

Прежде чем переходить к готовым решениям, важно понять, что обычно делают не так. Большинство неудачных попыток работы с нейросетями сводится к нескольким повторяющимся ошибкам. Избегая их, вы повысите эффективность любого, даже самого простого, запроса.

  1. Использовать слишком общие запросы без конкретики. Фразы вроде «оптимизируй мой SQL-запрос» или «напиши скрипт для бэкапа» обречены на провал. Нейросеть не знает ни вашу СУБД, ни структуру таблиц, ни бизнес-логику, поэтому даст максимально усредненный и бесполезный ответ.
  2. Забывать указывать версию СУБД и окружение. Синтаксис и доступные функции могут кардинально отличаться в PostgreSQL 12 и PostgreSQL 15, не говоря уже о разнице между MySQL и Oracle. Без этой информации сгенерированный скрипт может просто не запуститься или работать некорректно.
  3. Просить сгенерировать код без предоставления схемы данных. Нейросеть не может написать адекватный запрос, не видя структуры таблиц (команды `CREATE TABLE`). Она вынуждена додумывать названия полей и типы данных, что почти всегда приводит к ошибкам.
  4. Не объяснять бизнес-контекст задачи. Запрос «найти пользователей, которые не заходили год» сильно отличается от «найти клиентов с премиум-подпиской, которые не совершали покупок за последний год, чтобы отправить им специальное предложение». Контекст определяет логику и сложность решения.
  5. Ожидать готовый к использованию в рабочей среде код. Нейросеть – это помощник, а не замена специалиста. Любой сгенерированный ею код нужно рассматривать как черновик, который требует внимательной проверки, тестирования и, возможно, доработки. Слепое копирование – прямой путь к проблемам.
  6. Игнорировать вопросы безопасности при составлении запроса. Просьба «написать скрипт для удаления старых данных» без четких ограничений и условий может привести к созданию опасного кода, который при неаккуратном использовании удалит лишнее. Всегда нужно прописывать условия и меры предосторожности.
  7. Не использовать возможность итеративной работы. Первая версия ответа от ИИ редко бывает идеальной. Вместо того чтобы начинать новый диалог, лучше уточнять и корректировать уже полученный результат. Например: «Спасибо, а теперь добавь в этот скрипт логирование ошибок» или «Перепиши этот фрагмент, чтобы избежать использования курсора».

Сравнение неэффективных и точных запросов для ИИ

Наглядный пример – лучший способ понять разницу. В таблице ниже показано, как небольшое изменение в формулировке запроса кардинально меняет качество результата. Это ключевой шаг к освоению эффективных промптов для администратора баз данных.

Задача Плохой пример (не даст результата) Хороший пример (даст результат)
Оптимизация запроса «Сделай этот запрос быстрее: SELECT * FROM orders WHERE amount > 100;» «Проанализируй этот SQL-запрос для PostgreSQL 14. Вот схема таблиц `orders` и `customers`. Объясни текущий план выполнения (EXPLAIN) и предложи варианты оптимизации, например, через создание индексов или переписывание JOIN.»
Создание скрипта для резервного копирования «Напиши скрипт для бэкапа базы данных.» «Создай bash-скрипт для ежедневного полного резервного копирования базы данных MySQL `production_db` с помощью `mysqldump`. Скрипт должен сжимать дамп в .gz архив, добавлять в имя файла текущую дату и удалять бэкапы старше 7 дней.»
Миграция данных «Как перенести данные из одной таблицы в другую?» «Напиши PL/pgSQL скрипт для миграции данных из таблицы `legacy_users` в новую таблицу `users_new` со следующей структурой [привести структуру обеих таблиц]. Нужно сопоставить поля: `legacy_users.user_name` -> `users_new.full_name`. Данные должны переноситься порциями по 1000 строк.»
Анализ безопасности «Проверь мою базу на уязвимости.» «Ты – аудитор безопасности баз данных. Составь чек-лист для проверки безопасности экземпляра Oracle 19c. Включи пункты: проверка привилегий пользователей, аудит настроек сети, политика паролей, шифрование данных и использование стандартных учетных записей.»

25 практических промптов для администратора баз данных

Теперь перейдем к главному – готовым шаблонам. Каждый промпт в этом разделе решает конкретную задачу, с которой администраторы БД сталкиваются регулярно. Просто скопируйте текст, подставьте свои данные и получите осмысленный результат. Это не волшебная палочка (таких не бывает), а надежный рабочий инструмент.

1. Оптимизация медленного SQL-запроса

Проблема:
Есть сложный SQL-запрос, который выполняется недопустимо долго. Нужно найти причину и исправить ее.

Решение:
Промпт запрашивает у ИИ пошаговый анализ запроса, объяснение плана выполнения и конкретные предложения по улучшению с созданием необходимых индексов.

Текст промпта:

*****

Ты – опытный администратор баз данных, специализирующийся на оптимизации производительности [укажите СУБД, например, «PostgreSQL 15»]. Твоя задача – проанализировать медленный SQL-запрос и предложить конкретные шаги по его ускорению.

Контекст:
Запрос выполняется в рамках [опишите процесс, например, «генерации ежемесячного отчета по продажам»] и занимает [укажите время, например, «более 5 минут»].
СУБД: [укажите СУБД и версию, например, «PostgreSQL 15.2»].
Схемы задействованных таблиц:
[вставьте сюда команды CREATE TABLE для всех таблиц, участвующих в запросе]

Текст запроса для анализа:
[вставьте сюда полный текст вашего медленного SQL-запроса]

План выполнения (EXPLAIN ANALYZE):
[вставьте сюда результат выполнения команды EXPLAIN ANALYZE для вашего запроса]

Задачи для тебя:

  1. Проанализируй предоставленный план выполнения и объясни простыми словами, где находятся узкие места (например, «полное сканирование таблицы», «неэффективное соединение»).
  2. Предложи 2-3 варианта оптимизации запроса. Для каждого варианта:
    • Объясни логику улучшения.
    • Предоставь измененный текст SQL-запроса.
    • Если требуется создать индекс, напиши точную команду CREATE INDEX.
  3. Оцени потенциальный эффект от каждого предложенного изменения.

Формат ответа: предоставь ответ в виде структурированного отчета с заголовками «Анализ плана выполнения», «Вариант оптимизации 1», «Вариант оптимизации 2». Избегай общих советов.

*****

Почему это работает:
Промпт предоставляет ИИ всю необходимую информацию: диалект SQL, структуру данных и, самое главное, реальный план выполнения. Это позволяет нейросети не гадать, а анализировать фактические данные о работе запроса, что приводит к точным и применимым рекомендациям.

2. Создание стратегии резервного копирования

Проблема:
Нужно разработать надежный план резервного копирования для критически важной базы данных, но нет времени изучать все нюансы.

Решение:
Промпт помогает сгенерировать комплексную стратегию бэкапов, учитывающую требования к точке восстановления (RPO) и времени восстановления (RTO).

Текст промпта:

*****

Ты – архитектор IT-инфраструктуры, специализирующийся на обеспечении отказоустойчивости. Твоя задача – разработать детализированную стратегию резервного копирования для базы данных.

Контекст:

  • СУБД: [укажите СУБД и версию, например, «Microsoft SQL Server 2019»].
  • Объем базы данных: [укажите объем, например, «примерно 500 ГБ»].
  • Тип нагрузки: [опишите нагрузку, например, «высокотранзакционная OLTP-система, 24/7»].
  • Требования бизнеса:
    • RPO (Recovery Point Objective / допустимая точка потери данных): [укажите время, например, «не более 15 минут»].
    • RTO (Recovery Time Objective / допустимое время восстановления): [укажите время, например, «не более 2 часов»].
  • Инфраструктура: [кратко опишите, где хранятся бэкапы, например, «локальный NAS и облачное хранилище S3»].

Задачи для тебя:

  1. Предложи смешанную стратегию резервного копирования (полные, дифференциальные, журнальные бэкапы). Обоснуй выбранную периодичность для каждого типа бэкапа, исходя из RPO.
  2. Напиши план-график выполнения резервного копирования на неделю.
  3. Предоставь примеры скриптов (T-SQL или PowerShell) для каждого типа бэкапа. Скрипты должны включать сжатие и проверку целостности (WITH CHECKSUM).
  4. Опиши процедуру ротации и хранения бэкапов, включая удаление устаревших копий.
  5. Составь краткий план тестирования восстановления из бэкапов.

Формат ответа: структурированный документ с разделами «Общая стратегия», «График бэкапов», «Примеры скриптов», «Политика хранения», «План тестирования».

*****

Почему это работает:
Промпт заменяет абстрактную задачу «сделай бэкап» на конкретные бизнес-требования (RPO/RTO). Это заставляет ИИ мыслить как архитектор, подбирая технические решения (частоту и типы бэкапов) под заданные бизнес-ограничения, а не предлагать универсальный шаблон.

3. Генерация скрипта для управления пользователями

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

Решение:
Промпт генерирует безопасный SQL-скрипт для создания пользователя и назначения ему прав по принципу наименьших привилегий.

Текст промпта:

*****

Ты – специалист по безопасности баз данных. Твоя задача – написать безопасный SQL-скрипт для создания нового пользователя и предоставления ему минимально необходимых прав.

Контекст:

  • СУБД: [укажите СУБД, например, «Oracle 19c»].
  • Имя пользователя: [укажите имя, например, «readonly_reporter»].
  • Задача пользователя: [опишите, что пользователь должен делать, например, «только выполнять SELECT-запросы к таблицам в схеме SALES для построения отчетов»].
  • Ограничения: [опишите, что пользователь не должен делать, например, «не должен иметь права на изменение данных (INSERT, UPDATE, DELETE) или структуры таблиц (DDL)»].

Задачи для тебя:

  1. Напиши SQL-скрипт, который выполняет следующие действия:
    • Создает нового пользователя с надежным временным паролем.
    • Выдает ему только право на подключение к базе данных.
    • Предоставляет право SELECT на все таблицы в указанной схеме [например, «SALES»].
    • Явно запрещает любые другие привилегии.
  2. Добавь в скрипт комментарии, объясняющие каждый шаг.
  3. Напиши отдельный скрипт для отзыва всех прав и удаления этого пользователя.

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

*****

Почему это работает:
Вместо того чтобы просто просить создать пользователя, промпт четко определяет роль и ограничения. Это заставляет ИИ сосредоточиться на безопасности и следовать принципу наименьших привилегий, генерируя скрипт, который выдает только необходимые права и ничего лишнего.

4. Разработка плана миграции схемы данных

Проблема:
Предстоит сложная миграция базы данных на новую версию СУБД или на другую платформу. Нужно составить детальный план действий, чтобы ничего не упустить.

Решение:
Промпт помогает создать пошаговый план миграции, включающий подготовительные этапы, сам процесс переноса, тестирование и откат в случае неудачи.

Текст промпта:

*****

Ты – опытный IT-консультант по миграции данных. Твоя задача – составить комплексный план миграции базы данных.

Контекст:

  • Исходная система: [укажите СУБД и версию, например, «MySQL 5.7»].
  • Целевая система: [укажите СУБД и версию, например, «PostgreSQL 14»].
  • Причина миграции: [опишите, например, «переход на открытое ПО и использование расширенных функций PostgreSQL»].
  • Объем данных: [укажите, например, «около 100 ГБ»].
  • Допустимое время простоя: [укажите, например, «не более 4 часов в ночное время в выходные»].

Задачи для тебя:
Составь пошаговый план миграции, разбив его на следующие фазы:

  1. Фаза подготовки:
    • Анализ схемы данных на совместимость (типы данных, функции, триггеры).
    • Выбор инструментов для миграции (например, «pgloader», «AWS DMS»).
    • Создание тестового стенда.
  2. Фаза миграции:
    • Порядок действий в день миграции (остановка приложения, финальный бэкап, перенос данных, перенос кода).
    • Скрипты для переноса схемы (DDL) и данных (DML).
  3. Фаза тестирования и верификации:
    • Чек-лист для проверки целостности данных после миграции.
    • План функционального и нагрузочного тестирования.
  4. План отката:
    • Четкие критерии, при которых запускается процедура отката.
    • Пошаговая инструкция по возвращению к исходной системе.

Формат ответа: детализированный проектный план с нумерованными списками и подзаголовками для каждой фазы.

*****

Почему это работает:
Промпт структурирует задачу, разбивая ее на логические фазы (подготовка, миграция, тестирование, откат). Это заставляет ИИ мыслить как проектный менеджер, учитывая не только технические аспекты переноса данных, но и организационные моменты, риски и план «Б».

5. Анализ и объяснение плана выполнения запроса

Проблема:
Команда EXPLAIN выдала сложный и непонятный план выполнения запроса. Нужно разобраться, что именно делает база данных и почему это неэффективно.

Решение:
Промпт «переводит» технический вывод EXPLAIN на человеческий язык, объясняя каждый шаг и подсвечивая проблемные места.

Текст промпта:

*****

Ты – преподаватель по базам данных, умеющий объяснять сложные вещи простыми словами. Твоя задача – проанализировать план выполнения SQL-запроса и объяснить его как для начинающего разработчика.

Контекст:

  • СУБД: [укажите СУБД, например, «PostgreSQL»].
  • Цель запроса: [кратко опишите, что запрос должен делать].

План выполнения запроса (из EXPLAIN ANALYZE):
[вставьте сюда полный текстовый вывод плана выполнения]

Задачи для тебя:

  1. Пошагово разбери план выполнения, начиная с самого вложенного узла.
  2. Для каждого шага (например, «Seq Scan», «Hash Join», «Index Scan») объясни:
    • Что это за операция?
    • Над какой таблицей или данными она выполняется?
    • На что указывают цифры cost, rows, width?
    • Почему фактическое количество строк (actual rows) может отличаться от предполагаемого (rows) и что это значит?
  3. Выдели 1-2 самых «дорогих» или неэффективных операции в этом плане и объясни, почему они являются узким местом.
  4. Используй аналогии из реальной жизни для объяснения сложных операций (например, «Seq Scan – это как искать слово в книге, пролистывая все страницы подряд»).

Формат ответа: последовательное объяснение каждого пункта плана с выделением ключевых моментов жирным шрифтом. Стиль – обучающий и терпеливый.

*****

Почему это работает:
Промпт задает роль «преподавателя» и требует объяснений «простыми словами». Это заставляет ИИ сместить фокус с формального анализа на понятность изложения. Указание использовать аналогии помогает получить не сухой технический отчет, а качественный обучающий материал.

6. Генерация скрипта для поиска узких мест

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

Решение:
Промпт генерирует набор диагностических SQL-запросов, которые помогают выявить наиболее частые проблемы: неиспользуемые индексы, медленные запросы, блокировки.

Текст промпта:

*****

Ты – системный аналитик, специализирующийся на диагностике производительности баз данных. Твоя задача – предоставить набор SQL-скриптов для выявления типичных узких мест.

Контекст:

  • СУБД: [укажите СУБД и ее версию, например, «PostgreSQL 13»].
  • Проблема: [опишите симптомы, например, «периодические замедления работы приложения, жалобы пользователей на ‘зависания'»].

Задачи для тебя:
Напиши набор отдельных SQL-запросов для диагностики следующих проблем:

  1. Запрос для поиска самых медленных запросов, которые выполнялись за последний день (топ-10 по среднему времени выполнения).
  2. Запрос для поиска неиспользуемых или редко используемых индексов.
  3. Запрос для выявления активных блокировок и сессий, которые их удерживают.
  4. Запрос для анализа размера таблиц и индексов, чтобы найти самые «раздутые» объекты.
  5. Запрос для проверки статистики по таблицам (когда последний раз выполнялся ANALYZE).

Для каждого запроса предоставь краткое объяснение, что он делает и на что обращать внимание в результатах.

Формат ответа: пять блоков кода, каждый с заголовком, описывающим его назначение, и пояснением.

*****

Почему это работает:
Промпт не просит «решить проблему производительности», а запрашивает конкретные инструменты для диагностики. Это более реалистичная и выполнимая задача для ИИ. Разбивка на конкретные запросы (для поиска индексов, блокировок и т.д.) позволяет получить точные и полезные скрипты, а не общие советы.

7. Написание сложной хранимой процедуры

Проблема:
Нужно реализовать сложную бизнес-логику внутри базы данных с помощью хранимой процедуры, но написание кода с нуля займет много времени.

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

Текст промпта:

*****

Ты – ведущий разработчик баз данных с 15-летним опытом. Твоя задача – написать шаблон хранимой процедуры на [укажите язык, например, «T-SQL для MS SQL Server»], который реализует сложную бизнес-операцию.

Контекст:

  • Название процедуры: [укажите, например, «usp_ProcessOrder»].
  • Входные параметры: [перечислите параметры и их типы, например, «@OrderID INT, @UserID INT»].
  • Бизнес-логика: [опишите по шагам, что должна делать процедура, например:
    1. Проверить, существует ли заказ с ID @OrderID. Если нет – вызвать ошибку.
    2. Изменить статус заказа в таблице Orders на ‘Processing’.
    3. Списать необходимое количество товаров со склада (таблица Stock).
    4. Проверить, что остаток на складе не стал отрицательным. Если стал – откатить транзакцию и вызвать ошибку.
    5. Записать информацию об операции в лог-таблицу OrderLog.
      ].
  • Схемы таблиц: [приведите команды CREATE TABLE для Orders, Stock, OrderLog].

Задачи для тебя:

  1. Напиши полный код хранимой процедуры.
  2. Оберни всю логику в явную транзакцию (BEGIN TRANSACTION... COMMIT/ROLLBACK).
  3. Используй блок TRY...CATCH для обработки ошибок. В блоке CATCH должен происходить откат транзакции.
  4. Добавь подробные комментарии к каждому логическому блоку кода.
  5. В конце процедуры верни код результата (0 – успех, -1 – ошибка).

*****

Почему это работает:
Промпт предоставляет ИИ не только цель, но и подробный алгоритм действий. Разбивка бизнес-логики на конкретные шаги и указание на обязательное использование транзакций и обработки ошибок заставляет нейросеть сгенерировать не просто набор SQL-команд, а надежный и структурированный код.

8. Генерация тестовых данных

Проблема:
Для тестирования производительности или функциональности нужно наполнить базу данных большим объемом реалистичных данных.

Решение:
Промпт создает скрипт, который генерирует тысячи или миллионы строк тестовых данных с учетом типов полей и их взаимосвязей.

Текст промпта:

*****

Ты – инженер по тестированию, которому нужно сгенерировать большой объем правдоподобных данных для нагрузочного тестирования.

Контекст:

  • СУБД: [укажите СУБД, например, «MySQL 8.0»].
  • Таблица для заполнения:
    [вставьте команду CREATE TABLE для вашей таблицы, например, CREATE TABLE events (...)]
  • Количество строк для генерации: [укажите число, например, «1 000 000»].

Требования к данным:
[Опишите, как должны выглядеть данные в каждом поле, например:

  • event_id: автоинкремент.
  • event_type: случайное значение из списка (‘click’, ‘view’, ‘purchase’).
  • user_id: случайное число от 1 до 10000.
  • event_timestamp: случайная дата и время за последний год.
  • payload_json: небольшой JSON-объект со случайными данными.]

Задачи для тебя:

  1. Напиши SQL-скрипт или хранимую процедуру для генерации и вставки [1 000 000] строк в таблицу events.
  2. Скрипт должен быть оптимизирован для быстрой вставки больших объемов данных (например, использовать пакетную вставку, если СУБД это поддерживает).
  3. Объясни, как запустить скрипт и на что обратить внимание.

*****

Почему это работает:
Промпт четко определяет не только структуру таблицы, но и правила генерации данных для каждого поля. Это позволяет ИИ создавать не просто случайный набор символов, а данные, которые выглядят реалистично и подходят для осмысленного тестирования.

9. Составление чек-листа для аудита безопасности

Проблема:
Нужно провести аудит безопасности базы данных, но легко упустить важные моменты.

Решение:
Промпт генерирует подробный чек-лист для проверки настроек безопасности, адаптированный под конкретную СУБД.

Текст промпта:

*****

Ты – сертифицированный эксперт по информационной безопасности, специализирующийся на базах данных. Твоя задача – составить исчерпывающий чек-лист для аудита безопасности.

Контекст:

  • СУБД для аудита: [укажите СУБД и версию, например, «Oracle 19c»].
  • Тип системы: [опишите, например, «финансовая система с персональными данными»].

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

  1. Аутентификация и управление доступом:

    • Политики паролей (сложность, срок действия).
    • Использование стандартных учетных записей (SYS, SYSTEM).
    • Принцип наименьших привилегий.
    • Проверка привилегий PUBLIC.
  2. Сетевая безопасность:

    • Настройки listener.
    • Использование шифрования трафика (TLS/SSL).
    • Ограничение доступа по IP-адресам.
  3. Шифрование данных:

    • Использование TDE (Transparent Data Encryption).
    • Шифрование бэкапов.
  4. Аудит и логирование:

    • Настройки системного аудита (logon/logoff, DDL-операции).
    • Защита и ротация логов аудита.
  5. Обновления и патчи:

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

Для каждого пункта чек-листа кратко опиши, в чем заключается риск и как его проверить (можно привести пример запроса к системным представлениям).

*****

Почему это работает:
Промпт не просто просит «проверить безопасность», а задает структуру чек-листа и ключевые области для проверки. Это заставляет ИИ систематизировать информацию и выдать не общие советы, а конкретный план действий, применимый на практике для указанной СУБД.

10. Сравнение СУБД для конкретной задачи

Проблема:
Нужно выбрать оптимальную СУБД для нового проекта, но сложно объективно сравнить все за и против.

Решение:
Промпт помогает провести взвешенное сравнение двух или более СУБД по критериям, важным для конкретного проекта.

Текст промпта:

*****

Ты – независимый IT-архитектор. Твоя задача – провести объективное сравнение двух систем управления базами данных для конкретного проекта и дать обоснованную рекомендацию.

Контекст проекта:

  • Описание проекта: [опишите, например, «социальная сеть для обмена фотографиями с лентой новостей и комментариями»].
  • Ожидаемая нагрузка: [опишите, например, «высокая нагрузка на чтение, умеренная на запись, до 10 000 запросов в секунду»].
  • Тип данных: [опишите, например, «структурированные данные (пользователи, лайки) и неструктурированные (фотографии)»].
  • Требования к масштабируемости: [опишите, например, «горизонтальное масштабирование на чтение»].
  • Опыт команды: [опишите, например, «основной опыт с реляционными СУБД, мало опыта с NoSQL»].

СУБД для сравнения: [например, «PostgreSQL» и «Cassandra»].

Задачи для тебя:
Сравни указанные СУБД по следующим критериям:

  1. Модель данных: Насколько хорошо подходит для хранения данных этого проекта?
  2. Производительность: Как справятся с ожидаемой нагрузкой на чтение и запись?
  3. Масштабируемость: Легкость и стоимость горизонтального/вертикального масштабирования.
  4. Отказоустойчивость: Встроенные механизмы репликации и восстановления после сбоев.
  5. Экосистема и сообщество: Доступность инструментов, документации и экспертов.
  6. Сложность эксплуатации: Насколько сложно будет команде с ее текущим опытом поддерживать эту СУБД?

В конце сделай вывод и дай рекомендацию, какая СУБД лучше подходит для этого проекта и почему.

Формат ответа: таблица сравнения, за которой следует развернутый вывод с рекомендацией.

*****

Почему это работает:
Вместо абстрактного «что лучше, X или Y?», промпт заставляет ИИ проводить анализ в контексте конкретного проекта с его уникальными требованиями. Это смещает фокус с общих характеристик СУБД на их применимость к реальной задаче, что делает сравнение и итоговую рекомендацию гораздо более ценными.

11. Рефакторинг устаревшего SQL-кода

Проблема:
В системе есть старый SQL-код, который использует устаревшие конструкции, работает медленно и его трудно поддерживать.

Решение:
Промпт помогает переписать старый код на современный, более эффективный и читаемый диалект SQL.

Текст промпта:

*****

Ты – опытный SQL-разработчик, который проводит ревью кода и модернизирует устаревшие решения. Твоя задача – переписать старый SQL-запрос, используя современные возможности языка.

Контекст:

  • Исходный диалект SQL: [укажите, например, «старый синтаксис Oracle с соединениями через WHERE»].
  • Целевой диалект SQL: [укажите, например, «современный стандарт ANSI SQL-92 JOIN»].
  • Цель рефакторинга: [опишите, например, «улучшить читаемость, производительность и избавиться от устаревших конструкций»].

Исходный код:
[вставьте сюда ваш старый SQL-запрос]

Задачи для тебя:

  1. Перепиши предоставленный запрос, используя современный синтаксис (например, заменив неявные соединения на явные JOIN, использовав CTE вместо подзапросов).
  2. Прокомментируй каждое внесенное изменение, объясняя, почему новая версия лучше старой (например, «использование INNER JOIN более наглядно и менее подвержено ошибкам, чем соединение в WHERE«).
  3. Если возможно, предложи альтернативный вариант запроса, который может быть еще эффективнее.

Формат ответа: блок с новым кодом, за которым следует список внесенных изменений с объяснениями.

*****

Почему это работает:
Промпт четко указывает на цель – не просто «исправить», а «модернизировать», и задает конкретные направления для улучшения (синтаксис, читаемость). Это позволяет ИИ действовать не как простой корректор, а как опытный разработчик, проводящий осмысленный рефакторинг.

12. Создание плана обслуживания базы данных

Проблема:
База данных работает, но со временем ее производительность падает из-за фрагментации, устаревшей статистики и «раздутых» индексов.

Решение:
Промпт генерирует еженедельный или ежемесячный план обслуживания для поддержания БД в оптимальном состоянии.

Текст промпта:

*****

Ты – системный администратор, ответственный за стабильную работу баз данных. Твоя задача – составить регламент регулярного обслуживания для поддержания производительности.

Контекст:

  • СУБД: [укажите СУБД и версию, например, «Microsoft SQL Server 2017»].
  • Характер нагрузки: [опишите, например, «OLTP-система с частыми операциями INSERT, UPDATE, DELETE»].

Задачи для тебя:
Составь план регулярного обслуживания, который можно выполнять еженедельно в период наименьшей нагрузки. План должен включать следующие задачи:

  1. Обновление статистики: Напиши скрипт для обновления статистики по всем таблицам. Объясни, почему это важно.
  2. Реорганизация и перестроение индексов: Напиши скрипт, который анализирует фрагментацию индексов и принимает решение:

    • Выполнить REORGANIZE, если фрагментация составляет [например, 10-30%].
    • Выполнить REBUILD, если фрагментация превышает [например, 30%].
      Объясни разницу между этими операциями.
  3. Проверка целостности базы данных: Включи в план команду DBCC CHECKDB и объясни ее назначение.
  4. Очистка журналов и логов: Предложи стратегию для очистки старых логов и журналов.

Представь этот план в виде последовательности шагов с примерами скриптов на T-SQL для каждой задачи.

*****

Почему это работает:
Промпт не просто просит «обслужить базу», а перечисляет конкретные задачи, которые входят в это понятие (статистика, индексы, проверка целостности). Это дает ИИ четкую структуру и позволяет сгенерировать комплексный и практически применимый план с готовыми скриптами.

13. Диагностика и анализ взаимоблокировки (Deadlock)

Проблема:
В логах появились сообщения о взаимоблокировках (deadlocks), и нужно понять, какие процессы конфликтуют и почему.

Решение:
Промпт помогает проанализировать информацию о взаимоблокировке (например, XML-отчет из SQL Server) и определить причину конфликта.

Текст промпта:

*****

Ты – эксперт по производительности SQL Server, мастер анализа взаимоблокировок. Твоя задача – проанализировать отчет о взаимоблокировке и объяснить ее причину простыми словами.

Контекст:

  • СУБД: Microsoft SQL Server.
  • Отчет о взаимоблокировке (Deadlock Graph XML):
    [вставьте сюда полный XML-код отчета о взаимоблокировке]

Задачи для тебя:

  1. Проанализируй предоставленный XML-граф.
  2. Определи два (или более) процесса, участвующих в блокировке. Для каждого процесса укажи его SPID (идентификатор сессии).
  3. Определи ресурсы (таблицы, страницы, ключи), за которые боролись процессы.
  4. Опиши последовательность событий, которая привела к взаимоблокировке: «Процесс А заблокировал ресурс X и пытается получить доступ к ресурсу Y, в то время как Процесс Б заблокировал ресурс Y и пытается получить доступ к ресурсу X».
  5. Предложи 2-3 возможных способа решения проблемы (например, «изменить порядок обновления таблиц», «добавить покрывающий индекс», «использовать уровень изоляции READ COMMITTED SNAPSHOT»).

Формат ответа: структурированный анализ с заголовками «Участники конфликта», «Ресурсы», «Сценарий взаимоблокировки» и «Рекомендации по устранению».

*****

Почему это работает:
Промпт предоставляет ИИ сырые данные – XML-отчет о взаимоблокировке. Это позволяет нейросети работать с фактами, а не с догадками. Четкая структура ожидаемого ответа помогает получить не просто пересказ XML, а полноценный анализ с определением причин и практическими рекомендациями.

14. Планирование емкости (Capacity Planning)

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

Решение:
Промпт помогает создать отчет с прогнозом роста и рекомендациями по планированию емкости.

Текст промпта:

*****

Ты – IT-аналитик, который готовит отчеты для руководства по планированию IT-инфраструктуры. Твоя задача – проанализировать исторические данные о росте базы данных и составить прогноз.

Контекст:

  • СУБД: [укажите СУБД, например, «PostgreSQL»].
  • Текущий размер БД: [укажите, например, «2 ТБ»].
  • Общий объем дискового пространства: [укажите, например, «3 ТБ»].
  • Исторические данные о росте (за последние 6 месяцев):
    [предоставьте данные в виде таблицы или списка, например:
  • Месяц 1: 1.5 ТБ
  • Месяц 2: 1.6 ТБ
  • Месяц 3: 1.75 ТБ
  • Месяц 4: 1.85 ТБ
  • Месяц 5: 1.9 ТБ
  • Месяц 6: 2.0 ТБ]

Задачи для тебя:

  1. Проанализируй предоставленные данные и рассчитай средний ежемесячный прирост данных в ГБ и в процентах.
  2. На основе этих данных построй линейный прогноз и определи, через сколько месяцев будет достигнута отметка в 90% заполненности диска ([укажите порог, например, 2.7 ТБ]).
  3. Определи самые быстрорастущие таблицы (если есть такая информация, предоставь ее).
  4. Подготовь краткий отчет для менеджмента, который включает:
    • Текущее состояние (размер БД, свободное место).
    • Прогноз роста.
    • Расчетную дату, к которой необходимо провести расширение дискового пространства.
    • Рекомендации (например, «запланировать закупку дисков через 3 месяца» или «рассмотреть возможность архивации старых данных»).

Формат ответа: отчет с четкими цифрами и выводами, без излишней технической детализации.

*****

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

15. Анализ нормализации таблицы

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

Решение:
Промпт помогает проанализировать структуру таблицы на соответствие нормальным формам (1НФ, 2НФ, 3НФ) и предлагает пути по ее улучшению.

Текст промпта:

*****

Ты – проектировщик баз данных, эксперт по теории нормализации. Твоя задача – проанализировать структуру таблицы и оценить, насколько она соответствует нормальным формам.

Контекст:

  • Структура таблицы для анализа:
    [вставьте команду CREATE TABLE или просто опишите поля, например:
    CREATE TABLE OrderDetails (
    OrderID INT,
    OrderDate DATE,
    CustomerName VARCHAR(100),
    CustomerAddress VARCHAR(255),
    ProductID INT,
    ProductName VARCHAR(100),
    ProductPrice DECIMAL(10, 2),
    Quantity INT
    );
    ]
  • Предполагаемый первичный ключ: [укажите, например, «(OrderID, ProductID)»].

Задачи для тебя:

  1. Проверь таблицу на соответствие Первой нормальной форме (1НФ). Обоснуй свой вывод.
  2. Проверь таблицу на соответствие Второй нормальной форме (2НФ). Определи частичные зависимости и объясни, почему они являются проблемой.
  3. Проверь таблицу на соответствие Третьей нормальной форме (3НФ). Определи транзитивные зависимости и объясни их негативные последствия.
  4. Предложи улучшенную схему данных (разбив исходную таблицу на несколько), которая будет соответствовать 3НФ. Для каждой новой таблицы укажи первичные и внешние ключи.
  5. Объясни, какие преимущества даст предложенная нормализация (например, «устранение избыточности данных», «избежание аномалий обновления»).

*****

Почему это работает:
Промпт заставляет ИИ действовать как теоретик и практик одновременно. Он должен не просто знать определения нормальных форм, но и применить их для анализа конкретной таблицы, выявить функциональные зависимости и предложить практическое решение по рефакторингу схемы.

16. Написание скрипта для архивации старых данных

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

Решение:
Промпт генерирует безопасный скрипт для переноса старых данных из «горячих» таблиц в архивные.

Текст промпта:

*****

Ты – администратор баз данных, решающий задачу по архивации данных. Твоя задача – написать скрипт, который безопасно переносит старые записи в архивную таблицу.

Контекст:

  • СУБД: [укажите, например, «PostgreSQL»].
  • Исходная таблица: orders
  • Архивная таблица: orders_archive (имеет ту же структуру).
  • Критерий архивации: [опишите, например, «переносить все заказы со статусом ‘Completed’ или ‘Cancelled’, которые были созданы более 2 лет назад»].
  • Ограничение: [укажите, например, «обрабатывать данные порциями по 10 000 строк, чтобы не создавать долгих блокировок»].

Задачи для тебя:

  1. Напиши SQL-скрипт (или PL/pgSQL функцию), который выполняет следующие действия в цикле:
    • Выбирает порцию старых данных из таблицы orders по заданному критерию.
    • Вставляет эти данные в orders_archive.
    • Удаляет эти же данные из orders.
  2. Вся операция (вставка + удаление) для одной порции должна выполняться в рамках одной транзакции.
  3. Добавь в скрипт вывод информации о количестве обработанных строк на каждой итерации.
  4. Предусмотри проверку, существует ли архивная таблица, и если нет, создай ее по структуре основной.

*****

Почему это работает:
Промпт акцентирует внимание на безопасности и производительности. Требования обрабатывать данные порциями и использовать транзакции заставляют ИИ сгенерировать не простой INSERT ... SELECT; DELETE ..., а продуманный и надежный скрипт, который можно без опаски запускать на рабочей системе.

17. Написание триггера для валидации данных

Проблема:
Нужно обеспечить целостность данных на уровне базы данных, запретив вставку или обновление некорректных значений.

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

Текст промпта:

*****

Ты – разработчик баз данных, создающий триггеры для обеспечения бизнес-правил. Твоя задача – написать триггер для проверки данных.

Контекст:

  • СУБД: [укажите, например, «MySQL»].
  • Таблица: products.
  • Поля: price (цена), stock_quantity (остаток на складе).
  • Бизнес-правило для валидации: [опишите правило, например, «поле price не может быть отрицательным или равным нулю. Поле stock_quantity не может быть отрицательным.»].
  • Событие для триггера: [укажите, например, «перед операциями INSERT и UPDATE«].

Задачи для тебя:

  1. Напиши код триггера, который будет срабатывать перед вставкой или обновлением строки в таблице products.
  2. Внутри триггера реализуй проверку новых значений для полей price и stock_quantity.
  3. Если хотя бы одно из условий не выполняется, триггер должен отменить операцию и сгенерировать осмысленное сообщение об ошибке (например, «Цена не может быть отрицательной»).

Формат ответа: полный код CREATE TRIGGER с комментариями, объясняющими логику.

*****

Почему это работает:
Промпт четко определяет три ключевых элемента: объект (таблица), событие (INSERT/UPDATE) и условие (бизнес-правило). Это позволяет ИИ сгенерировать точный и соответствующий задаче код, включая важный аспект – генерацию понятной ошибки для пользователя или приложения.

18. Объяснение специфического параметра конфигурации

Проблема:
В конфигурации СУБД есть множество параметров (например, work_mem, shared_buffers), и неясно, как изменение одного из них повлияет на всю систему.

Решение:
Промпт запрашивает у ИИ подробное объяснение конкретного параметра, его влияния на производительность и рекомендации по настройке.

Текст промпта:

*****

Ты – ментор для начинающих администраторов PostgreSQL. Твоя задача – подробно и понятно объяснить назначение важного конфигурационного параметра.

Параметр для объяснения: [укажите параметр, например, «work_mem»].

Задачи для тебя:

  1. Объясни простыми словами, за что отвечает параметр work_mem. Используй аналогии (например, «это как размер стола, на котором вы раскладываете документы для работы»).
  2. Опиши, какие операции в PostgreSQL используют память, выделяемую этим параметром (например, «сортировка, хеш-соединения»).
  3. Объясни, что происходит, если выделенной памяти не хватает. Что такое «сбрасывание на диск» и почему это плохо для производительности?
  4. Дай практические рекомендации по настройке этого параметра:
    • Как определить текущее значение?
    • Как понять, что его нужно увеличить? (например, анализируя логи или EXPLAIN).
    • Какие риски связаны со слишком большим значением work_mem?
  5. Приведи пример SQL-запроса, производительность которого сильно зависит от work_mem.

Формат ответа: обучающая мини-статья с понятными объяснениями и практическими советами.

*****

Почему это работает:
Промпт задает роль «ментора» и требует не просто определения, а глубокого объяснения с аналогиями и примерами. Это заставляет ИИ раскрыть тему с разных сторон: что это, как работает, каковы последствия неправильной настройки и как настроить правильно.

19. Создание JSON-схемы для NoSQL базы данных

Проблема:
При работе с документо-ориентированными базами данных (например, MongoDB) легко создать хаос в структуре документов. Нужна валидация на уровне БД.

Решение:
Промпт помогает сгенерировать JSON-схему для валидации документов в коллекции.

Текст промпта:

*****

Ты – разработчик, проектирующий схемы данных для NoSQL баз. Твоя задача – создать JSON-схему для валидации документов в коллекции MongoDB.

Контекст:

  • Название коллекции: users.
  • Описание структуры документа:
    [опишите желаемую структуру, например:

    • _id: ObjectID, обязательное.
    • username: строка, обязательное, от 3 до 20 символов.
    • email: строка, обязательное, должно соответствовать формату email.
    • status: строка, обязательное, одно из значений: ‘active’, ‘inactive’, ‘banned’.
    • createdAt: дата, обязательное.
    • profile: вложенный объект с необязательными полями firstName (строка) и lastName (строка).]

Задачи для тебя:

  1. Напиши JSON-схему, которая описывает и валидирует указанную структуру документа.
  2. Используй соответствующие типы данных BSON (string, date, object, и т.д.).
  3. Реализуй все перечисленные ограничения (обязательные поля, длина строки, перечисление, регулярное выражение для email).
  4. Предоставь команду для mongosh, которая применяет эту схему к коллекции users.

Формат ответа: блок с кодом JSON-схемы, за которым следует команда для ее применения.

*****

Почему это работает:
Промпт предоставляет четкое и структурированное описание желаемого документа. Это позволяет ИИ точно преобразовать бизнес-требования в формальный синтаксис JSON Schema, включая типы данных, обязательные поля и более сложные правила валидации.

20. Скрипт для поиска и удаления дубликатов

Проблема:
В таблице из-за ошибок в приложении или импорте появились дублирующиеся записи, которые нужно аккуратно найти и удалить.

Решение:
Промпт генерирует безопасный SQL-скрипт, который находит дубликаты, оставляет по одной уникальной записи и удаляет остальные.

Текст промпта:

*****

Ты – специалист по очистке данных. Твоя задача – написать SQL-скрипт для поиска и удаления дубликатов в таблице.

Контекст:

  • СУБД: [укажите, например, «PostgreSQL»].
  • Таблица: contacts.
  • Поля, по которым определяется дубликат: [укажите, например, «сочетание полей email и phone_number«].
  • Критерий, по которому выбирается «оригинальная» запись для сохранения: [укажите, например, «запись с наименьшим значением id или с самой ранней датой created_at«].

Задачи для тебя:

  1. Напиши SQL-запрос, который находит все группы дублирующихся записей и показывает их. Этот запрос не должен ничего удалять, он нужен только для анализа.
  2. Напиши второй, основной SQL-скрипт для удаления дубликатов. Используй безопасный метод с применением оконных функций (например, ROW_NUMBER()) или DELETE ... USING.
  3. Скрипт должен гарантированно оставлять одну запись из каждой группы дубликатов.
  4. Объясни, как работает твой скрипт для удаления, и почему он безопасен.

Формат ответа: два отдельных SQL-запроса с подробными комментариями.

*****

Почему это работает:
Промпт разбивает опасную задачу на два этапа: сначала безопасный поиск, потом удаление. Указание на критерий выбора «оригинала» и на использование безопасных техник (оконные функции) направляет ИИ на создание надежного решения, а не рискованного DELETE, который может удалить лишнее.

21. Перевод SQL-запроса между диалектами

Проблема:
Нужно адаптировать SQL-запрос, написанный для одной СУБД (например, Oracle), для выполнения в другой (например, PostgreSQL).

Решение:
Промпт помогает «перевести» запрос, заменяя специфичные для диалекта функции и синтаксис на их аналоги в целевой СУБД.

Текст промпта:

*****

Ты – полиглот в мире SQL, знающий тонкости диалектов разных СУБД. Твоя задача – перевести SQL-запрос с одного диалекта на другой.

  • Исходный диалект: [укажите, например, «T-SQL (Microsoft SQL Server)»].
  • Целевой диалект: [укажите, например, «стандартный SQL для PostgreSQL»].

Исходный T-SQL запрос:
[вставьте сюда ваш запрос, например, с использованием GETDATE(), TOP 10, ISNULL()]

Задачи для тебя:

  1. Перепиши предоставленный запрос на синтаксис, совместимый с PostgreSQL.
  2. Создай таблицу, в которой будут сопоставлены все замененные функции и конструкции. Формат таблицы: «Конструкция T-SQL» | «Аналог в PostgreSQL» | «Краткое пояснение».
    Примеры для таблицы: GETDATE() -> NOW(), TOP 10 -> LIMIT 10, ISNULL(col, 'default') -> COALESCE(col, 'default').
  3. Если прямого аналога для какой-то функции нет, предложи обходной путь или альтернативную реализацию.

*****

Почему это работает:
Промпт не просто просит «перевести», но и требует создать сравнительную таблицу. Это заставляет ИИ не просто механически заменять слова, а анализировать каждую конструкцию, находить ее семантический эквивалент и документировать замену, что делает результат гораздо более полезным и обучающим.

22. Генерация документации для схемы базы данных

Проблема:
Существует база данных без какой-либо документации, и новым разработчикам сложно в ней разобраться.

Решение:
Промпт генерирует текстовую документацию в формате Markdown на основе DDL-скриптов базы данных.

Текст промпта:

*****

Ты – технический писатель, который создает документацию для разработчиков. Твоя задача – сгенерировать документацию для схемы базы данных на основе ее DDL-описания.

Контекст:

  • Назначение базы данных: [кратко опишите, например, «база данных для интернет-магазина»].
  • DDL-скрипты:
    [вставьте сюда команды CREATE TABLE для всех таблиц, которые нужно задокументировать]

Задачи для тебя:

  1. Проанализируй предоставленные DDL-скрипты.
  2. Для каждой таблицы создай раздел в документации.
  3. В разделе для каждой таблицы:
    • Укажи название таблицы.
    • Попробуй предположить и описать назначение таблицы, исходя из ее названия и полей.
    • Создай таблицу с описанием полей: «Название поля» | «Тип данных» | «Ограничения (PK, FK, NOT NULL)» | «Предполагаемое назначение».
  4. Если есть внешние ключи (Foreign Keys), опиши связи между таблицами (например, «Таблица orders связана с таблицей customers по полю customer_id«).

Формат ответа: хорошо структурированный текст в формате Markdown с заголовками, таблицами и списками.

*****

Почему это работает:
Промпт превращает ИИ в «обратного инженера», который восстанавливает логику по ее технической реализации. Требование не просто перечислить поля, а предположить их назначение и описать связи, позволяет получить не сухой справочник, а осмысленный документ, который помогает понять структуру данных.

23. Скрипт для мониторинга производительности в реальном времени

Проблема:
Нужно отслеживать текущую активность в базе данных, чтобы быстро реагировать на проблемы с производительностью.

Решение:
Промпт генерирует SQL-запрос к системным представлениям для отображения активных сессий, их текущих запросов и времени выполнения.

Текст промпта:

*****

Ты – администратор баз данных, который следит за производительностью системы в реальном времени. Твоя задача – написать диагностический запрос, показывающий текущую активность.

Контекст:

  • СУБД: [укажите СУБД, например, «PostgreSQL 14»].
  • Цель: получить «снимок» текущей активности в БД.

Задачи для тебя:

  1. Напиши SQL-запрос к системным представлениям (например, pg_stat_activity), который выводит следующую информацию по каждой активной сессии:
    • ID процесса (pid).
    • Имя пользователя (usename).
    • Имя базы данных (datname).
    • IP-адрес клиента (client_addr).
    • Текущий статус сессии (state, например, ‘active’, ‘idle in transaction’).
    • Время начала текущего запроса (query_start).
    • Длительность выполнения текущего запроса.
    • Полный текст выполняемого SQL-запроса (query).
  2. Отсортируй результат по длительности выполнения запроса (от самых долгих к самым быстрым).
  3. Исключи из вывода фоновые процессы и самого себя (текущий запрос).
  4. Добавь комментарии, объясняющие, из какого системного представления берется каждая колонка.

*****

Почему это работает:
Промпт четко перечисляет, какие именно данные нужно извлечь и как их представить. Это позволяет ИИ построить сложный запрос к системным каталогам, объединив несколько представлений и отфильтровав результат так, чтобы он был максимально информативным и сфокусированным на пользовательской активности.

24. Анализ фрагментации индексов

Проблема:
Индексы со временем фрагментируются, что снижает их эффективность и замедляет SELECT-запросы. Нужно найти самые фрагментированные индексы.

Решение:
Промпт генерирует скрипт, который анализирует все индексы в базе данных и выводит отчет об уровне их фрагментации.

Текст промпта:

*****

Ты – эксперт по производительности, который ищет скрытые проблемы в базе данных. Твоя задача – написать скрипт для анализа фрагментации индексов.

Контекст:

  • СУБД: [укажите СУБД, например, «Microsoft SQL Server»].
  • База данных: [укажите имя БД или укажите «текущая»].

Задачи для тебя:

  1. Напиши T-SQL запрос, который использует динамическое административное представление (DMV) sys.dm_db_index_physical_stats.
  2. Запрос должен вывести следующую информацию для каждого индекса в базе данных:
    • Название таблицы.
    • Название индекса.
    • Уровень фрагментации в процентах (avg_fragmentation_in_percent).
    • Количество страниц в индексе (page_count).
  3. Отсортируй результат по убыванию уровня фрагментации.
  4. Включи в запрос фильтр, чтобы показывать только индексы с количеством страниц больше [укажите порог, например, 100] и уровнем фрагментации выше [укажите порог, например, 10%].
  5. В конце дай краткую рекомендацию: при каком уровне фрагментации стоит делать REORGANIZE, а при каком REBUILD ONLINE=ON.

*****

Почему это работает:
Промпт указывает на конкретный инструмент (sys.dm_db_index_physical_stats) и задает критерии фильтрации. Это сужает область поиска для ИИ и позволяет ему сгенерировать точный, практичный скрипт, отсеивающий малозначимые результаты (фрагментацию маленьких индексов) и фокусирующийся на реальных проблемах.

25. Создание отчета о привилегиях пользователя

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

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

Текст промпта:

*****

Ты – аудитор безопасности баз данных. Твоя задача – составить полный отчет о привилегиях, выданных конкретному пользователю.

Контекст:

  • СУБД: [укажите СУБД, например, «Oracle»].
  • Имя пользователя для проверки: [укажите, например, «APP_USER»].

Задачи для тебя:
Напиши набор SQL-запросов к представлениям словаря данных (Data Dictionary Views), чтобы получить следующую информацию:

  1. Запрос для вывода системных привилегий, выданных напрямую пользователю (например, из DBA_SYS_PRIVS).
  2. Запрос для вывода ролей, выданных пользователю (из DBA_ROLE_PRIVS).
  3. Запрос для вывода объектных привилегий, выданных пользователю (SELECT, INSERT, и т.д. на конкретные таблицы; из DBA_TAB_PRIVS).
  4. Запрос, который рекурсивно покажет все привилегии, полученные пользователем через роли (это более сложный запрос, возможно, требующий иерархического запроса).

Для каждого запроса предоставь краткое пояснение, какую информацию он извлекает.

Формат ответа: четыре блока SQL-кода, каждый с заголовком и пояснением.

*****

Почему это работает:
Промпт детализирует, какие именно аспекты прав доступа нужно проверить (системные, объектные, через роли). Это заставляет ИИ сгенерировать не один общий запрос, а целый набор диагностических инструментов, который дает полную и всестороннюю картину прав пользователя, включая косвенно унаследованные привилегии.

Продвинутые приемы для улучшения запросов к ИИ

Когда базовые шаблоны освоены, можно переходить на следующий уровень. Качество ответов нейросети можно значительно улучшить, используя специальные команды и приемы прямо в тексте промпта. Они помогают управлять стилем, структурой и логикой ответа.

Прием / Команда Описание Когда применять
«Действуй по шагам» Заставляет ИИ разбить решение сложной задачи на последовательные этапы и описывать каждый из них. Это предотвращает «перескакивание» через логические шаги. При генерации сложных планов (миграция, развертывание) или алгоритмов, где важен порядок действий.
«Объясни как для пятилетнего» или «Используй аналогии» Требует от ИИ упростить сложные технические концепции, используя метафоры и примеры из повседневной жизни. Когда нужно разобраться в фундаментальном принципе работы чего-либо (например, как работает индекс или транзакционная изоляция).
«Представь несколько альтернатив» Запрещает ИИ выдавать только одно, первое пришедшее в голову решение. Заставляет его предложить несколько разных подходов к одной и той же задаче. При выборе архитектурных решений, инструментов или способов оптимизации, когда нужно увидеть полную картину возможных вариантов.
«Сначала составь план, а затем реализуй его» Инструкция сначала описать логику будущего скрипта или ответа в виде плана (например, списка пунктов), а затем, после вашего одобрения или без него, написать сам код. Для очень сложных скриптов или процедур, чтобы убедиться, что ИИ правильно понял логику, прежде чем начнет писать код.
«Проанализируй сильные и слабые стороны этого решения» Заставляет ИИ не просто предложить решение, а критически его оценить, указав на потенциальные риски, ограничения и недостатки. При оценке сгенерированного кода или предложенной архитектуры, чтобы понять «подводные камни».
«Оформи ответ в виде [формат]» Четко задает структуру вывода: «в виде таблицы», «в виде JSON», «в виде Markdown-документа», «в виде bash-скрипта». Всегда, когда нужен результат в машиночитаемом или строго структурированном виде, а не просто текст.

Неочевидные советы для эффективной работы

Напоследок – несколько советов, которые редко упоминаются в инструкциях, но которые сильно влияют на итоговый результат. Это наблюдения из практики, позволяющие избежать многих разочарований.

  1. Используйте отдельный сеанс чата для каждой крупной задачи. Нейросеть учитывает контекст предыдущих сообщений. Смешивая в одном диалоге оптимизацию запроса, а затем написание бэкап-скрипта, вы «загрязняете» контекст и снижаете качество ответов по обеим задачам.
  2. Просите ИИ взять на себя роль вашего оппонента. Вместо «напиши скрипт» попробуйте: «Вот мой скрипт для архивации данных. Ты – мой старший коллега на ревью кода. Найди в нем потенциальные ошибки, узкие места и предложи улучшения». Это заставляет ИИ работать в «режиме критика» и находить неочевидные проблемы.
  3. Не бойтесь «скармливать» ИИ большие объемы текста. Если нужно проанализировать лог-файл, длинный скрипт или документацию – смело вставляйте их в промпт. Чем больше релевантного контекста вы дадите, тем точнее будет ответ. Современные модели отлично справляются с большими объемами информации.
  4. Сохраняйте удачные формулировки промптов немедленно. Кажется очевидным, но большинство этого не делает. Если вы нашли работающую комбинацию роли, контекста и инструкций, которая дала отличный результат, – сохраните этот шаблон в отдельный текстовый файл. Это ваша личная, пополняемая библиотека эффективных запросов.
  5. Используйте ИИ для обучения, а не только для генерации кода. Если нейросеть предложила использовать функцию, которую вы не знаете, не копируйте слепо. Попросите ее в следующем сообщении: «Объясни подробно, как работает функция `ROW_NUMBER()` в твоем предыдущем ответе, и приведи еще один пример ее использования».
  6. Если ответ не устраивает, не начинайте заново, а уточняйте. Вместо того чтобы редактировать свой первоначальный запрос и отправлять его снова, лучше написать: «Это не совсем то, что нужно. Перепиши предыдущий скрипт, но на этот раз используй CTE, а не временные таблицы». Итеративные уточнения часто работают лучше, чем попытки составить идеальный промпт с первого раза.
Бесплатно с ИИ Claude · ChatGPT
Баланс запросов: —