В настоящее время в моей БД мой предшественник, который работал над БД, создал задание, которое каждые выходные собирает список всех таблиц в БД и по отдельности для каждой таблицы выполняет ниже двух команд в таком порядке:
ANALYZE TABLE xxTable_Namexx ESTIMATE STATISTICS FOR ALL INDEXED COLUMNS SIZE 75 SAMPLE 100 PERCENT;
EXEC dbms_stats.gather_table_stats(xxSchemaxx,xxTable_Namexx,cascade=>TRUE);
Недавно кто-то предложил мне:
1.) Таблица ANALYZE - это старый метод сбора статистики, и оптимизатор больше его не использует? правда ли, что статистика из этой команды бесполезна во всей БД или она где-то используется?
2.) Вместо того, чтобы делать все это, достаточно ежедневного запуска:
dbms_stats.gather_schema_stats(xxSchemaxx,cascade=>true);
Каков размер / выборка%, если ничего не указано ??
3.) Какова общая практика / частота сбора статистики в базе данных. (Данные обновляются, вставляются, удаляются ежедневно). Я все еще предпочитаю делать это каждый уик-энд.
Заранее спасибо.