Говорят, что время - лучший учитель. Именно так и случилось со стоимостным оптимизатором. Ему понадобилось почти семь лет, чтобы научиться справляться с реальными задачами. Процессу взросления помогло включение в состав семейства Oracle СУБД Rdb
в
1996-1997 гг. Не забудьте, что оптимизаторRdb прошел многолетнюю школу исследований и практической работы и с годами стал напоминать мягкий и выдержанный вкус вина Каберне из долины На-па Вэлли. Опыт, мудрость и мужественность, принесенные оптимизатором Rdb
в
стоимостный оптимизатор Oracle, были просто невероятны, так что в Oracle 7.3 стоимостный оптимизатор Oracle начал новую жизнь. Это был практически совершенно новый продукт. Как будто в одну прекрасную ночь оптимизатор преобразился в невероятного сказочного красавца, умеющего выполнять множество функций оптимизации. Это была сказочная метаморфоза.Стоимостный оптимизатор взрослеет
С Oracle 7.3 началась поддержка возможности генерировать и хранить в ви-
де столбцов гистограммы (статистические функции, обеспечивавшие дискрети-
зацию и хранение распределений Это стало новым шагом в развитии
стоимостного оптимизатора, так как теперь появилась возможность на основа-
нии хранящихся гистограмм точно определять распределение данных для
бого столбца. Конечно же, выяснилось, что равномерное распределение
данных не более чем красивая сказка.
де столбцов гистограммы (статистические функции, обеспечивавшие дискрети-
зацию и хранение распределений Это стало новым шагом в развитии
стоимостного оптимизатора, так как теперь появилась возможность на основа-
нии хранящихся гистограмм точно определять распределение данных для
бого столбца. Конечно же, выяснилось, что равномерное распределение
данных не более чем красивая сказка.
Замечание
Применение гистограмм имеет смысл только для тех операторов SQL, где используются жестко закодированные значения, а не переменные связи. Новый взгляд на эту возможность появился в Oracle 8.1.6, где впервые появился и стал обязательным napaMeTpCURSORSHARING. Если в Oracle8i он установлен на FORCE, гистограммы не используются.
Начиная с этого момента функциональные возможности стоимостного оптимизатора стали расширяться. С каждым новым выпуском добавлялись новые. Появилась возможность работать с секционированием, параллельными операторами DML, индексными таблицами и т. д. Теперь стоимостный оптимизатор был готов к испытанию реальным миром. По сведениям из неназванных источников, в ближайшем будущем можно ожидать полного "выхода в отставку" оптимизатора, основанного на системе правил. (Слухи об этом ходят давно, но теперь этот день уже недалек.)
Установки параметров инициализации для использования оптимизатора Oracle
Параметр, который определяет выбор экземпляром Oracle одного из двух
режимов оптимизации - стоимостного или по системе правил, называется OPTIMIZERMODE. Значением по умолчанию этого параметра (если оно не указано в init.ora) является CHOOSE, что означает выбор стоимостного опти-. мизатора. При установке значения RULE пользователь выбирает оптимизацию
по системе правил. Возможны еще два значения этого параметра - .\LL_ROWS и FIRSTROWS, но мы настоятельно рекомендуем никогда не использовать эти значения в файле инициализации, поскольку они могут быть неприменимы к некоторым из ваших приложений.
Если необходимо воспользоваться функциональными возможностями
FIRST ROWS или ALL ROWS, можно воспользоваться установкой параметра
OPTIMIZER_MODE для сеанса или даже использовать подсказку на
FIRST ROWS или ALL ROWS, можно воспользоваться установкой параметра
OPTIMIZER_MODE для сеанса или даже использовать подсказку на
уровне оператора. Сначала мы покажем, как изменить значение OPTIMIZERMODE для сеанса:
ui SQbPiuS' Release 8.1.5.0.0 - Production on Fri 3 16:04:31 2000 (c) Copyright 1999 Oracle Corporation. All rights reserved. Connected to:
0racle8i Enterprise Edition Release 8.1.5.0.0 - Production
With the Partitioning and Java options
PL/SOL Release 8.1.5.0.0 - Production
SQL> alter session set 0PTIMIZER_M0DE=FIRST_R0WS /* Modifying 0PTIMIZER_M0DE just for this session */; Session altered.
< Предыдущая | Следующая > |
---|