- 浏览: 595873 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
什么是统计信息
统计信息主要是描述数据库中表,索引的大小,规模,数据分布状况等的一类信息。比如,表的行数,块数,平均每行的大小,索引的leaf blocks,索引字段的行数,不同值的大小等,都属于统计信息。CBO正是根据这些统计信息数据,计算出不同访问路径下,不同join 方式下,各种计划的成本,最后选择出成本最小的计划。
统计信息是存放在数据字段表中的,如tab$。一般我们从数据字段视图中察看统计信息状况,如DBA_TABLES,DBA_INDEXES,DBA_TAB_COL_STATISTICS, DBA_TAB_HISTOGRAMS 等。
列举下DBA_TABLES,DBA_INDEXES 视图中表示统计信息的一些字段。这些字段只有搜集过统计信息之后才有值,否则是空的。这些字段中last_analyzed 字段表示上次统计信息搜集的时间,大家可以根据这个字段,快速的了解最近一次统计信息搜集的时间。
统计信息包括下面几类:
表统计:包括记录数、block数和记录平均长度。
列统计:列中不同值的数量(NVD)、空值的数量和数据分布(HISTOGRAM)。
索引统计:索引叶块的数量、索引的层数和聚集因子(CLUSTERING FACTOR)。
系统统计:I/O性能和利用率和CPU性能和利用率。
生成统计信息:
统计信息生成技术包括三种:
基于数据采样的估计方式;
精确计算方式;
用户自定义的统计信息收集方式;
其中采用估算方式可以指定总记录数的估算百分比或者总块数的估算百分比。
分区表的统计信息分为几级:分区表的整体信息、分区的统计信息和子分区的统计信息。
最常用的收集统计信息的方式包括:DBMS_STATS包和ANALYZE语句,Oracle推荐使用DBMS_STATS包来收集统计信息。
DBMS_STATS包中用于收集统计信息的过程包括:
dbms_stats.gather_table_stats 收集表、列和索引的统计信息;
dbms_stats.gather_schema_stats 收集SCHEMA下所有对象的统计信息;
dbms_stats.gather_index_stats 收集索引的统计信息;
dbms_stats.gather_system_stats 收集系统统计信息。
dbms_stats.delete_table_stats 删除表的统计信息
dbms_stats.export_table_stats 输出表的统计信息
dbms_stats.create_state_table
dbms_stats.set_table_stats 设置 表的统计
dbms_stats.auto_sample_size
dbms_stats.gather_database_stats:收集数据库中所有对象的统计信息;
Oracle根据下列条件来决定使用哪些索引:
1.索引中的记录数;
2.索引中不同键值的数量;
3.索引的层数;
4.索引中的叶块数;
5.聚集因子;
6.每个键值平均叶块数;
如果两个索引的选择性、查询代价和集势都相同,那么优化器会根据索引名称的字母顺序选。
--查看表的stats
select * from user_tab_statistics where table_name = 'STUDENT' ;
字段说明:
NUM_ROWS 记录行数
BLOCKS 高水位线以下的数据块数
EMPTY_BLOCKS 高水位线以上数据块数,dbms_stat不统计.
AVG_SPACE 平均空闲空间,不统计
CHAIN_CNT 行迁移行数,不统计
AVG_ROW_LEN 行平均长度
--查看列的stats
select * from user_tab_col_statistics where table_name = 'STUDENT' ;
统计信息说明
column_name 字段名
num_distinct 唯一值数量
low_value 该列最小值
high_value 该列最大值
density 表示该列数据的重复率,0到1的小数,越接近0表示重复率越低。
num_nulls 该列null值的数量
avg_col_len 列平均长度,以字节为单位
histogram 是否有直方图统计信息,none:没有,frequency:频率直方图,height balanced 等高直方图。
num_buckets 直方图桶数
--查看索引的stats
select * from user_ind_statistics where table_name = 'STUDENT' ;
参考:http://blog.csdn.net/accpsz/article/details/5155614
统计信息主要是描述数据库中表,索引的大小,规模,数据分布状况等的一类信息。比如,表的行数,块数,平均每行的大小,索引的leaf blocks,索引字段的行数,不同值的大小等,都属于统计信息。CBO正是根据这些统计信息数据,计算出不同访问路径下,不同join 方式下,各种计划的成本,最后选择出成本最小的计划。
统计信息是存放在数据字段表中的,如tab$。一般我们从数据字段视图中察看统计信息状况,如DBA_TABLES,DBA_INDEXES,DBA_TAB_COL_STATISTICS, DBA_TAB_HISTOGRAMS 等。
列举下DBA_TABLES,DBA_INDEXES 视图中表示统计信息的一些字段。这些字段只有搜集过统计信息之后才有值,否则是空的。这些字段中last_analyzed 字段表示上次统计信息搜集的时间,大家可以根据这个字段,快速的了解最近一次统计信息搜集的时间。
统计信息包括下面几类:
表统计:包括记录数、block数和记录平均长度。
列统计:列中不同值的数量(NVD)、空值的数量和数据分布(HISTOGRAM)。
索引统计:索引叶块的数量、索引的层数和聚集因子(CLUSTERING FACTOR)。
系统统计:I/O性能和利用率和CPU性能和利用率。
生成统计信息:
统计信息生成技术包括三种:
基于数据采样的估计方式;
精确计算方式;
用户自定义的统计信息收集方式;
其中采用估算方式可以指定总记录数的估算百分比或者总块数的估算百分比。
分区表的统计信息分为几级:分区表的整体信息、分区的统计信息和子分区的统计信息。
最常用的收集统计信息的方式包括:DBMS_STATS包和ANALYZE语句,Oracle推荐使用DBMS_STATS包来收集统计信息。
DBMS_STATS包中用于收集统计信息的过程包括:
dbms_stats.gather_table_stats 收集表、列和索引的统计信息;
dbms_stats.gather_schema_stats 收集SCHEMA下所有对象的统计信息;
dbms_stats.gather_index_stats 收集索引的统计信息;
dbms_stats.gather_system_stats 收集系统统计信息。
dbms_stats.delete_table_stats 删除表的统计信息
dbms_stats.export_table_stats 输出表的统计信息
dbms_stats.create_state_table
dbms_stats.set_table_stats 设置 表的统计
dbms_stats.auto_sample_size
dbms_stats.gather_database_stats:收集数据库中所有对象的统计信息;
Oracle根据下列条件来决定使用哪些索引:
1.索引中的记录数;
2.索引中不同键值的数量;
3.索引的层数;
4.索引中的叶块数;
5.聚集因子;
6.每个键值平均叶块数;
如果两个索引的选择性、查询代价和集势都相同,那么优化器会根据索引名称的字母顺序选。
--查看表的stats
select * from user_tab_statistics where table_name = 'STUDENT' ;
字段说明:
NUM_ROWS 记录行数
BLOCKS 高水位线以下的数据块数
EMPTY_BLOCKS 高水位线以上数据块数,dbms_stat不统计.
AVG_SPACE 平均空闲空间,不统计
CHAIN_CNT 行迁移行数,不统计
AVG_ROW_LEN 行平均长度
--查看列的stats
select * from user_tab_col_statistics where table_name = 'STUDENT' ;
统计信息说明
column_name 字段名
num_distinct 唯一值数量
low_value 该列最小值
high_value 该列最大值
density 表示该列数据的重复率,0到1的小数,越接近0表示重复率越低。
num_nulls 该列null值的数量
avg_col_len 列平均长度,以字节为单位
histogram 是否有直方图统计信息,none:没有,frequency:频率直方图,height balanced 等高直方图。
num_buckets 直方图桶数
--查看索引的stats
select * from user_ind_statistics where table_name = 'STUDENT' ;
参考:http://blog.csdn.net/accpsz/article/details/5155614
发表评论
文章已被作者锁定,不允许评论。
-
sql 最小化表查询次(col1,col2) = (select col1,col2 from t)
2018-01-02 16:51 553最小化表查询次数 ... -
sql 用inner join取代in和exists
2018-01-02 16:48 1153使用表连接替换EXISTS ... -
oracle HINT详解
2017-09-01 10:42 520ORACLE的HINT详解 hints是oracle提供的 ... -
oracle jdbctemplate如何优化查询速度
2017-08-21 09:33 13201.设置setFetchSize进行优化 // 可以优化 ... -
oracle Parallel模式-Parallel用法(/*+PARALLEL(n)*/)
2017-08-18 16:48 19001.用途 强行启用 ... -
oracle 存储过程学习总结
2016-08-22 08:42 360dbms_output.put_line('CONCAT ... -
oracle SGA总结信息
2016-07-06 10:38 513SGA 系统全局区 SGA是Oracle用来为实例村粗数据和 ... -
oracle where条件分支查询
2016-06-30 16:16 523select * from test xx where ... -
oracle with as用法
2016-06-24 09:58 939with as语法 –针对一个别名 with tmp as ... -
oracle 重复数据处理的sql整理
2016-06-22 14:44 398Oracle 删除重复数据只留一条 1、查找表中多余的重 ... -
oracle 数据库组成部分(数据库(各种文件)+实例(SGA PGA + 后台进程))知识
2016-04-11 19:51 1270一、SQL server中的实例与 ... -
oracle expdp与impdp导入导出
2016-03-17 10:17 1285[b]数据泵工具导出的步骤:[/b] 1、创建DIRECT ... -
oracle 常用sql语句积累
2016-01-28 11:01 5711.删除重复列 delete from t t1 where ... -
oracle forall关键字进行批量操作
2014-12-12 15:26 1046两个数据操纵语言(DML)语句:BULK COLLECT和FO ... -
oracle 表中有子父关系列则使用CONNECT BY PRIOR
2014-10-27 10:08 421查询名字为xx xxx的所有子数据 SELECT re.U ... -
oracle 存储过程使用实例
2014-10-22 17:41 6091.建包 CREATE OR REPLACE PACKA ... -
oracle 删除大量数据后整理表(analyze table xxx compute statistics)
2014-10-17 18:09 22291. DELETE 后 TRUNCATE TABLE ; 然 ... -
oracle splitstr 函数
2014-10-15 17:45 1410splitstr函数 CREATE OR REPLACE ... -
oracle 高效Sql语句总结
2014-10-08 11:23 504No SQL,No cost. SQL语句是造成数据库 ... -
oracle merge 更新或插入数据
2014-09-26 14:26 496主要功能 提供有条件地更新和插入数据到数据库表中 如果该 ...
相关推荐
### Oracle统计信息高可靠性保障技术知识点详解 #### 一、技术背景与意义 在Oracle数据库管理系统中,查询优化器(Optimizer)的选择对于SQL查询的执行效率至关重要。优化器通过评估不同执行路径的成本来决定最...
Oracle统计信息主要包括表、索引、分区以及列的统计信息。这些数据用于数据库的查询优化过程,帮助系统评估不同查询路径的成本,选择最优执行方案。手动收集统计信息虽然可以确保准确性,但在大数据量或频繁变动的...
统计信息包含表的行数、列的分布情况等,它们被用于Oracle的自动优化器来确定执行查询的最佳方式。 当面临测试环境与生产环境性能差异的问题时,迁移生产系统的统计信息就成为了一个有效的解决方案。以下是实现这一...
本文将深入探讨Oracle统计信息的导出导入测试,并提供具体的示例。 首先,我们了解两种常见的统计信息导出导入粒度: 1. **Schema级别统计信息的导出导入**:适用于单个模式下的所有对象。Oracle提供了DBMS_STATS...
直方图是一种统计图表,在多种领域中都有广泛的应用,它并非Oracle数据库所独有的功能。直方图通常用来描绘一组数据的分布情况,通过一系列相连的矩形表示不同区间的频数或频率。在Oracle数据库中,直方图被用来描述...
### Oracle Statistic 统计信息详解 #### 一、Statistic的重要性与作用 在Oracle数据库管理中,**Statistic**起着至关重要的作用。它主要负责收集关于数据库对象的详细信息,并将这些信息存储在数据字典中。这些...
文档里包含Oracle 11G统计信息自动收集及调整,可以使用优化数据库性能,不合理的统计信息会影响数据库性能
Oracle统计一天内每小时的数据量。在某小时内有数据,该时间段会被统计出来;该时间段内没有交易,该时间段不会被统计出来,默认为0即可
#### 一、Oracle统计信息的重要性 Oracle数据库中的统计信息对于提高查询性能至关重要。这些信息是CBO用来评估查询成本并选择最优执行路径的基础。没有准确的统计信息,CBO可能会选择次优的执行计划,从而导致查询...
Oracle 数据库中使用 dbms_stats 包手动收集统计信息 在 Oracle 数据库中,dbms_stats 包提供了一种手动收集统计信息的方式,包括基于表、用户和索引的统计信息。通过使用 dbms_stats 包,我们可以手动收集统计信息...
- **options参数**:控制Oracle统计的刷新方式。提供了四种预设方法: - `LGATHER`:重新分析整个架构(Schema)。 - `LGATHEREMPTY`:只分析目前还没有统计的表。 - `LGATHERSTALE`:只重新分析修改量超过10%的表...
### Oracle 11g 自动收集统计信息的时间 在Oracle 11g中,自动收集统计信息是一项重要的数据库维护任务,它有助于优化查询性能并确保数据的准确性。本篇文章将详细介绍Oracle 11g如何自动收集统计信息以及如何管理...
Oracle Database Reference 文档提供了 Oracle 的所有初始化参数、数据字典、动态性能视图、SQL 脚本、 Oracle 等待事件、 Oracle 统计信息等知识,无需精读。 基于平台的管理部分,Oracle Database Administrator'...
"Oracle统计信息管理.pdf" 关注的是数据库的统计信息,这对于优化查询性能至关重要。通过学习这部分内容,你可以理解何时收集和更新统计信息,以及如何分析和调整统计策略以提升数据库的整体性能。 总的来说,这个...
ORACLE 数据库中如何统计表记录数的过程说明
Oracle 自动收集统计信息测试 Oracle 自动收集统计信息是 Oracle 数据库中的一种功能,可以自动收集数据库中的统计信息,以便提高查询性能和优化数据库性能。在本文中,我们将对 Oracle 自动收集统计信息进行测试,...
Oracle 分组统计 Oracle 分组统计是数据库开发中常用的技术之一。它可以根据不同的条件对数据进行分组和聚合统计。分组统计的目的是将数据按照某种条件分组,然后对每个组进行聚合计算,最后输出结果。 分组统计...
在SQL和Oracle数据库管理系统中,有时我们需要统计数据库中包含的表的数量以及获取具体的表名。以下是如何在两者中实现这一目标的详细步骤。 在SQL中,我们通常使用系统对象表来获取相关信息。`sys.objects`是SQL ...
oracle 表信息统计+表信息分析