В данной статье мы постараемся собрать ответы на вопросы по поводу сбора статистики. На данный момент рассмотрено три вопроса: 1. Как правильно собрать статистику? 2. Зачем это нужно? 3. Почему нужно использовать CBO?
1. Как правильно собрать статистику?
Для того, чтобы собрать статистику совершенно не обязательно пользоваться инструментом, предоставляемым модулем "Администратор". Достаточно запустить неименнованный блок, представленный ниже:
begin dbms_stats.gather_schema_stats (ownname => 'PARUS',cascade => TRUE); end;
Но будьте внимательны: если в Вашей базе используется оптимизатор по правилам (RBO), то сбор статистики не окажет никакого влияния на производительность СУБД.
2. Зачем это нужно?
Начиная с 7-й версии Oracle появился стоимостной оптимизатор (CBO). Объясним на примере, как он работает. Допустим Вы написали какой-либо запрос и запустили его на выполнение. Oracle строит большое количество планов выполнения данного запроса и на основе собранной статистики по таблицам и индексам используемым в Вашем запросе для каждого плана вычисляем так называемый cost. Соотвественно для выполнения запроса выбирается план с наименьшим cost-ом. А чтобы cost вычислялся правильно, нужно достаточно регулярно собирать статистику. Насколько регулярно, каждый DBA должен решать сам, в зависимости от того как часто меняются данные в базе.
3. Почему нужно использовать CBO?
По нашему мнению это правильное решение, потому что следующих версиях RBO будет отсутствовать. Как заявляет Oracle в версии 10g RBO нет вообще. В результате при переходе на данную версию производительность Вашей СУБД не измениться.
|