Вопрос относительно dbms_stats.gather_table_stats - PullRequest
1 голос
/ 19 июня 2011

У меня просто простой вопрос относительно dbms_stats.gather_table_stats.В нашем приложении это утверждение происходит сразу после создания индекса для таблицы.Это называется EXEC DBMS_STATS.GATHER_TABLE_STATS(< schemaname >, < tablename >).Мы используем Oracle 10.2g.Теперь вопрос, когда именно будет собираться информация?Будет ли он собираться при каждом обновлении таблицы или когда будут удовлетворены некоторые критерии?Или это то, что он будет собран только при повторном вызове collect_table_stats?

Ответы [ 2 ]

5 голосов
/ 19 июня 2011

Статистика собирается, когда пакет вызывается (и пакет не вернется, пока сбор не завершится).

Обычно существует автоматическое задание, которое будет собирать статистику, если существующая статистика ушла ' несвежий ».Таблицы, которые были выбраны для мониторинга, будут иметь некоторые дополнительные данные, записанные при вставках / удалениях / обновлениях (видимые через dba_tab_modification).

Когда 10% строк были изменены, статистика «устарела» и будет повторно собрана во время следующего автоматического задания.Проверьте DBA_JOBS, чтобы увидеть, если / когда ваша база данных настроена для сбора статистики по устаревшим таблицам (подсказка - избегайте делать это во время интенсивного использования).

2 голосов
/ 19 июня 2011

В дополнение к хорошему ответу Гэри запланированная задача GATHER_STATS_JOB, которая запускает статистику для баз данных 10g по умолчанию, по умолчанию настроена на выполнение в двух «группах окон обслуживания», а именно WEEKEND_WINDOW и WEEKNIGHT_WINDOW. Первый начинается в 00:00 субботы и длится 48 часов, второй начинается в 22:00 каждую неделю и длится 8 часов. Ваши задания статистики могут выполняться только в это время, если вы не измените расписание или окна. Эти окна могут или не могут быть хорошими в вашей среде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...