dbms_stats collect statistics

在实际的应用中,假如数据库存在大量的SQL硬解析,性能方面常常会出现很大的问题。如果设置参数cursor_sharing=similar来解决硬解析问题,又会面对Oracle 10g在自动收集统计值时会默认收集histogram的问题。下面我们来介绍一个具体的解决方法。

示例:

注释:修改默认收集模式,依然使用Oracle 10g自动收集统计值的功能。

exec dbms_stats.set_param('method_opt','for columns null');

DBMS_STATS.GATHER_TABLE_STATS的语法如下:
DBMS_STATS.GATHER_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2, partname VARCHAR2, estimate_percent NUMBER, block_sample BOOLEAN, method_opt VARCHAR2, degree NUMBER, granularity VARCHAR2, cascade BOOLEAN, stattab VARCHAR2, statid VARCHAR2, statown VARCHAR2, no_invalidate BOOLEAN, force BOOLEAN);
参数说明:
ownname:要分析表的拥有者
tabname:要分析的表名.
partname:分区的名字,只对分区表或分区索引有用.
estimate_percent:采样行的百分比,取值范围[0.000001,100],null为全部分析,不采样. 常量:DBMS_STATS.AUTO_SAMPLE_SIZE是默认值,由oracle决定最佳取采样值.
block_sapmple:是否用块采样代替行采样.
method_opt:决定histograms信息是怎样被统计的.method_opt的取值如下:
for all columns:统计所有列的histograms.
for all indexed columns:统计所有indexed列的histograms.
for all hidden columns:统计你看不到列的histograms
for columns SIZE | REPEAT | AUTO | SKEWONLY:统计指定列的histograms.N的取值范围[1,254]; REPEAT上次统计过的histograms;AUTO由oracle决定N的大小;SKEWONLY multiple end-points with the same value which is what we define by "there is skew in the data
degree:决定并行度.默认值为null.
granularity:Granularity of statistics to collect ,only pertinent if the table is partitioned.
cascace:是收集索引的信息.默认为falase.
stattab指定要存储统计信息的表,statid如果多个表的统计信息存储在同一个stattab中用于进行区分.statown存储统计信息表的拥有者.以上三个参数若不指定,统计信息会直接更新到数据字典.
no_invalidate: Does not invalidate the dependent cursors if set to TRUE. The procedure invalidates the dependent cursors immediately if set to FALSE.
force:即使表锁住了也收集统计信息.
例子:
execute dbms_stats.gather_table_stats(ownname => 'owner',tabname => 'table_name' ,estimate_percent => null ,method_opt => 'for all indexed columns' ,cascade => true);

[@more@]

HWM --high water mark

important:

1, Deallocate free space below HWM may be improve the FULL TABLE SCAN speed .

2, defrag fraction chained/migrate rows maybe improve the FULL TABLE SCAN speed and index scan speed.

1, 增加空闲空间( above HWM are allocate)

IT DOES NOT ADD TABLE SCAN COST. AND DO NOT TAKE INTO ACCOUNT TO THE STATISTICS OF BLOCKS COLUMN OF USER_TABLES.

alter table t allocate extent (size 10m datafile 'c:test01.dbf');

1, 释放空闲空间( ONLY above HWM are deallocate)

alter table t deallocate unused ;

2,收缩表. 释放空闲空间(HWM).

alter table t enable row movement ;

alter table t shrink space;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/350519/viewspace-1039829/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/350519/viewspace-1039829/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值