DBMS_STATS与analyze区别(总结自网络)
来源:互联网 发布:淘宝qb充值到账一半 编辑:程序博客网 时间:2024/06/10 02:17
【dbms_stats优点】
a)可以并行进行,对多个用户,多个Table
b)可以得到整个分区表的数据和单个分区的数据。
c)可以在不同级别上Compute Statistics:单个分区,子分区,全表,所有分区
d)可以倒出统计信息
e)可以用户自动收集统计信息
analyze分析统计信息的不准确some times,具体表现在对分区表的支持,不能得到准确的global statistics
【analyze优点】
最主要的2个功能validate structure和list chained rows目前和将来都不会被植入到DBMS_STATS包当中。
Analyze validate structure的主要语法包括:
@?/rdbms/admin/utlvalid.sql /*创建存放验证信息的表 */
desc invalid_rows
ANALYZE INDEX
[PARTITION ]
[SUBPARTITION ]
VALIDATE STRUCTURE CASCADE
INTO
select * from index_stats;
ANALYZE TABLE
[PARTITION ]
[SUBPARTITION ]
VALIDATE STRUCTURE CASCADE
[INTO ]
ANALYZE CLUSTER VALIDATE STRUCTURE CASCADE
INTO
补充:analyze index validate structure会填充index_stats视图,该视图包含了丰富的索引空间信息:
SQL> desc index_stats;
Name Null? Type
----------------------------------------- -------- ----------------------------
HEIGHT NUMBER
BLOCKS NUMBER
NAME VARCHAR2(30)
PARTITION_NAME VARCHAR2(30)
LF_ROWS NUMBER
LF_BLKS NUMBER
LF_ROWS_LEN NUMBER
LF_BLK_LEN NUMBER
BR_ROWS NUMBER
BR_BLKS NUMBER
BR_ROWS_LEN NUMBER
BR_BLK_LEN NUMBER
DEL_LF_ROWS NUMBER
DEL_LF_ROWS_LEN NUMBER
DISTINCT_KEYS NUMBER
MOST_REPEATED_KEY NUMBER
BTREE_SPACE NUMBER
USED_SPACE NUMBER
PCT_USED NUMBER
ROWS_PER_KEY NUMBER
BLKS_GETS_PER_ACCESS NUMBER
PRE_ROWS NUMBER
PRE_ROWS_LEN NUMBER
OPT_CMPR_COUNT NUMBER
OPT_CMPR_PCTSAVE NUMBER
但是请注意validate structure会锁住table/index/cluster等对象,对于在线业务可以考虑使用validate structure online在线验证方法,但是validate strucutreonline也有它的缺点,那就是在线模式下结构验证命令将不填充索引的状态信息到index_stats视图。
Analyze list chained rows的主要语法包括:
@?/rdbms/admin/utlchain.sql
desc chained_rows
ANALYZE TABLE LIST CHAINED ROWS
INTO ;
ANALYZE CLUSTER LIST CHAINED ROWS INTO ;
注意因为DBMS_STATS仅仅收集对CBO有用的统计信息,所以一些空间使用情况信息和使用FreeList管理的信息都不会被收集,这些信息包括:
If statistics unrelated to the cost based optimizer are required, then these
must still be collected using the the ANALYZE command. These statistics include:
Space Usage information :
EMPTY_BLOCKS,
AVG_SPACE,
CHAIN_CNT
Information on freelist blocks
AVG_SPACE_FREELIST_BLOCKS,
NUM_FREELIST_BLOCKS
因为以上信息对于CBO计算成本并没有帮助,所以DBMS_STATS也就无意也无法收集它们,但是Analyze命令还是可以做到收集以上这些信息。
此外因为CBO其实并不会参考Cluster类型对象的统计信息来计算Cost成本,而是使用cluster中各个表的统计信息(DBMS_STATS does not gather cluster statistics, but you can use DBMS_STATS to gather statistics on the individual tables instead of the whole cluster. )
所以DBMS_STATS也不支持收集Cluster的统计信息。
总结以上DBMS_STATS无法实现,而传统的Analyze命令可以做到的功能:
1. Analyze validate structure 验证表、簇、索引的结构的完整性,使用cascade选项可以交叉验证表和索引的数据完整,online选项可以做到在线验证
2. Analyze list chained rows 收集表、簇上的Migrated and Chained Rows链式或迁移行信息
3. Analyze table compute statistics 收集表上的 empty_blocks、avg_space空间使用信息
4. Analyze Cluster 收集簇的信息,其实cluster上唯一可统计的信息是DBA_CLUSTERS.AVG_BLOCKS_PER_KEY(Number of blocks in the table divided by number of cluster keys) ,所以收集cluster的statistics意义不大
附Analyze命令的详细语法如下:
Syntax:
ANALYZE TABLE tablename COMPUTE|ESTIMATE|DELETE STATISTICS ptnOption options
ANALYZE INDEX indexname COMPUTE|ESTIMATE|DELETE STATISTICS ptnOption options
ANALYZE CLUSTER clustername COMPUTE|ESTIMATE|DELETE STATISTICS options
ptnOption
PARTITION (partion)
SUBPARTITION (subpartition)
options
VALIDATE STRUCTURE [CASCADE] [INTO tablename]
LIST CHAINED ROWS [INTO tablename]
COMPUTE|ESTIMATE STATISTICS FOR TABLE
COMPUTE|ESTIMATE STATISTICS FOR ALL COLUMNS
COMPUTE|ESTIMATE STATISTICS FOR ALL INDEXED COLUMNS
COMPUTE|ESTIMATE STATISTICS FOR COLUMNS [SIZE int] column [SIZE int]
When Estimating statistics you can optionally
specify
... ESTIMATE STATISTICS SAMPLE n ROWS
... ESTIMATE STATISTICS SAMPLE n PERCENT
- DBMS_STATS与analyze区别(总结自网络)
- DBMS_STATS与analyze区别
- dbms_stats.gather_table_stats与analyze table 的区别
- Analyze语句与Dbms_stats包的区别
- dbms_stats.gather_table_stats与analyze table 的区别
- Analyze语句与Dbms_stats包的区别
- dbms_stats.gather_table_stats与analyze table 的区别
- dbms_stats与analyze
- dbms_stats.gather_table_stats与analyze table 的区别[转贴]
- dbms_stats.gather_table_stats与analyze table 的区别[转贴]
- dbms_stats.gather_table_stats与analyze table 的区别[转贴]
- Analyze 和dbms_stats.gather_table_stats区别
- ORALCE DBMS_STATS与ANALYZE介绍
- AUTOTRACE与EXPLAIN PLAN,ANALYZE与DBMS_STATS
- Oracle DBMS_STATS 包 和 Analyze 命令的区别
- DBMS_STATS.GATHER_TABLE_STATS 和 analyze
- Analyze Statement and dbms_stats
- dbms_stats和analyze汇总
- C程序怎样组织更有结构性
- uploadify 3.2结合struts2的使用详解
- Android MediaPlayer基本使用方式
- IIS 7.0下 安装SQL SERVER 2005 报错ASP.Net Version Registration Requirement (Warning)
- 高质量C++编程_C++/C试题
- DBMS_STATS与analyze区别(总结自网络)
- autotrace 安装
- android的color值
- nginx 正则表达式匹配入门篇
- ubuntu下搭建android环境成功后eclipse工具栏中没有出现小机器人图标处理方法
- asp.net转到另一个页面并且传递参数
- 属性设置的技巧-----按位或和按位与的使用
- 经典的OGRE机器人的例子(通过例子总结,包含四元数和动画等用法)
- java3d相关资源的链接汇总