Home  |  Administration  |  SQL  |  Tuning  |  Miscellaneous  |

The Search For Intelligent Life in the Cost-Based Optimizer
by Tim Gorman

Предыдущая Оглавление Следующая

Корректировка для различных типов ввода/вывода

Но постойте! Это еще не все!

CBO также необходимо знать относительную стоимость индексного доступа по сравнению с FTS. Параметр OPTIMIZER_INDEX_COST_ADJ отражает это соотношение. Значение по умолчание 100 говорит CBO, что на индексный доступ затрачивается примерно столько же времени, что и на операции доступа при FTS. CBO использует значение данного параметра для учета еще одного усовершенствования в расчете стоимости индексного сканирования:

PREVIOUS-COST * (OPTIMIZER_INDEX_COST_ADJ / 100) = FINAL-COST

Как видно, значение по умолчанию приводит данную формулу к тривиальному виду также как и в случае со значением по умолчанию для параметра OPTIMIZER_INDEX_CACHING.

К счастью, адекватное значение для параметра OPTIMIZER_INDEX_COST_ADJ может быть легко получено из самой базы данных Oracle. Ответ находится в столбце AVERAGE_WAIT представления V$SYSTEM_EVENT. Это еще один пример бесценной установки параметра TIMED_STATISTICS в значение TRUE, что позволяет наполнять 'Session Wait' представления (одним из которых является V$SYSTEM_EVENT) хронометрической информацией.

После того как база была запущена и проработала достаточное время (пару часов или больше), выполните следующий запрос:

SELECT EVENT,
       AVERAGE_WAIT
FROM   V$SYSTEM_EVENT
WHERE  EVENT LIKE 'db file s%';

Запрос вернет информацию о двух событиях ожидания ввода/вывода: db file scattered reads (операции FTS) и db file sequential reads (операции индексного сканирования). Столбец AVERAGE_WAIT содержит среднее время ожидания в сотых долях секунды этих событий:

EVENT                     AVERAGE_WAITS
========================= ==============
db file sequential reads       .33178629
db file scattered reads         2.190087

В данном примере запросы ввода/вывода при индексном сканировании занимают в среднем только 15% среднего времени запросов ввода/вывода при операциях FTS. Поэтому параметр OPTIMIZER_INDEX_COST_ADJ должен быть установлен в значение 15.


Предыдущая Оглавление Следующая
Last Update: October 11, 2007 18:33:32