Приведенные ниже примеры иллюстрируют различные методы вычисления
статистики объектов:
analyze table lime items
compute statistics /* This calculation computes full statistics for the LINE_ITEMS table and all of its indexes */;
или
analyze table compute statistics
for
all indexed columns size 254 /* This calculation computes histograms for all columns of all indexes on the LINE_ITEMS table.The Size 254 is for the number of buckets utilized during the calculation
of the distribution of data */;
или
analyze table LINEJTEMS estimate statistics
sample size 20 percent /* This calculation estimates statistics for the LINE_ITEMS table and all of its indexes using a sample size of 20 percent of the number of rows in the table */;
Замечание
Команда analyze имеет также опцию для анализа конкретного секционирования секционированных таблиц или индексов.
Процедура analyze.jschema в пакете DBMSJU7TIJTY позволяет вычислить статистику для всей схемы в целом. В приведенном ниже примере вычисляется статистика для схемы BENCHMARK с опцией estimate, причем для всех объектов используется размер выборки 20%. Символ \ в конце первой строки приведенного образца кода является просто символом продолжения:
SOL .Plus; Release 8.1.5.0.0 - Production on Fri Nov 3 16:07:33 2000 (c) Copyright 1999 Oracle Corporation. All rights reserved.
Connected to:
0racle8i Enterprise Edition Release 8.1.5.0.0 - Production
With the Partitioning and Java options
PL/SQL Release 8.1.5.0.0 - Production
SQL> execute dbms_utility.analyze_schema('BENCHMARK' ,\
'estimate', estimate_percent=>20);
- PL/SQL procedure successfully completed,
Новый пакет статистики объектов DBMSSTATS, входящий в состав Oracle8i,
позволяет вычислять статистику с различными опциями. Далее представлен
пример как следует оценивать статистику только для таблиц, входящих в
позволяет вычислять статистику с различными опциями. Далее представлен
пример как следует оценивать статистику только для таблиц, входящих в
схему BENCHMARK, с размером выборки 20% и принимаемой для таблиц по
умолчанию степенью параллелизма. Эта команда не вычисляет статистику для индексов, поскольку каскадный аргумент для процедуры
tics по умолчанию имеет значение false. Если присвоить этому параметру значение true, можно одновременно с вычислением статистики для таблиц вычислять ее и для всех связанных с таблицей индексов. Однако следует отметить, что в случае параллельного вычисления индексов для таблиц и индексов, задание любой степени параллелизма при сборе статистики для таблиц не оказывает влияния на те же действия для индексов. В том случае, если и индексы анализировать параллельно, мы рекомендуем для обеспечения этого выдать независимую(ые) команду(ы) gather_index_stats. При окончательном анализе следует убедиться, что вычислена статистика для всех индексов, чтобы
не оказаться с частичной статистикой для своей базы данных.
SQL.Plus: Release 8.1.5.0.0. - Production on Fri Nov 3 16:08:12 2000
(с) Copyright 1999 Oracle Corporation, All rights reserved. Connected to:
0racle8i Enterprise Edition Release 8.1.5.0.0 - Production
With the Partitioning and Java options
PL/SQL Release 8.1.5.0.0 - Production
SQL> execute dbms_stats.gather_schema_statistics('BENCHMARK' ,\
20, estimate_percent=>20);
PL/SQL procedure successfully completed.
Процедура gather_schema_statistics производит два действия.
Сначала она выполняет операцию export_schema_stats, а затем собирает статистику для схемы. Знать это полезно и важно, так как усилия по реализации новой статистики могут иногда (по неизвестным причинам) вызвать внезапное снижение производительности системы, и на такой случай необходимо иметь план отступления. Частью этого плана должно стать выполнение команды import_schema_stats^fl замены новой статистики на старую. (Зледуеттакже отметить, что команда export_schema_stats облегчает импорт статистики в другие базы данных с использованием команды import_schema_stats. Это имеет значение при создании тестовых сред, которые (по крайней мере, с точки зрения статистики) эквивалентны промышленным. Такая возможность также бывает полезна, если в целевой базе данных нельзя позволить выполнение команд gather_schema_stats или gather_database_stats.
В приведенном ниже сценарии, в котором SQL генерирует SQL, строится новый сценарий автоматического выполнения команды analyze для схемы BENCHMARK и всех таблиц, имя которых начинается с буквы А. Предполагается, что этот сценарий будет выполняться пользователем SYS из SQL*Plus. Такой сценарий разумно использовать, если версия вашей базы данных не OracleSi и требуется вычислить статистику для конкретных объектов в схеме, причем список объектов является динамическим.
Следующая > |
---|