基于成本的优化器(前10g)收集统计_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4261 | 回复: 0   主题: 基于成本的优化器(前10g)收集统计        下一篇 
yangshuang
注册用户
等级:下士
经验:169
发帖:16
精华:0
注册:2012-4-9
状态:离线
发送短消息息给yangshuang 加好友    发送短消息息给yangshuang 发消息
发表于: IP:您无权察看 2012-4-9 16:07:06 | [全部帖] [楼主帖] 楼主

基于成本的优化器(前10g)收集统计

适用于:

Oracle服务器-企业版-版本:8.0.3.0到9.2.0.8-版本:8.0.3至9.2

目的:

统计信息收集成本的优化器为数据库管理员提供可用的方法

问答:

收集统计信息

看到更高版本的建议:

注:1226841.1如何:基于成本的优化器收集统计


基于成本的优化方法是用统计信息来估计每个执行计划的成本。你应该随着时间的推移定期收集统计信息,从而适应陈旧的对象数据卷或列值的变化。

有关收集新的统计信息,请参阅

注:44961.1收集统计数据的频率和战略方针


有2种方式收集模式对象的统计信息:

1.  使用DBMS_STATS(Oracle 8.1.5和更高版本)

1.1   GATHER_DATABASE_STATS数据库中的所有对象的统计

1.2   GATHER_SCHEMA_STATS架构中的所有对象的统计

1.3   GATHER_TABLE_STATS表,列和索引的统计信息

1.4   GATHER_INDEX_STATS指数统计

2.  分析或PL/SQL包递归ANANYZE语句(旧时尚)

2.1 ANALYZE命令

2.2 DBMS_UTILITY

2.3 DBMS_DDL

DBMS_STATS有新的改进,但没有分析。

****************************************
1.DBMS_STATS包(8.1.5和更高版本)
****************************************

- Oracle公司强烈建议您使用DBMS_STATS包而不是分析收集优化统计。

- DBMS_STATS包收集统计指标,表,列,分区,以及架构中的所有模式对象的统计资料或数据库。

- 不收集群集统计,但可以使用DBMS_STATS来收集统计数据而不是整个集群上的单个表。

- 统计数据收集操作,可以运行串行或并行。尽可能使用DBMS_STATS调用并行查询来收集统计信息指定的并行度;否则,它调用串行查询或ANALYZE语句。

o例如,8.1.x使用DBMS_STATS使用递归分析,收集统计

     - 所有索引统计

     - 所有的直方图

o例如,至9.2.x使用DBMS_STATS使用递归分析,收集统计

     *簇索引

     *域索引

     *连接索引

- 默认情况下使用DBMS_STATS将生成的表的统计,而不是它的索引(默认为CASCADE=>假)。

- 全球统计 注:236935.1

o用于分区表和索引,可以收集单独使用DBMS_STATS每个分区的统计信息以及整个全球的统计表或索引。

o同样的,复合分区使用DBMS_STATS可以收集单独子分区,分区和整个表或索引的统计资料。

o根据被优化的SQL语句,优化器可能选择使用分区(或子分区)统计或全球统计数字。除非在查询谓词缩小查询到一个单一的分区,优化器使用的全球统计数据。因为大多数查询可能不会是这样的限制,最重要的是要有准确的全球统计。

o因此,实际上强烈建议使用DBMS_STATS包收集的全球统计数据,而不是计算它们与分析语句。

- 它可以收集统计监测时,只对“过时”的对象启用。见:注:102334.1

- 在9i以上,它可以做

o自动确定适当的样本大小估计的统计;

o只有在柱创造直方图他们是有用的。

1.1 DBMS_STATS.GATHER_DATABASE_STATS

====================================
可以收集所有的表和索引数据库中的统计。

一些参数-GATHER_DATABASE_STATS过程:

- estimate_percent


o空意味着计算

o有效范围是[0.000001,100]。

o DBMS_STATS.AUTO_SAMPLE_SIZE因此Oracle决定了良好的统计样本大小(推荐值9i及以上)。

- block_sample


     o 只有相关时,做一个估计数字。

     o 使用或不随机块抽样,而不是随机行抽样。

     o随机块抽样更有效率,但如果数据不是随机分布在磁盘上,可能会有些相关的样本值。

- method_opt
oDEFAULT(10g之前的‘所有列的大小为1’,10g开始的‘所有列大小自动’)


     o FOR ALL[索引|隐藏][size_clause]列

     . INDEXED可以被用来当谓词列索引;

     . HIDDEN基于函数的索引中的列;

     . ALL当列出现在谓词里;

     o FOR COLUMNS[长度子句]列|属性[长度子句][,列|属性[长度子句]…];

     o size_clause:=尺寸{ integer | REPEAT | AUTO | SKEWONLY }

     . integer 直方图桶数目。有效范围[1,254];

     . REPEAT 仅收集已经有直方图(9i以上)列的直方图;

     . AUTO Oracle决定收集数据分布和列(9i以上)的工作量的基础上的列的直方图;

     . SKEWONLY Oracle决定在列的数据(9i以上)分布的基础上收集直方图。

     o 注:252361.1使用DBMS_STATS总是设置AVG_ROW_LEN=100或留下的旧值;

- degree


     o 并行度;

      o NULL表示使用表的默认值;

     o DBMS_STATS.DEFAULT_DEGREE指基于初始化参数(9i以上)的价值;

- granularity


     o Only:如果表中的相关分区;

     o DEFAULT:收集全球和分区级的统计;

     o GLOBAL:收集全球统计;

     o PARTITION:收集分区级的统计;

     o SUBPARTITION:收集子分区级的统计;

     o ALL:收集所有(子分区,分区和全球)的统计;

     o Analyze:表不更换统计; 

     o Global:统计数据-使用DBMS_STATS与分析

-         cascade


     o Default(CASCADE=>FALSE).无收集索引;

     o 集上的统计指标(真);

     o 索引统计信息的收集不是并行化到9iR2之前;

     o 等效gather_index_stats程序相当于每个指标在数据库中除了收集表和列的统计数字;

     o 注:159374.1 DBMS_STATS.GATHER_SCHEMA_STATS不分析指标;

- options


     o GATHER:默认.集的所有对象的统计信息;

     o GRTHER AUTO:自动收集所有必要的统计。Oracle含蓄地确定哪些对象需要新的统计数据,并确定如何收集这些统计数据(9i以上);

     o GATHER STALE:集所确定的陈旧的对象统计寻找* _tab_modifications意见;

     o GATHER EMPTY:集目前没有统计对象的统计信息;

     o 注:102334.1 如何自动更改基于统计信息收集-监测表;

     o 注:228186.1 GATHER STALE和GATHER AUTO间的区别;

- gather_sys


     o 集“SYS”用户(TRUE)所拥有的对象的统计;

1.2 DMBS_STATS.GATHER SCHEMA_STATS

==================================

可以收集所有架构中的表和索引的统计数据;

聚集SCHEMA_STATS程序-某些参数-:

     o ownname=>架构分析(NULL表示当前模式);

     o 请见GATHER_DATABASE_STATS除了GATHER_SYS;

1.3 DBMS_STATS.GATHER_TABLE_STATS

==================================

可收集表及其索引的统计信息。

-一些参数-GATHER_TABLE-STATS过程:

     o ownname=>架构分析(NULL表示当前模式);

     o tabname=>表名称;

     o partname=>分区的名称;

     o 请见DBMS_STATS.GATHER SCHEMA_STATS;

1.4 DBMS_STATS.GATHER_INDEX_STATS

==================================

可以聚集索引的统计信息。

-一些参数-GATHER_INDEX_STATS过程:

     o ownname=>架构分析(NULL表示当前模式);

     o indname=>索引的名称;

     o partname=>分区的名称;

     o 请见DBMS_STATS.GATHER SCHEMA_STATS;

注:237293.1如何从分析使用DBMS_STATS-

***********
2. ANALYZE
***********
===================


2.1 ANALYZE 命令
===================

- 旧时尚;

- Oracle公司强烈建议您使用DBMS_STATS包而不是分析收集优化统计。

- ANALYZE命令收集统计数据以串行方式。

- 它可以用来估计或计算统计。

- 如果指定没有样本大小分析表估计的统计,Oracle将只收集基于1064行的统计数据。使用ANALYZE命令时,你应该总是指定一个样本的大小,使默认情况下不会发生。(即分析表测试估计统计样本量的20%;)。

- 计算统计选项将保证,优化最好的统计资料显示,以确定一个给定查询的执行路径。(即分析表测试计算统计;)。

- 分析只收集分区级别统计,并派生出整个聚合表级别的统计信息。

- 默认情况分析表命令将生成的表的统计和所有的索引,不使用FOR子句。

========================
2.2 DBMS_UTILITY包
========================

DBMS_UTILITY包提供2程序,以协助收集统计数字。它生成分析针对不同对象的命令。

2.2.1. ANALYZE_SCHEMA 
=====================

集架构中的所有表,簇和索引的统计信息。

ANALYZE_SCHEMA程序接受5个参数:

- schema=>模式来进行分析;

- method=>估计,计算或删除。如果估计,然后.estimate_rows或.estimate_percent必须是非零。

- estimate_rows=>估计的行数。

- estimate_percent=>行估计的百分比。如果estimate_rows指定,那么这个参数将被忽略。

- method_opt=>[FOR TABLE][FOR ALL[INDEXED]COLUMNS][SIZE n][FOR ALL INDEXES]


欲了解更多信息的ANALYZE_SCHEMA过程 注意:67615.1

欲了解更多信息的ANALYZE_SCHEMA过程 注意:1011835.102

2.2.2. ANALYZE_DATABASE
=======================

集上的所有表,集群和数据库中的索引的统计信息。

YZE_DATABASE程序接受4个参数:

- method=>估计,计算或删除。如果估计,然后.estimate_rows或.estimate_percent必须是非零。

- estimate_rows=>估计的行数。

- estimate_percent=>行估计的百分比。如果estimate_rows指定,那么这个参数将被忽略。

- method_opt=>[FOR TABLE][FOR ALL[INDEXED]COLUMNS][SIZE n][FOR ALL INDEXES]。


欲了解更多信息的ANALYZE_SCHEMA过程 注意:67616.1

====================
2.3 DBMS_DDL Package
====================


DBMS_DDL包提供了一个程序集也统计:

2.3.1 ANALYZE_OBJECT
==================== 

相当于SQL:

"ANALYZE
TABLE|CLUSTER|INDEX [.]
[] STATISTICS
[SAMPLE  [ROWS|PERCENT]]"


欲了解更多信息的ANALYZE_SCHEMA过程 注意:77283.1

相关文件

-----------------

Oracle 8i/9.2的SQL参考手册

Oracle 8i/9.2的设计和优化性能第2版(8.1.6)第8章/第3章

Oracle 8i/9.2提供的软件包参考,第2卷发行8.1.5第49章/第63章




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论