Что означает стоимость, кардинальность и байты в плане объяснения?

Это простой запрос: select * from customers

Когда я пишу этот запрос в PL/SQL Developer и нажимаю F5, я вижу План объяснения, но я не знаю, что представляют собой Стоимость, Мощность и Байты.

2 ответа

См. Раздел 12.10 для описания столбцов таблицы плана.

https://docs.oracle.com/cd/E11882_01/server.112/e41573/ex_plan.htm

Стоимость - это объем работы, который оптимизатор оценивает для выполнения вашего запроса по определенному плану. Оптимизатор обычно предпочитает более дешевые планы.

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

Количество элементов - это число строк, которые, по предположениям оптимизатора, будут обработаны для шага плана. Если статистика старая, отсутствует или неполная - это может быть крайне ошибочным. Вы хотите посмотреть, где оптимизатор видит 5 строк (количество элементов), но на самом деле 50000 строк.

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

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

Из http://www.oracle.com/technetwork/database/bi-datawarehousing/twp-explain-the-explain-plan-052011-393674.pdf:

Что такое стоимость?

Oracle Optimizer - это оптимизатор на основе затрат. План выполнения, выбранный для оператора SQL, является лишь одним из многих альтернативных планов выполнения, рассмотренных оптимизатором. Оптимизатор выбирает план выполнения с наименьшей стоимостью, где стоимость представляет собой предполагаемое использование ресурсов для этого плана. Чем ниже стоимость, тем более эффективным будет план. Модель затрат оптимизатора учитывает ресурсы ввода-вывода, ЦП и сети, которые будут использоваться запросом. Рисунок 8. Стоимость указана в пятом столбце плана выполнения. Стоимость всего плана (указана в строке 0) и каждой отдельной операции отображается в плане выполнения. Тем не менее, это не то, что можно настроить или изменить. Стоимость является внутренней единицей и отображается только для сравнения планов.

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

Значение этого столбца не имеет какой-либо конкретной единицы измерения; это просто взвешенное значение, используемое для сравнения затрат на выполнение планов. Значение этого столбца является функцией столбцов CPU_COST и IO_COST.

Итак, COST - это безразмерное значение, которое зависит от стоимости процессора и ввода-вывода.

Другие вопросы по тегам