Oracle mechanics

15.05.2013

Новое в статистике

Filed under: Oracle,statistics — Игорь Усольцев @ 23:20
Tags: , ,

1. Выпуск патча Bug 13262857 Enh: provide some control over DBMS_STATS index clustering factor computation типа enhancement not a bug, допускающего более реалистичный (по описанию — «оптимистичный») метод расчёта Clustering Factor (CF) индекса, с учётом кэширования недавно прочитанных блоков таблицы

С описанием и тестами патча можно ознакомиться в блоге Richard Foote Important !! Clustering Factor Calculation Improvement (Fix You) и Clustering Factor Calculation Improvement Part II (Blocks On Blocks):

«Традиционно, CF вычисляется методом последовательного сравнения номеров блоков (получаемых из rowid) индексированных строк таблицы в процессе выполнения Full Index Scan. В случае если номер блока следующей в индексе строки отличается от номера блока предыдущей индексированной строки, CF увеличивается на 1. Если номер блока не изменился — CF не увеличивается…
Чем меньше значение CF, тем более эффективным (предпочтительным для оптимизатора) будет использование индекса, поскольку для упорядоченного доступа к данным таблицы (в процессе Index Scan) потребуется прочитать меньше блоков бд…»

Однако, при таком упрощённом расчёте не учитывается, что в буферном кэше уже могут находиться блоки таблицы в количестве большем, чем один последний блок, содержащий предыдущую индексированную запись

Проблема решается добавлением модифицируемого на уровнях таблицы / схемы / бд параметра TABLE_CACHED_BLOCKS в процедуры DBMS_STATS.SET_TABLE_PREFS, DBMS_STATS.SET_SCHEMA_PREFS, DBMS_STATS.SET_DATABASE_PREFS — предполагаемое количество предыдущих блоков таблицы, доступных в буферном кэше при индексном сканировании и учитываемое при расчёте CF, с диапазоном значений от 1 (по умолчанию) до 255, либо AUTO. Соответствующий патч 15830250 доступен для Oracle versions 11.1.0.7, 11.2.0.2 and 11.2.0.3

2. В комментариях к первому посту (которые очень стоит посмотреть / почитать) Тимур Ахмадеев указывает на важную особенность процедуры DBMS_STATS.SET_SCHEMA_PREFS, которая, начиная с 11.2.0.2, «… в действительности вызывает серию процедур SET_TABLE_PREFS для всех таблиц указанной схемы. При этом установка параметров статистики с использованием SET_SCHEMA_PREFS не влияет на новые объекты той же схемы, созданные после запуска SET_SCHEMA_PREFS, и все новые объекты будут использовать глобально установленные значения параметров статистики — GLOBAL_PREF» — After Setting DBMS_STATS.SET_SCHEMA_PREFS, GET_PREFS does not Return the Current Configuration Values [ID 1338709.1]

About these ads

Добавить комментарий »

Комментариев нет.

RSS-лента комментариев к этой записи. TrackBack URI

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

Theme: Rubric. Get a free blog at WordPress.com

Отслеживать

Get every new post delivered to your Inbox.

Join 133 other followers

%d такие блоггеры, как: