Oracle性能优化之Oracle里的统计信息

本文介绍了Oracle数据库中的统计信息类型,包括表、列、索引等,并详细阐述了如何通过analyze命令和dbms_stats包进行统计信息的收集。讨论了两者之间的区别,并提供了查询统计信息的脚本。
摘要由CSDN通过智能技术生成

一、什么是统计信息
oracle数据库里的统计信息是如下的一组数据:他们存储在数据字典里,且从多个维度描述了oracle数据库数据对象的详细信息。

oracle数据库里的统计信息主要分为以下6种情况:
(1)表的统计信息。
(2)列的统计信息。
(3)索引的统计信息。
(4)系统统计信息。
(5)数据字典统计信息。
(6)内部对象统计信息。

二、oracle收集和查看统计信息的方法
oracle数据库收集统计信息一般有以下2种方法:
(1)analyze命令。
(2)dbms_stats包。

针对以上6种统计信息,其中“表的统计信息”,“索引统计信息”,“列统计信息”,“数据字典统计信息”使用analyze或dbms_stats包收集均可以,但是“系统统计信息”和“内部对象统计信息”必须要dbms_stats包来收集才可以。

1、使用analyze命令收集统计信息
从oralce7开始,analyze命令就用来收集表、索引和列的统计信息。从oracle10g开始,创建索引后oracle会自动为您收集目标索引统计信息。analyze命令收集统计信息不会抹掉之间analyze结果。

创建测试表:

SQL>create table t1 as select * from dba_objects;

SQL>create index idx_t1 on t1(object_id);

(1)analyze索引统计信息:
SQL> analyze index idx_t1 delete statistics;

(2)对表收集统计信息,并且以估算模式,采样比为15%:
SQL>analyze table t1 estimate statistics sample 15 percent for table;

(3)对表收集统计信息,以统计模式:
SQL>analyze table t1 compute statistics for table;

(4)对列收集统计信息,以计算模式:
SQL>analyze table t1 compute statistics for columns object_name,object_id;

(5)以计算模式对表和列同时收集统计信息:
SQL>analyze table t1 compute statistics for t1 for columns object_name,object_id;

(6)以计算模式对索引收集统计信息:
SQL>analyze index idx_t1 compute statistics;

(7)删除表、表上的索引、表的所有列的统计信息:
SQL>analyze table t1 delete statistics;

(8)以计算模式,同时收集表、表上的列、表上的索引的统计信息:
SQL>analyze table t1 compute statistics;

2、使用dbms_stats包收集统计信息
从oracle 8.1.5开始,dbms_stats包就被广泛用于统计信息的收集,用dbms_stats包收集统计信息也是oracle官方推荐的方式。在收集CBO所需要的统计信息方面,可以简单的将dbms_stats包理解成是analyze命令的增强版。

DBMS_STATS包最常见的4个存储过程:

(1)dbms_stats.gather_table_stats:用于收集目标表,目标表上列及目标表上索引的统计信息。

(2)dbms_stats.gather_index_stats:用于收集指定索引的统计信息。

(3)dbms_stats.gather_schema_stats:用于收集schema下所有对象的统计信息。

(4)dbms_stats.gather_database_stats:用于收集全库统计对象的统计信息。

以下是dbms_stats包的具体用法:

(1)对表收集统计信息,并且以估算模式,采样比为15%:

SQL>exec dbms_stats.gather_table_stats(ownname=>‘SCOTT’,tabname=>‘T1’,estimate_percent=>15,method_opt=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

离水的鱼xyt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值