1. Главная страница » Компьютеры

Explain plan oracle описание

Автор: | 16.12.2019

материалы для новичков и не только

Oracle Database 11g: Настройка производительности — планы выполнения

Oracle Database 11g Настройка производительности.

Как читать планы выполнения запросов

  • Сортировка таблиц, на которые ссылается оператор
  • Метод доступа для каждой таблицы, указанной в операторе
  • Метод соединения для таблиц, применяемый операторами соединения в выражении
  • Операции с данными, такие как фильтр, сортировка или агрегирование

Дополнительно к дереву исходных строк (или дереву потока данных в параллельных операциях) таблица плана содержит следующие данные:

  • Данные оптимизации, такие как стоимость и кардинальность каждой операции
  • Данные секционирования, такие как набор партиций к которым выполнялся доступ
  • Данные параллельного выполнения, такие как метод распределения операций соединения

Результаты выполнения EXPLAIN PLAN позволяют определить, выбирает ли оптимизатор конкретный план выполнения, например, использование вложенных циклов.

  • DISPLAY: Используется для форматированного вывода плана выполнения.
  • DISPLAY_AWR: Используется для форматированного вывода плана выполнения SQL выражений, хранящихся в репозитории AWR.
  • DISPLAY_CURSOR: Используется для форматированного вывода плана выполнения из любого загруженного курсора
  • DISPLAY_SQL_PLAN_BASELINE: Используется для форматированного вывода одного и более планов выполнения SQL выражений идентифицируемых по заголовкам.
  • DISPLAY_SQLSET: Используется для форматированного вывода плана выполнения хранящегося в SQL Tuning set.

Преимущество использования пакета DBMS_XPLAIN заключается в предоставлении возможности просмотра форматированного плана выполнения SQL выражения в не зависимости от источника.

  • Команда EXPLAIN PLAN используется для генерации плана выполнения запроса.
  • После того как план сгенерирован, его можно посмотреть, запросив информацию из таблицы PLAN_TABLE
Читайте также:  Pioneer bdp 160 характеристики

  • ROWS если это уместно, показывает количество строк, предположительно посчитанное оптимизатором.
  • ROWS если это уместно, показывает количество байт, предположительно посчитанное оптимизатором.
  • COST если это уместно, показывает стоимость, предположительно посчитанную оптимизатором
  • PARTITION если это уместно, показывает отброс патриций оптимизатором
  • PARALLEL или это уместно, показывает информацию PX (метод распределения информации и информацию о очередях доступа к таблице )
  • PREDICATE или это уместно, показывает информацию о предикате
  • PROJECTION или это уместно, показывает секцию проекции

  • OFF Отключает использование трассировки
  • ON Включает использование автоматической трассировки
  • TRACE [ONLY] Включает автоматическую трассировку и подавляет вывод SQL
  • EXPLAIN Показывает план выполнения но не показывает сатистику
  • STATISTICS Показывает статистику без плана выполнения

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

  • recursive calls — количество рекурсивных вызовов, сгенерированных на клиентской и серверной стороне.Oracle Database поддерживает таблицы, используемые для внутренней обработки. Когда Oracle Database необходимо внести изменения в этих таблицах, она генерирует внутренний оператор SQL, который, в свою очередь, порождает рекурсивный вызов.
  • db block gets — количество раз, которое запрошен блок CURRENT
  • consistent gets — количество раз, которое запрошена операция целостного чтения блоков данных.
  • physical reads — количество блоков данных, прочитанных с диска. Это число представляет сумму значений physical reads direct и всех чтений из буферного кэша.
  • redo size — общее количество генерированного redo в блоках
  • bytes sent via SQL*Net to client — общее количество байт переданных клиенту от фонового процесса.
  • bytes received via SQL*Net from client — общее количество байт, полученных от клиента Oracle*Net
  • SQL*Net roundtrips to/from client — Общее количество сообщений Oracle NET отправленных и полученных от клиента.
  • sort (memory) — количество операций сортировки, успешно выполненных в памяти и не потребовали записи на диск.
  • sort (disk) — количество операций сортировки которое потребовало выполнения как минимум одной дисковой операции.
  • row processed — количество строк, обработанных в процессе выполнения операции.

  • ADDRESS
  • HASH_VALUE

  • SQL_ID — идентификатор SQL родительского курсора в библиотечном кэше
  • VERSION_COUNT количество дочерних курсоров которые представлены в кэше для заданного родительского курсора
  • ADDRESS представляет адрес заголовка родительского курсора для данного курсора
  • HASH_VALUE -значение родительского выражения в библиотечном кэше
  • SQL_ID — SQL идентификатор родительского курсора в библиотечном кэше
  • PLAN_HASH_VALUE — числовое представление SQL плана для данного курсора
  • CHILD_NUMBER — номер дочернего курсора

Используя данное представление можно получить ответы на следующие вопросы:

  • Топ-10 рабочих областей, которые требуют наибольшее количество памяти для кэша
  • Для рабочих областей, работающих в режиме AUTO, какой процент рабочих областей выполняется с использованием максимального количества памяти?

V$SQLSTATS отображает основную статистику производительности для курсоров SQL, с каждой строкой, представляющей данные сочетающие текст SQL выражения и план выполнения SQL (сочетание SQL_ID и PLAN_HASH_VALUE). Столбцы в V$SQLSTATS идентичны , V$SQL и V$SQLAREA. Тем не менее, представление V$SQLSTATS отличается от V$SQL и V$SQLAREA скоростью обработки, масштабируемостью, большим сроком хранения данных (статистические данные могут храниться в представлении, даже после того, как курсор был вытеснен из разделяемого пула).

Пример запроса данных из представления V$SQL_PLAN

  • IOSTATS: Предполагая что в процессе выполнения SQL собирается базовая статистика для планов исполнения параметр STATISTICS_LEVEL установлен в ALL или используется HINT GATHER_PLAN_STATISTICS) этот формат отображает статистику ввода/вывода для всех при указании ALL ( или только для последнего при указании LAST) выполнений курсора.
  • MEMSTATS: Предполагая что используется автоматическое управление PGA (параметр pga_aggregate_target установлен в не нулевое значение) этот формат позволяет показать статистику использования памяти данный вид статистики применим только к операциям, интенсивно использующим память, таким как например HASH Join, сортировка или некоторые из bitmap операторов.
  • ALLSTATS: Синоним для ‘IOSTATS MEMSTATS’
  • LAST: По умолчанию, статистика планов выполнения показывается для всех выполнений курсора. Используя ключевое слово LAST можно просмотреть статистику плана, генерированную после его последнего выполнения.
  • V$ACTIVE_SESSION_HISTORY — данное представление показывает информацию о последней активности сессий, пополняемую каждую секунду.
  • Представления V$ metric представляют данные метрик для отслеживания производительности системы. Список представлений метрик можно просмотреть обратившись к представлению V$METRICGROUP.
  • Представления DBA_HIST содержат исторические данные, хранящиеся в базе данных. Эта группа представлений включает в себя:
  1. DBA_HIST_ACTIVE_SESS_HISTORY содержит содержимое отобранной из памяти истории активного сеанса по недавней активности системы
  2. DBA_HIST_BASELINE содержит информацию о опорных линиях, хранящуюся в базе данных.
  3. DBA_HIST_DATABASE_INSTANCE содержит информацию об окружении БД
  4. DBA_HIST_SNAPSHOT содержит информацию о снэпшотах хранимых в системе
  5. DBA_HIST_SQL_PLAN содержит информацию о планах выполнения
  6. DBA_HIST_WR_CONTROL содержит информацию о настройках AWR

Запрос данных из AWR

  • SQL_ID
  • Внутренне генерированный идентификатор для того чтобы убедиться, что данный первичный ключ на самом деле уникален (SQL_EXEC_ID)
  • Временная метка начала исполнения выражения (SQL_EXEC_START)

  1. Начните сверху
  2. Переместитесь вниз и влево по дереву пока не достигните левого узла он выполняется первым
  3. Посмотрите на потомков этого узла. эти потомки будут выполняться далее.
  4. После того как выполнятся потомки, выполнение родительской операции продолжится
  5. Теперь, после того как эта операция и все её потомки выполнены переместитесь вверх по дереву, и смотрите на потомков исходного ряда операций и его родителей. Выполняется, по тому же принципу.
  6. Перемещайтесь вверх по дереву до тех пор, пока все операции не будут просмотрены

На рисунке выше представлена интерпретация плана выполнения для выражения. Запрос указанный на рисунке пытается найти сотрудников, чья зарплата выбивается и сетки зарплат. Запрос выбирает данные из двух таблиц и включает в себя подзапрос основаный на выборке из другой таблицы для проверки размеров зарплат.
Посмотрим порядок выполнения для этого запроса. Исходя из данного и предыдущего рисунка порядок выполнения будет следующий: 3-5-4-2-6-1:

    3: выполнение плана начнется с полного сканирования таблицы EMP ( >

Рекомендовано для:

  • Oracle Database 9i R1
  • Oracle Database 9i R2
  • Oracle Database 10g R1
  • Oracle Database 10g R2
  • Oracle Database 11g R1
  • Oracle Database 11g R2

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

Базовые правила плана исполнения:

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

Приведем пример плана исполнения:

Если следовать перечисленным выше правилам, то:

  • Операция 0 — корень дерева, и у нее один потомок, операция 1
  • У операции 1 два потомка — операции 2 и 4
  • У операции 2 один потомок — операция 3

Если представить это графически, то получиться примерно так:

Если прочитать это дерево, то получим следующее, в порядке выполнения: Для выполнения операции 1, необходимо выполнить операции 2 и 4. Операция 2 выполняется первой. Во время выполнения операции 2, необходимо выполнить операцию 3. Для выполнения операции 4, необходимо выполнить операцию 2.


    Операция 3 получает доступ к таблице DEPT, используя INDEX UNIQUE SCAN и предоставляет ROW >

Ссылки по теме

Помощь
Задать вопрос
программы
обучение
экзамены
компьютеры
Бесплатный звонок
ICQ-консультанты
Skype-консультанты
Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта

Популярные статьи
Информационная безопасность Microsoft Офисное ПО Антивирусное ПО и защита от спама Eset Software

Бестселлеры
Курсы обучения «Atlassian JIRA — система управления проектами и задачами на предприятии»
Microsoft Office 365 для Дома 32-bit/x64. 5 ПК/Mac + 5 Планшетов + 5 Телефонов. Подписка на 1 год. Электронный ключ
Microsoft Windows 10 Профессиональная 32-bit/64-bit. Все языки. Электронный ключ
Microsoft Office для Дома и Учебы 2019. Все языки. Электронный ключ
Курс «Oracle. Программирование на SQL и PL/SQL»
Курс «Основы TOGAF® 9»
Microsoft Windows Professional 10 Sngl OLP 1 License No Level Legalization GetGenuine wCOA (FQC-09481)
Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год. Электронный ключ
Windows Server 2016 Standard
Курс «Нотация BPMN 2.0. Ее использование для моделирования бизнес-процессов и их регламентации»
Антивирус ESET NOD32 Antivirus Business Edition
Corel CorelDRAW Home & Student Suite X8

О нас
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.

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

Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе.

Oracle, Unix, Windows

17 февраля 2011 г.

oracle: План выполнения запроса

План выполнения запроса

Расшифровка значений плана:

Cost — стоимость, совокупная стоимость строки плана — это время, потраченное на одноблочные чтения, плюс время, потраченное на многоблочные чтения, плюс необходимое процессорное время, и всё это делённое на время, необходимое для выполнения одноблочного чтения.
Таким образом, стоимость — это суммарное прогнозируемое время выполнения оператора, выраженное в единицах времени выполнения одноблочного чтения.

Card — кардинальность, количество записей, которое будет сгенерировано каждой строкой плана.

Bytes — байт, общий объём данных, который будет сгенерирован каждой строкой плана.

План запроса (общая информация)

1й способ
В схеме учётной записи, выполняющей данную команду, должна быть таблица PLAN_TABLE, которая создаётся скриптом @$ORACLE_HOME/rdbms/admin/utlxplan.sql

Чтобы узнать в командной строке по какому плану база будет выполнять запрос:
select * from test_table where name=’test’;

Нужно:
sql> explain plan for select * from test_table where name=’test’;

Посмотреть план:
sql> select * from table(DBMS_XPLAN.DISPLAY);

Так же можно посмотреть план из plan_table с помощью sql запроса.
Только необходимо задать STATEMENT_ID, что бы как то различать планы если их несколько в таблице plan_table:

sql> explain plan set STATEMENT_ for select * from test_table where name=’test’;

— посмотреть план:
SELECT LPAD(‘ ‘, 2 * (level — 1)) ||
DECODE (level,1,NULL,level-1 || ‘.’ || pt.position || ‘ ‘) ||
INITCAP(pt.operation) ||
DECODE(pt.options,NULL,»,’ (‘ || INITCAP(pt.options) || ‘)’) plan,
pt.object_name,
pt.object_type,
pt.bytes,
pt.cost,
pt.partition_start,
pt.partition_stop
FROM plan_table pt
START WITH pt. > AND pt.statement_
CONNECT BY PRIOR pt. > AND pt.statement_ ;

2й способ (в sqlplus)
Чтобы посмотреть план выполнения из sqlplus нужно установить autotrace

sql> set autotrace on
sql> set autotrace off

Ещё возможны опции установки:

SET AUTOTRACE ON EXPLAIN
The AUTOTRACE report shows only the optimizer execution path.

SET AUTOTRACE ON STATISTICS
The AUTOTRACE report shows only the SQL statement execution statistics.

SET AUTOTRACE TRACEONLY
Similar to SET AUTOTRACE ON, but suppresses the printing of the user’s query output, if any. If STATISTICS is enabled, query data is still fetched, but not printed.

План запроса (дополнительно)

Планы запросов можно вытянуть из V$SQL_PLAN.
V$SQL_PLAN contains the execution plan information for each child cursor loaded in the library cache.

Вытянуть план запроса по его SQL_ID.
SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR(‘&SQL_ID’, 0 ));

— например
SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR(‘ck4na28rqh00d’, 0 ));

— нарисует:
SQL_ID ck4na28rqh00d, child number 0
————————————-
SELECT count(*) FROM TSS_TRANSACTION WHERE entry_dt Автор: Andrew G на 15:11

«>

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *