SQL Profile является коллекцией вспомогательной информации, которая формируется в течение автоматической настройки SQL-предложения. Таким образом, SQL Profile для SQL-предложения является тем же, чем статистика является для таблицы или индекса. Однажды созданный SQL Profile используется оптимизатором запросов (в обычном режиме) вместе с существующей статистикой, для того чтобы сгенерировать хорошо отлаженный план для данного SQL-предложения.
Когда создается SQL Profile, он постоянно хранится в словаре данных. Однажды созданный SQL Profile будет использоваться каждый раз оптимизатором запроса, при компиляции (так как оптимальный) соответствующего SQL-предложения для создания хорошо отлаженного плана. Для управления SQL Profile предоставляется полный набор функций (см. раздел “”).
На рисунке 4 показан поток процессов создания и использования SQL Profile. Процесс состоит из двух отдельных стадий: стадия настройки SQL и стадия обычной оптимизации. На стадии настройки SQL АБД выбирает SQL-предложение для автоматической настройки и запускает SQL Tuning Advisor, используя GUI интерфейс Enterprise Manager (см. раздел “SQL Tuning Interface”) или использует интерфейс командной строки (см. раздел “”). SQL Tuning Advisor вовлекает Automatic Tuning Optimizer, возможно, с SQL Profile в генерирование рекомендаций настройки. Если SQL Profile создан, то АБД может принять его. Когда SQL Profile создан, то он сохраняется в словаре данных. Тогда на следующей стадии, когда конечный пользователь запускает то же самое SQL-предложение, оптимизатор запросов (в обычном режиме) использует SQL Profile для генерации хорошо отлаженного плана. Использование SQL Profile остается полностью прозрачным для конечного пользователя.
Очень важно заметить, что создание и использование SQL Profile не требует внесения изменений в исходный текст приложения. Это является ключом к настройке SQL-предложений, используемых пакетными приложениями.
Вспомогательная информация, содержащаяся в SQL Profile, сохраняется таким способом, что она остается релевантной даже после внесения в базу данных таких изменений, как добавление или удаление индексов, увеличение размеров таблиц и периодический сбор статистики базы данных. Однако, SQL Profile может не приспособиться к массовым изменениям в базе данных или к изменениям, которые происходят в течение продолжительного времени. В этом случае должен быть сформирован новый SQL Profile взамен старого. Например, когда SQL Profile устаревает, выполнение соответствующего SQL-предложения становится заметно хуже. В таком случае заданное SQL-предложение может снова быть показано сильно нагруженное, или топ, становясь, таким образом, снова целью для Automatic SQL Tuning.