May. 29th, 2009

Stay tuned

May. 29th, 2009 04:20 pm
egorius: (Default)

Один из способов оптимизации сложных запросов состоит в сравнении реальной кардинальности с прогнозом оптимизатора. Допустим, на каком-то шаге плана выполнения оптимизатор ожидал выбрать N строк, а реально было выбрано M, «сильно не похожее» на N. Стало быть, оптимизатор исходил из неправильных представлений и, скорее всего, построил неудачный план. Причин тому может быть много: отсутствие или неадекватность необходимой статистики, невозможность воспользоваться имеющейся статистикой, а также такие штуки, как коррелированность предикатов... Но, по крайней мере, понятно, где копать.

Оракл постепенно движется, с одной стороны, к усложнению и уточнению статистики (говорят, в 11g коррелированность уже можно победить), а с другой — к возможностям «самосовершенствования» (механизм bind peeking в 11g, порождающий разные планы при наличии гистограммы на столбце).

Спрашивается: почему бы не сделать так, чтобы после каждого выполнения запроса проводилась «работа над ошибками»? Увидев, что на каком-то шаге имеется несоответствие между имеющейся статистикой и реальным положением дел, Оракл мог бы автоматически создавать некую дополнительную статистику, чтобы в следующий раз базироваться на более точных прогнозах.

Оно, конечно, не просто, но если подумать...

Profile

egorius: (Default)
egorius

July 2025

M T W T F S S
  12 3 4 5 6
7891011 12 13
1415 1617181920
21222324252627
28293031   

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 20th, 2025 08:02 am
Powered by Dreamwidth Studios