Сбор Статистики Оптимизатора Вручную

Рубрика: Обслуживание базы данных

Сбор Статистики Оптимизатора Вручную

Возможно, Вам потребуется собрать статистику вручную в тот или иной раз, например когда содержание таблицы изменилось между автоматическими заданиями сбора так, что статистические данные больше не представляют таблицу точно. Это характерно для больших таблиц, которые испытывают изменений больше чем 10 процентов от их размера в 24-часовой период.

Совет из передовой практики: Собирайте статистические данные достаточно часто, чтобы таблицы никогда не измелись более чем на 10 процентов (приблизительно) между периодами сбора статистики. Это может потребовать ручного сбора статистики или дополнительных окон обслуживания.

Статистические данные могут быть вручную собраны или при использовании Enterprise Manager, или с помощью пакета DBMS_STATS. Системная статистика может быть собрана только при использовании пакета DBMS_STATS. Системные статистические данные описывают аппаратные характеристики системы, такие как ввод-вывод, производительность ЦП и использование, для оптимизатора запросов.

Выбор пункта меню Gather Optimizer Statistics запускает мастер, который позволяет Вам выбрать контекст, объекты, опции и расписание для задания, которое соберет статистику оптимизатора. Мастер запускает задание DBMS_STATS.GATHER_ * _ в контексте, который Вы определяете: таблица, схема или база данных. В этом мастере Вы устанавливаете предпочтения значений по умолчанию, используемых пакетом DBMS_STATS, и Вы указываете расписание, чтобы запустить задание в определенное время.

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

Можно также собрать статистику оптимизатора, используя пакет DBMS_STATS непосредственно:

    SQL> EXEC dbms_stats.gather_table_stats('HR','EMPLOYEES');
SQL> SELECT num_rows FROM dba_tables
2 WHERE owner='HR' AND table_name = 'EMPLOYEES';
NUM_ROWS
----------
214

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

Системные статистические данные не изменяются, если рабочая нагрузка не изменяется значительно. В результате системные статистические данные не нуждаются в частой корректировке. Процедура DBMS_STATS.GATHER_SYSTEM_STATS соберет системные статистические данные за указанный период, или можно запустить сбор системной статистики и выполнить другой вызов, чтобы прекратить сбор.

Подсказка из передовой практики: Используйте следующую команду, когда Вы создаете базу данных:

    

SQL> EXEC dbms_stats.gather_system_stats('NOWORKLOAD');

Опция NOWORKLOAD занимает несколько минут (в зависимости от размера базы данных) и получает оценки характеристик ввода-вывода, такие как среднее время поиска чтения и скорость передачи ввода-вывода.

Далее: Просмотр детальной информации по конкретной категории ожидания. Страница производительности: Пропускная способность. Контроль производительности: Наиболее Активные Сеансы

Смотрите также
Комментарии
qqq
www
Николай
22222222222
awdawdqws
wfqwefqwefqwefqwefqwefqwefqwefqwe qwefqwefqwefqwefq
Написать

(обязательно)

(обязательно)

Это не спам (обязательно)