什么是统计信息以及收集查看方法

标签: 统计 信息 方法 | 发表时间:2014-11-03 23:54 | 作者:linlin80230619
出处:http://blog.csdn.net
概念:
oracle的统计信息:存储在数据字典里,且从多个维度描述了Oracle数据库里对象的详细信息。CBO会利用这些统计信息来计算各条路径的成本。

分类:
表、索引、列、系统、数据字典、内部对象的统计信息

收集统计信息:
ANALYZE 命令和DBMS_STATS包。表、索引、列、数据字典都可以用两个。系统、内部对象只能用DBMS_STATS。

1、ANALYZE 
analyze table PROC_PROGRESS_LOG delete statistics; --删除统计信息
analyze table PROC_PROGRESS_LOG estimate statistics sample 15 percent for table ; --估算模式,采样比例15%(估算结果和实际结果不一定会完全匹配)
analyze table PROC_PROGRESS_LOG compute statistics;--计算模式

select * from dba_tables where table_name = 'PROC_PROGRESS_LOG'; --查看表相关信息
select * from USER_TAB_COLUMNS where TABLE_NAME='PROC_PROGRESS_LOG'--查看列相关信息

analyze table PROC_SMCS compute statistics for columns service_id , channel_id ; --对列进行计算模式的统计信息收集
执行完成之后,service_id , channel_id 确实已经有统计信息了,但是PROC_SMCS 表中的统计信息将会被抹掉。
也就是说,对同一个对象而言,新执行的analyze 命令会抹掉之前的analyze 的结果。

如果想一次性以计算模式收集表、表上的列、和表上的索引的统计信息,执行:
analyze table PROC_PROGRESS_LOG compute statistics;

用DBMS_STATS包收集统计信息
官方推荐,oracle 8.1.5之后才有,看成是analyze的增强版
1、GATHER_TABLE_STATS:用于收集目标表、目标表的列和索引的统计信息。
2、GATHER_INDEX_STATS:收集索引的。
3、GATHER_SCHEMA_STATS:收集指定schema下的所有对象的。
4、GATHER_DATABASE_STATS:收集全库所有对象的。

exec dbms_stats.gather_table_stats(ownname => 'TEST',tabname=>'PROC_LETTER',estimate_percent => 15,method_opt => 'FOR TABLE',cascade => false);
只有PROC_LETTER表有统计信息,列和索引没有。
method_opt => 'FOR TABLE' 只适合11g以上版本,10以下的,还会收集列和索引的信息。
如果采用计算模式,将estimate_percent => 15 设置成100或者NULL

exec dbms_stats.gather_table_stats(ownname => 'TEST',tabname=>'PROC_LETTER',estimate_percent => 100,method_opt => 'FOR columns size 1 service_id channel_id',cascade => false);
以计算模式收集 service_id channel_id的统计信息,同时PROC_LETTER表上也会有统计信息。
DBMS_STATS做不到只收集列的统计信息而不收集表的统计信息。

exec dbms_stats.delete_table_stats(ownname => 'TEST' , tabname => 'PROC_LETTER');
删除统计信息。

exec dbms_stats.gather_table_stats(ownname => 'TEST',tabname=>'PROC_LETTER',estimate_percent => 100,cascade => false); 
一次性统计表、列、索引信息。

analyze 和 dbms_stats的区别:
1、analyze 不能正确收集分区表的统计信息,而dbms_stats可以。
2、analyze 不能并行收集统计信息,而dbms_stats可以。
exec dbms_stats.gather_table_stats(ownname => 'TEST',tabname=>'PROC_LETTER',estimate_percent => 100,cascade => false, degree=4); --并行度为4
3、dbms_stats不能收集与CBO无关的额外信息,如行迁移/行链接的数量、校验表和索引的结构信息。
analyze table XXX list chained rows into YYY --分析收集行迁移/行链接的数量
analyze index XXX validate structure 分析索引的结构
作者:linlin80230619 发表于2014-11-3 15:54:16 原文链接
阅读:72 评论:0 查看评论

相关 [统计 信息 方法] 推荐:

什么是统计信息以及收集查看方法

- - CSDN博客数据库推荐文章
oracle的统计信息:存储在数据字典里,且从多个维度描述了Oracle数据库里对象的详细信息. CBO会利用这些统计信息来计算各条路径的成本. 表、索引、列、系统、数据字典、内部对象的统计信息. ANALYZE 命令和DBMS_STATS包. 表、索引、列、数据字典都可以用两个. 系统、内部对象只能用DBMS_STATS.

Oracle 统计信息

- - 数据库 - ITeye博客
--Oracle 优化器统计信息 Oracle优化器统计信息描述了关于数据库和相关对象的统计信息,当执行SQL查询时,优化器会使用这些统计信息估算出各种不同的执行计划的资源消耗, ,从而选择最高效的执行计划. 当统计信息缺失或者陈旧时,Oracle可能会选择错误的执行计划,导致SQL执行效率低下.

Oracle里收集与查看统计信息的方法_DBA Fighting!的技术博客_51CTO博客

- -
Oracle数据库里的统计信息是这样的一组数据:它存储在数据字典里,且从多个维度描述了Oracle数据库里对象的详细信息. CBO会利用这些统计信息来计算目标SQL各种可能的、不同的执行路径的成本,并从中选择一条成本值最小的执行路径来作为目标SQL的执行计划. Oracle数据库里的统计信息可以分为如下6种类型:.

[Oracle] 统计信息和dbms_stats包

- - CSDN博客数据库推荐文章
Oracle基于CBO的优化器在生成执行计划时,很大程度上依赖于统计信息,你可以把CBO理解为一个复杂的数学模型,而统计信息是它最主要的输入,执行计划是输出,如果输入都不准确,输出还可能准确吗. 所有,统计信息是否及时有效对执行计划的好坏有着关键的影响. 2、dbms_stats包. Oracle里采用dbms_stats包分析统计信息(Analyze命令已过时,不建议使用),该包的使用方法,官方文档有详细说明( http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/d_stats.htm#i1036461),这里挑几个最常用的说说.

数据库性能优化、统计信息与对象统计信息概述收集、扩展统计信息、dbms_stats.get_prefs

- - CSDN博客数据库推荐文章
      1.基于成本的Oracle优化法则.       2.Oracle性能诊断艺术.       3.基于Oracle的SQL优化.      基于cost 更大适应性/灵活性/10g开始.      基于规则 制定了15条/10g以前. 1.系统统计信息       . 2.数据库对象统计信息 .

sentry : 前端&后端 的 错误信息统计

- - 张沈鹏
这是instagram ( 被facebook10亿美金收购的那个10人团队)团队用到的工具. Sentry 可以帮助你将 程序(Python , Ruby , PHP ...) 的所有 exception 自动记录下来,然后在一个好用的 UI 上呈现和搜索. 处理 exception 是每个程序的必要部分,所以 Sentry 也几乎可以说是所有项目的必备组件.

Oracle 统计信息收集 - Leohahah - 博客园

- -
查询表上一次收集统计信息的时间:. 收集统计信息主要有2种方法:. analyze可以用来收集表,索引,列以及系统的统计信息和直方图,以下为一些典型用法:. --收集所有的统计信息和直方图信息,包括表、列、索引. --收集emp表的统计信息,不含列、索引统计信息和直方图. --收集所有列的统计信息和直方图(超大表较耗资源,因为只要列中有非空值,那么就会收集这个列的统计信息和直方图).

Hadoop中共享全局信息的几种方法

- - CSDN博客推荐文章
在编写Hadoop MapReduce程序的过程中有时候需要在各个Mapper或者Reducer中使用一些共享的全局数据,例如在处理整数数据表格的时候有时候需要让每个Reducer知道各个列的取值范围或是一些图算法中需要让各个Reducer知道图的连通关系. 将共享文件放在HDFS上,采用Hadoop的文件操作API访问.

java GUI调用信息抽取工作Gate的方法

- - CSDN博客编程语言推荐文章
几个月前,尝试在JavaWeb项目中调用Gate API(关于Gate点 这里了解更多),在那里其安装配置很简单,根据官方手册很快可以搞定. 由于项目需求的变化,现在要把项目改为桌面版,所以又要考虑在Java GUI中调用 Gate API的问题. 根据官方手册完全行不通,各种报错,谷歌上可参考的内容也极少,我甚至还给开发人员发邮件询问,也没得到回复,相当吭爹,浪费老汉整整24小时的时间.

Google Maps 在部分城市换用 Inrix 统计到的实时路况信息

- Chinaxingwei - 谷奥——探寻谷歌的奥秘
Google在7月移除了桌面版Google Maps里的交通路况预测和预计驾车时间功能,因为它们实在是太不准了. 现在更准的来了,Google已经跟Inrix签署合作协议,在部分城市使用Inrix提供的技术来实时显示路况. Inrix之前从Kleiner Perkins和August Capital拿到了3700万美元投资,他们利用城市里超过3000万辆出租车、运输车、卡车和其它一些渠道通过众包的形式得到实时的交通信息,然后利用数据软件将分析出的数据卖给移动应用和网站来获利.