欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Oracle 工具:Analyze

程序员文章站 2022-03-14 13:13:02
...

Oracle 工具:Analyze,Oracle推荐使用DBMS_STATS包来代替analyze搜集优化信息,DBMS_STATS可以并行的搜集信息,可以搜集分区表的

㈠ 三大功能

① 搜集和删除索引、表和簇的统计信息

② 验证表、索引和簇的结构

③ 鉴定表和簇和行迁移和行链接

针对analyze的搜集和删除统计信息功能而言

Oracle推荐使用DBMS_STATS包来代替analyze搜集优化信息

DBMS_STATS可以并行的搜集信息,可以搜集分区表的全局信息

进一步来说,,CBO只会使用DBMS_STATS包所统计出来的信息

㈡ 先决条件

① 在自己的方案中

② 或有analyze any system 的权限

㈢ 语法

ANALYZE
{ TABLE [ schema.]table
[ PARTITION ( partition ) | SUBPARTITION ( subpartition ) ]
| INDEX [ schema. ]index
[ PARTITION ( partition ) | SUBPARTITION ( subpartition ) ]
| CLUSTER [ schema. ]cluster
}

{ COMPUTE [ SYSTEM ] STATISTICS [for_clause]
| ESTIMATE [ SYSTEM ] STATISTICS [for_clause][SAMPLE integer { ROWS | PERCENT }]
| validation_clauses
| LIST CHAINED ROWS [ into_clause ]
| DELETE [ SYSTEM ] STATISTICS
} ;
注释:

① INDEX index:对索引进行分析,分析的结果会放在USER_INDEXES, ALL_INDEXES,或 DBA_INDEXES中

② TABLE table:对表进行分析,分析的结果会放在USER_TABLES, ALL_TABLES, and DBA_TABLES表中

分析表的限制:

不可以分析数据字典表

不可以分析扩展表,但可以用DBMS_STATS来实现这个目的

不可以分析临时表

不可以计算或估计下列字段类型:

REFs, varrays, nested tables, LOBs , LONGs, or object types

③ CLUSTER cluster:对簇进行分析,分析的结果会放在ALL_CLUSTERS, USER_CLUSTERS and DBA_CLUSTERS

④ compute_statistics_clause

语法:COMPUTE [ SYSTEM ] STATISTICS [for_clause]

对分析对象进行精确的统计,然后把信息存储的数据字典中。可以选择对表或对字段进行分析

computed和estimated这两种方式的统计数据都被优化器用来影响sql的执行计划

如果指定system选项就只统计系统产生的信息

for_clause:

FOR TABLE:只统计表

FOR COLUMNS:只统计某个字段

FOR ALL COLUMNS:统计所有字段

FOR ALL INDEXED COLUMNS:统计索引的所有字段

⑤ ESTIMATE [ SYSTEM ] STATISTICS [for_clause][SAMPLE integer { ROWS | PERCENT }]

只是对部分行做一个大概的统计。适用于大表

SAMPLE:指定具体统计多少行,如果忽略这个参数的话,oracle会默认为1064行

ROWS causes:行数 Oracle to sample integer rows of the table or cluster or integer entries from the index. The integer must be at least 1.

PERCENT causes:百分数

⑥ validation_clauses

分析REF或是对像的结构

例如:

ANALYZE TABLE employees VALIDATE STRUCTURE CASCADE;

ANALYZE TABLE customers VALIDATE REF UPDATE;

通常用于物理和逻辑的一致性检查

Oracle 工具:Analyze