Главная > SQL > Сбор статистики


Сбор статистики

Для сбора статистики используем процедуру

dbms_stats.gather_table_stats('SCOTT','EMP');

Если в базе данных имеются таблицы, которые часто обновляются, то частый сбор статистики может негативно повлиять на производительность базы данных. Для того, чтоб исключить объекты из автоматического или любого другого сбора статистики можно «закрепить» ее статистику:

begin
  dbms_stats.gather_table_stats('SCOTT','EMP');
  dbms_stats.lock_table_stats('SCOTT','EMP');
end;

Теперь, по этой таблице невозможно будет собрать статистику ни автоматически, ни вручную:

SQL>exec dbms_stats.gather_table_stats('SCOTT','EMP');

begin dbms_stats.gather_table_stats('SCOTT','EMP'); end;
ORA-20005: object statistics are locked (stattype = ALL)
ORA-06512: at "SYS.DBMS_STATS", line 13182
ORA-06512: at "SYS.DBMS_STATS", line 13202
ORA-06512: at line 2

Снять блокировку статистики:

dbms_stats.unlock_table_stats('SCOTT','EMP');



Посмотреть данные о сборе статистики можно в таблице DBA_TAB_STATISTICS

select * from DBA_TAB_STATISTICS t where t.table_name = :name_table


Собрать статистику для индекса

begin
  dbms_stats.gather_index_stats('OWNER', 'INDEX_NAME');
end;

Статистика на секцию

begin
  dbms_stats.gather_table_stats(ownname => p_owner, tabname => p_table_name, partname => p_partition_name, degree=> 4, no_invalidate=>true );
end;

Похожие записи:

Categories: SQL Tags: ,
  1. 2 Февраль 2013 в 13:10 | #1

    Данное утверждение — «Если в базе данных имеются таблицы, которые часто обновляются, то частый сбор статистики может негативно повлиять на производительность базы данных.» — вообще говоря, неверно. Именно для таких таблиц важно поддерживать статистику в актуальном состоянии. Если, разумеется, запросы не используют RBO — что в современных версиях невозможно ввиду отсутствия RBO (вместо него начиная с 10g стоит заглушка).

    Блокировку сбора статистики целесообразно выполнять в приложениях типа OEBS — с большим (реально большим) количеством неизменных справочников. И при этом не стоит забывать про существующие в БД по умолчанию задания автоматического обновления статистики.

  1. Пока что нет уведомлений.