когда я пытаюсь использовать Oracle Statistics, моя стоимость растет? - PullRequest
1 голос
/ 04 мая 2011

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

Странная часть в том, что когда я получаю план выполнения без статистики, он говорит что-то вроде 1.2M. однако, если я получу статистику для одной из таблиц, участвующих в запросе, моя стоимость снизится до 4k. Но если я запрашиваю статистику в других таблицах, стоимость возрастает до 50 тыс., Поэтому я не уверен, что происходит.

Кто-нибудь может объяснить причину, по которой предоставление большего количества статистики фактически увеличивает стоимость запроса?

Ответы [ 2 ]

5 голосов
/ 04 мая 2011

Оптимизатор на основе затрат использует столько информации, сколько вы можете предоставить для расчета стоимости плана.Если вы обновите (то есть измените) используемую статистику, то, очевидно, это изменит расчетную стоимость плана.

На самом деле не сбор статистики приводит к росту стоимости, а изменение статистики(вверх или вниз), что приводит к изменению расчетной стоимости.

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

Как правило, чем лучше (точнее или репрезентативнее) статистика, тем точнее расчет затрат.

0 голосов
/ 05 мая 2011

Оптимизатор на основе затрат имеет свои проблемы.Есть ошибки округления, которые могут оказать значительное влияние на принимаемые решения.Это одна из причин, почему SQL Plan Stability, представленная в 11g, так хороша.Забудьте о 10g, если можете, или подготовьтесь к длительным сеансам отладки.

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

В 11g просмотр также фиксирован, и один SQL теперь может иметь несколько планов, основываясь на значениях переменных связывания.Стоимость запроса зависит от многих факторов, где IO является очень важным фактором.Как заполнены ваши таблицы и где находятся отметки уровня воды?Стол, который постоянно заполняется и опорожняется, может иметь верхний водяной знак далеко ...

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

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