Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РСБДтЗ / Курс лекций РСБДиЗ.doc
Скачиваний:
135
Добавлен:
05.03.2016
Размер:
1.63 Mб
Скачать

Статистика. Назначение, способы формирования

Отсутствие статистики оптимизатора или устаревшие статистические данные часто являются причиной неоптимальнойпроизводительности обработки запросов. Оптимизатор, работающий на основе стоимости, использует для определения стоимости пути доступа такую статистику, как число элементов ( cardinality ) таблицы, число возможных значений столбца и распределение данных. Стоимость является мерой того, сколько памяти, ресурсов процессора и каналов ввода-выводапотребуется для выполнения запроса. Чтобы эффективно использовать оптимизатор, работающий на основе стоимости, нужно собрать статистику числа элементов ( cardinality ) и распределения данных для каждой таблицы, индекса и материализованного представления. Статистика собирается с помощью пакета DBMS_STATS. Статистические данные можно собирать либо путем чтения всех строк, либо путем проведения оценки на основе чтения только небольшой выборки строк или блоков. В пакете DBMS_STATS предлагаются процедуры для сбора статистики уровня базы данных, схемы или таблицы, а также раздела таблицы.

Сбор статистики с помощью analyze

analyze table t compute statistics for

table for all indexes for all columns;

analyze table t compute statistics for table for

all indexes for all indexed columns;

analyze table t compute statistics for table for

columns i, s;

analyze index t_i compute statistics for table for

all indexes for all columns;

analyze table t estimate statistics for table for

all indexes for all columns sample 10 rows;

analyze table t estimate statistics for table for

all indexes for all columns sample 10 percent;

analyze table t compute statistics for table for

all indexes for all columns size 100;

analyze table t compute statistics for table for

columns i size 100, s size 200;

Сбор статистики с помощью пакета dbms_stats

execute dbms_stats.gather_index_stats(ownname=>'stud',

indname=>'i', partname=>null, estimate_percent=>50, stattab=>null, statid=>null, statown=>null);

execute dbms_stats.gather_table_stats(ownname=>'stud',

tabname=>'t', partname=>null, estimate_percent=>50, block_sample=>false,

method_opt=>'FOR ALL COLUMNS', degree=>null,

cascade=>true, stattab=>null, statid=>null, statown=>null);

execute dbms_stats.gather_table_stats(ownname=>'stud',

tabname=>'t', partname=>null, estimate_percent=>50, block_sample=>false,

method_opt=>'FOR COLUMNS object_name, object_id',

degree=>null, cascade=>true, stattab=>null,

statid=>null, statown=>null);

execute dbms_stats.gather_schema_stats(ownname=>'stud',

estimate_percent=>50, block_sample=>false, method_opt=>'FOR ALL COLUMNS',

degree=>null, cascade=>true, stattab=>null, statid=>null, statown=>null);

execute dbms_stats.delete_index_stats(ownname=>'stud',

indname=>'i', partname=>null, stattab=>null, statid=>null, statown=>null);

execute dbms_stats.delete_table_stats(ownname=>'stud',

tabname=>'t', partname=>null, stattab=>null, statid=>null,

statown=>null, cascade_parts=>true, cascade_columns=>true);

execute dbms_stats.delete_schema_stats(ownname=>'stud', stattab=>null,

statid=>null, statown=>null);

Листинг 12.1. (html, txt)

Соседние файлы в папке РСБДтЗ