Затраты в сравнении с Постоянными доходами

StackOverflow https://stackoverflow.com/questions/158814

  •  03-07-2019
  •  | 
  •  

Вопрос

Что означает видеть запрос, который имеет низкую стоимость в плане объяснения, но высокое количество последовательных запросов в autotrace?В данном случае стоимость исчислялась сотнями долларов, а кредиты - миллионами.

Это было полезно?

Решение

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

Вкратце, стоимость представляет собой то количество времени, в течение которого оптимизатор ожидает выполнения запроса, но выражается в единицах времени, которое занимает чтение одного блока.Например, если Oracle ожидает, что чтение одного блока займет 1 мс, а запрос - 20 мс, то стоимость равна 20.

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

Полезным методом, который может помочь объяснить несоответствия между прогнозируемым планом выполнения и фактической производительностью, является "обратная связь по мощности".Смотрите эту презентацию: http://www.centrexcc.com/Tuning%20by%20Cardinality%20Feedback.ppt.pdf

Другие советы

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

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

Хотя есть много-много факторов, которые могут повлиять на стоимость, и несколько факторов, которые могут повлиять на количество согласованных возвратов, вероятно, разумно ожидать, что при очень низкой стоимости и очень большом количестве согласованных возвратов оптимизатор, вероятно, работает с плохими оценками мощности различных шагов (столбец ROWS в таблице PLAN_TABLE сообщает вам ожидаемое количество строк, возвращаемых на каждом шаге).Это может указывать на то, что у вас отсутствуют или устарели статистические данные, что у вас отсутствуют некоторые гистограммы, что ваши параметры инициализации или системная статистика каким-то образом неверны, или что у CBO по какой-либо другой причине возникают проблемы с оценкой мощности ваших результатов.

Какую версию Oracle вы используете?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top