oracle 查询之后统计数量_查询效率慢,那你是不会分析!第一章

  1. 介绍

优化器统计信息就是一个更加详细描述数据库和数据库对象的集合,这些统计信息被用于查询优化器,让其为每条SQL语句选择最佳的执行计划。优化器统计信息包括:

表的统计信息:行数、Block数、行平均长度

列的统计信息:列中不同值的数量、列中null的数量、数据分布(柱状图/直方图)

索引的统计信息:叶子块的数量、索引的高度、聚簇因子(clustering factor)

系统的统计信息:I/O性能和利用、CPU性能和利用

优化器统计信息存储在下列数据字典中

· DBA_TABLES

· DBA_OBJECT_TABLES

· DBA_TAB_STATISTICS

· DBA_TAB_COL_STATISTICS

· DBA_TAB_HISTOGRAMS

· DBA_INDEXES

· DBA_IND_STATISTICS

· DBA_CLUSTERS

· DBA_TAB_PARTITIONS

· DBA_TAB_SUBPARTITIONS

· DBA_IND_PARTITIONS

· DBA_IND_SUBPARTITIONS

· DBA_PART_COL_STATISTICS

· DBA_PART_HISTOGRAMS

· DBA_SUBPART_COL_STATISTICS

· DBA_SUBPART_HISTOGRAMS

· INDEX_STATS 存储ANALYZE ..VALIDATE STRUCTURE统计信息

· AUX_STATS$ 存储CPU统计信息

· X$KCFIO 存储I/O统计信息

30d61a6eec8bc44b5882103fb5fda6b6.png

因为数据库中的对象会经常的变化,所以统计信息必须有规律的更新以便更加准确的描述这些数据库对象。

统计信息默认是由ORACLE自动维护的,不过我们也可以用DBMS_STATS包手动收集统计信息。

DBMS_STATS包同样提供了过程来维护统计信息。

关于DBMS_STATS包更详细的描述请参阅官方文档PL/SQL Packages and Types Reference部分。

9761c0eb0da0853aa63846309eddb090.png

2.自动收集统计信息

Oracle10g中,在安装Oracle的时候,就默认创建了一个名为GATHER_STATS_JOB的job来自动收集优化器统计信息,这个job收集数据库中所有对象的统计信息。

默认的情况下这个job是周一到周五每天晚上10点到第二天早上6点以及整个周末来收集统计信息。

可以查看DBA_SCHEDULER_JOBS, DBA_SCHEDULER_PROGRAMS,DBA_SCHEDULER_WINDOWS,DBA_SCHEDULER_JOB_RUN_DETAILS等视图来查看JOB设置以及运行信息。

自动收集过期的统计信息依赖于表监控特征,在Oracle10g中表监控默认是开启的,同时它也依赖STATISTICS_LEVEL参数的值,10g中默认为typical,只有将STATISTICS_LEVEL参数设置为ALL或者TYPICAL才能让ORACLE识别过期的统计信息。

1e09c4b7665f897ca7ebafa51e2a3a82.png

3.关闭自动收集统计信息

在某些情况下,我们想关闭自动收集统计信息那么我们可以利用如下方法:

BEGIN

DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');

END;

/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值