Oracle 分区表的统计信息实例
ORACLE的统计信息在执行SQL的过程中扮演着非常重要的作用,而且ORACLE在表的各个层次都会有不同的统计信息,通过这些统计信息来描述表的,列的各种各样的统计信息。下面通过一个复合分区表来说明一些常见的和不常见的统计信息。
搭建测试用例
--创建表。
SQL>
create table test
partition by range(object_id)
subpartition by hash(object_type) subpartitions 4
(partition p1 values less than(10000),
partition p2 values less than(20000),
partition p3 values less than(30000),
partition p4 values less than(maxvalue))
as
select * from dba_objects; --收集统计信息
sql>
BEGIN
dbms_stats.gather_table_stats( ownname => 'NC60',
tabname => 'TEST',
estimate_percent => 100, --百分之百采样
block_sample => FALSE,
method_opt => 'FOR ALL COLUMNS SIZE 10', --收集直方图
granularity => 'ALL', --所有分区
cascade => TRUE --收集索引
);
END;
1,表级的统计信息
SQL> select table_name,num_rows,blocks,empty_blocks,avg_space
2 from user_tables
3 where table_name = 'TEST'; TABLE_NAME NUM_ROWS BLOCKS EMPTY_BLOCKS AVG_SPACE
------------------------------ ---------- ---------- ------------ ----------
TEST 87556 1328 0 0
2,表上列的统计信息
SQL> select table_name,column_name,num_distinct,density
2 from user_tab_columns
3 where table_name = 'TEST'; TABLE_NAME COLUMN_NAME NUM_DISTINCT DENSITY
------------------------------ ------------------------------ ------------ ----------
TEST OWNER 34 .023504483
TEST OBJECT_NAME 57495 .000020431
TEST SUBOBJECT_NAME 163 .007094837
TEST OBJECT_ID 87556 .000011421
TEST DATA_OBJECT_ID 22685 .000044786
TEST OBJECT_TYPE 45 .086650298
TEST CREATED 2057 .000847961
TEST LAST_DDL_TIME 1898 .000919514
TEST TIMESTAMP 2182 .000838526
TEST STATUS 1 5.7106E-06
TEST TEMPORARY 2 5.7106E-06 TABLE_NAME COLUMN_NAME NUM_DISTINCT DENSITY
------------------------------ ------------------------------ ------------ ----------
TEST GENERATED 2 5.7106E-06
TEST SECONDARY 2 5.7106E-06
TEST NAMESPACE 21 .116972867
TEST EDITION_NAME 0 0
3,表上列的直方图信息(OBJECT_ID列)
SQL> col TABLE_NAME format a20
SQL> col COLUMN_NAME format a40
SQL> select table_name,column_name,endpoint_number,endpoint_value
2 from user_tab_histograms
3 where table_name = 'TEST'
4 and column_name = 'OBJECT_ID'; TABLE_NAME COLUMN_NAME ENDPOINT_NUMBER ENDPOINT_VALUE
-------------------- ---------------------------------------- --------------- --------------
TEST OBJECT_ID 0 2
TEST OBJECT_ID 1 8921
TEST OBJECT_ID 2 17998
TEST OBJECT_ID 3 26754
TEST OBJECT_ID 4 35510
TEST OBJECT_ID 5 44266
TEST OBJECT_ID 6 53025
TEST OBJECT_ID 7 62172
TEST OBJECT_ID 8 71290
TEST OBJECT_ID 9 82232
TEST OBJECT_ID 10 91577
4,分区的统计信息
SQL> select partition_name,num_rows,blocks,empty_blocks,avg_space
2 from user_tab_partitions
3 where table_name = 'TEST'; PARTITION_NAME NUM_ROWS BLOCKS EMPTY_BLOCKS AVG_SPACE
------------------------------ ---------- ---------- ------------ ----------
P1 9708 147 0 0
P2 9805 162 0 0
P3 10000 156 0 0
P4 58043 863 0 0
5,分区上列的统计信息
SQL> select column_name,num_distinct,density,num_nulls
2 from user_part_col_statistics
3 where table_name = 'TEST'
4 and partition_name = 'P1'; COLUMN_NAME NUM_DISTINCT DENSITY NUM_NULLS
---------------------------------------- ------------ ---------- ----------
OWNER 5 .000051504 0
OBJECT_NAME 7878 .000142267 0
SUBOBJECT_NAME 25 .00877193 9594
OBJECT_ID 9708 .000103008 0
DATA_OBJECT_ID 2074 .000560776 7597
OBJECT_TYPE 20 .080003882 0
CREATED 141 .011559584 0
LAST_DDL_TIME 213 .010730067 0
TIMESTAMP 182 .011371733 0
STATUS 1 .000051504 0
TEMPORARY 2 .000051504 0 COLUMN_NAME NUM_DISTINCT DENSITY NUM_NULLS
---------------------------------------- ------------ ---------- ----------
GENERATED 2 .000051504 0
SECONDARY 1 .000051504 0
NAMESPACE 8 .000051504 0
EDITION_NAME 0 0 9708
6,分区上列的直方图信息(OBJECT_ID列)
SQL> select column_name,bucket_number,endpoint_value
2 from user_part_histograms
3 where table_name = 'TEST'
4 and partition_name = 'P1'
5 and column_name = 'OBJECT_ID'; COLUMN_NAME BUCKET_NUMBER ENDPOINT_VALUE
---------------------------------------- ------------- --------------
OBJECT_ID 0 2
OBJECT_ID 1 1030
OBJECT_ID 2 2010
OBJECT_ID 3 2981
OBJECT_ID 4 3952
OBJECT_ID 5 4923
OBJECT_ID 6 5928
OBJECT_ID 7 6953
OBJECT_ID 8 7933
OBJECT_ID 9 8903
OBJECT_ID 10 9999 11 rows selected.
7,子分区的统计信息
SQL> select subpartition_name,num_rows,blocks,empty_blocks
2 from user_tab_subpartitions
3 where table_name = 'TEST'
4 and partition_name = 'P1'; SUBPARTITION_NAME NUM_ROWS BLOCKS EMPTY_BLOCKS
------------------------------ ---------- ---------- ------------
SYS_SUBP21 3314 48 0
SYS_SUBP22 3824 57 0
SYS_SUBP23 528 11 0
SYS_SUBP24 2042 31 0 SQL>
8,子分区上的列的统计信息
SQL> select column_name,num_distinct,density
2 from user_subpart_col_statistics
3 where table_name = 'TEST'
4 and subpartition_name = 'SYS_SUBP21'; COLUMN_NAME NUM_DISTINCT DENSITY
---------------------------------------- ------------ ----------
OWNER 3 .000150875
OBJECT_NAME 3314 .00030175
SUBOBJECT_NAME 1 .009615385
OBJECT_ID 3314 .00030175
DATA_OBJECT_ID 178 .005617978
OBJECT_TYPE 7 .000150875
CREATED 126 .017527186
LAST_DDL_TIME 148 .01653325
TIMESTAMP 134 .017483116
STATUS 1 .000150875
TEMPORARY 2 .000150875 COLUMN_NAME NUM_DISTINCT DENSITY
---------------------------------------- ------------ ----------
GENERATED 2 .000150875
SECONDARY 1 .000150875
NAMESPACE 5 .000150875
EDITION_NAME 0 0
9,子分区上的列的直方图信息
SQL> select column_name,bucket_number,endpoint_value
2 from user_subpart_histograms
3 where table_name = 'TEST'
4 and subpartition_name = 'SYS_SUBP21'
5 and column_name = 'OBJECT_ID'; COLUMN_NAME BUCKET_NUMBER ENDPOINT_VALUE
---------------------------------------- ------------- --------------
OBJECT_ID 0 100
OBJECT_ID 1 1764
OBJECT_ID 2 2429
OBJECT_ID 3 3088
OBJECT_ID 4 3752
OBJECT_ID 5 4309
OBJECT_ID 6 4640
OBJECT_ID 7 5828
OBJECT_ID 8 7278
OBJECT_ID 9 8912
OBJECT_ID 10 9998
我们对这个复合分区分析之后产生了上面这九种不同层次的统计信息。CBO想要得要一个高效的执行计划需要如此多的统计信息
Oracle 分区表的统计信息实例的更多相关文章
- Oracle 分区表 收集统计信息 参数granularity
GRANULARITY Determines the granularity of statistics to collect. This value is only relevant for par ...
- oracle里的统计信息
1 oracle里的统计信息 Oracle的统计信息是这样的一组数据,存储在数据字典,从多个维度描述了oracle数据库对象的详细信息,有6种类型 表的统计信息:记录数.表块的数量.平均行长度等 索引 ...
- Oracle性能优化之Oracle里的统计信息
一.什么是统计信息 oracle数据库里的统计信息是如下的一组数据:他们存储在数据字典里,且从多个维度描述了oracle数据库数据对象的详细信息. oracle数据库里的统计信息主要分为以下6种情况: ...
- 基于Oracle的SQL优化(崔华著)-整理笔记-第5章“Oracle里的统计信息”
第5章“Oracle里的统计信息” 详细介绍了Oracle数据库里与统计信息相关的各个方面的内容,包括 Oracle数据库中各种统计信息的分类.含义.收集和查看方法,以及如何在Oracle数据库里正确 ...
- Oracle中的统计信息
一.什么是统计信息 统计信息主要是描述数据库中表,索引的大小,规模,数据分布状况等的一类信息.例如,表的行数,块数,平均每行的大小,索引的leaf blocks,索引字段的行数,不同值的大小等,都属于 ...
- Oracle的自动统计信息不收集直方图的信息
Oracle的自动统计信息不收集直方图的信息 在oracle9i中,默认的统计信息收集是不收集直方图信息的,也就是说默认的MOTHOD_OPT模式为FOR ALL COLUMNS SIZE 1 在10 ...
- Oracle之自动收集统计信息
一.Oracle 11g 在Oracle的11g版本中提供了统计数据自动收集的功能.在部署安装11g Oracle软件过程中,其中有一个步骤便是提示是否启动这个功能(默认是启用这个功能). 在这里介绍 ...
- 关于Oracle开启自动收集统计信息的SPA测试
主题:关于Oracle开启自动收集统计信息的SPA测试 环境:Oracle RAC 11.2.0.4(Primary + Standby) 需求:生产Primary库由于历史原因关闭了自动统计信息的收 ...
- Oracle重新获取统计信息以及SQLSERVER重建索引
Oracle重新获取统计信息 exec dbms_stats.gather_schema_stats(ownname =>'LCoe739999',options => 'GATHER', ...
随机推荐
- JAXB注解【转】
http://blog.csdn.net/lw371496536/article/details/6942045 JAXB(Java API for XML Binding),提供了一个快速便捷的方式 ...
- 监控RAC中的临时表空间
it is from metalink:Note:465840.1 1>Monitor the temp space allocation to make sure each instance ...
- php实例根据ID删除mysql表中的数据
在动态网站开发中,我们经常要根据ID删除表中的数据,例如用户删除帖子,就需要根据ID删除帖子.本文章向大家介绍php根据ID删除表中数据的实例,需要的朋友可以参考一下本文章的实例. php实例根据ID ...
- Kendo UI - Observable
在 Kendo 中,基类 Class 第一个重要的派生类就是 Observable, 顾名思义,就是一个可观察的对象,也就是观察者模式的基础. 对于观察者模式来说,应该有主题和观察者,这里我们讨论的其 ...
- CnBlogs博文排版技巧(转)
看的一篇讲博文排版技巧的文章,虽然有些地方有些过时,不过还是有些可以借鉴地方的 http://www.cnblogs.com/lyj/archive/2008/11/30/1344463.html
- 【PL/SQL练习】复合变量: 可以一次传递多个值到变量中。
1.案例: 通过record类型处理一行多列的数据 复合变量--record 记录类型record:在一个变量中可以存储多个区域,每个区域可以是一个标量.记录或table (用于处理一行多列的信息) ...
- mysql中data_format用法
date_format(date,format)可以把日期转换为制定的格式: mysql> select date_format('2008-08-08 22:23:00', '%W %M %Y ...
- DuiLib通用窗口类WindowImplBase封装
.h头文件 class WindowImplBase : public CWindowWnd, public INotifyUI, public IMessageFilterUI, public ID ...
- 简化对象extend拓展
发现对对象继承或拷贝的时候,总是要$点来点去好麻烦,我的解决办法如下: (function(){ Object.prototype.extend = function(o){ $.extend(tru ...
- vs2010 编译curl-7.42.1
curl是一个sftp ssl 等功能工具. dos 进入到curl-7.42.1\lib下来:逐步执行以下操作 call "C:/Program Files/Microsoft Visua ...