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

Статистика по таблицам

Данные по статистике таблиц можно посмотреть в словаре USER_TABLES. Основная статистика -

  • количество строк

  • количество блоков

  • количество пустых блоков

  • среднее доступное свободное пространство

  • количество мигрировавших строк

  • средняя длина строки

Пример:

select * from user_tables where table_name = 'T';

analyze table t delete statistics;

select num_rows, blocks, empty_blocks, avg_space,

chain_cnt, avg_row_len, avg_space_freelist_blocks,

num_freelist_blocks, sample_size, last_analyzed from user_tables

where table_name = 'T';

analyze table t compute statistics for table;

select num_rows, blocks, empty_blocks, avg_space,

chain_cnt, avg_row_len, avg_space_freelist_blocks,

num_freelist_blocks, sample_size, last_analyzed from user_tables

where table_name = 'T';

Статистика по индексам

Статистику по индексам можно посмотреть в словаре USER_INDEXES. Основная статистика -

  • глубина индекса

  • кол-во листовых блоков

  • кол-во различн. ключей

  • средн. кол-во лист. блоков на ключ

  • средн. кол-во блоков данных на ключ

  • кол-во узлов индекса

  • фактор кластеризации (кол-во блоков, которое надо выбрать для выборки всех строк из таблицы по индексу)

Пример:

analyze table t delete statistics;

select blevel, leaf_blocks, distinct_keys,

avg_leaf_blocks_per_key, avg_data_blocks_per_key,

clustering_factor, num_rows, sample_size,

last_analyzed from user_indexes

where table_name = 'T' and index_name = 'T_I';

analyze table t compute statistics for all indexes;

select blevel, leaf_blocks, distinct_keys,

avg_leaf_blocks_per_key, avg_data_blocks_per_key,

clustering_factor, num_rows, sample_size,

last_analyzed from user_indexes

where table_name = 'T' and index_name = 'T_I';

Статистика по столбцам

Статистику по столбцам можно посмотреть в словаре USER_TAB_COLUMNS, USER_TAB_COL_STATISTICS. Статистика -

  • кол-во различн. значений

  • мин значение

  • макс значение

  • кол-во null

Пример:

select * from user_tab_columns where table_name =

'T' and column_name = 'I';

select * from user_tab_col_statistics where table_name =

'T' and column_name = 'I';

analyze table t delete statistics;

select * from user_tab_col_statistics where table_name =

'T' and column_name = 'I';

analyze table t compute statistics for all columns;

select * from user_tab_col_statistics where table_name =

'T' and column_name = 'I';

Данная статистика не содержит одну очень важную информацию - распределение значений по диапазонам. Для хранения этой информации используются гистограммы. Существует два типа гистограмм - частотные гистограммы и сбалансированные повысоте. Максимальное количество брикетов в гистограмме - 254. Если количество различных значений в столбце меньше указанного размера гистограммы, то строятся частотная гистограмма. В противном случае - сбалансированная по высоте.

Сбалансированные по высоте гистограммы содержат одинаковое количество строк в каждом брикете гистограммы. Значениеячейки соответствует максимальному значению столбца в группе. Частотные гистограммы содержат столько брикетов, сколько есть различных значений в столбце. Значение ячейки содержит количество строк со значениями столбца, меньше либо равными данному.

Пример:

analyze table t compute statistics for columns s size 254;

select endpoint_number, endpoint_value,

substr(endpoint_actual_value, 1, 30)

from user_tab_histograms where table_name =

'T' and column_name = 'S';

analyze table t compute statistics for columns s size 8;

select endpoint_number, endpoint_value,

substr(endpoint_actual_value, 1, 30)

from user_tab_histograms where table_name =

'T' and column_name = 'S';

analyze table t compute statistics for columns s size 254;

select endpoint_number, endpoint_value,

substr(endpoint_actual_value, 1, 30)

from user_tab_histograms where table_name =

'T' and column_name = 'S';

select s, count(*) from t group by s;

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