ORACLE索引组织表学习(五)

2014-11-24 12:51:14 · 作者: · 浏览: 7
romdual;

3970128

9559344(没有/*+append*/提示的普通加载)

我们观察到,对组织索引表直径路径加载并没有减少redo的产生量。

我们对比插入组织索引表与堆栈表所产生的拴与锁的对比,还能看到插入组织索引表需要更多的资源。实际上对表进行DML操作都会引起更大的资源消耗。

这也说明了 组织索引表的一些使用场所。

Index-Organized Tableswith Row Overflow Area

B-tree 索引项通常是比较小,因为每一个索引项的组成仅是键值和rowid。 但是,在索引组织表,B-tree 索引项可能会变得比较大,因为其中包含了整个数

应用程序操控索引组织表的方式与操控普通表相同——使用SQL 命令。但

是,数据库系统的通过操控对应的B-tree 索引来执行所有的操作。

下表显示了索引组织表与普通表的不同。

普通表

索引组织表

rowid 唯一地识别每一行,主键是可选的设定项目。

主键唯一地识别每一行,主键必须被设定。

ROWID 隐含字段中的物理 rowid 可以用于创建第二个索引

ROWID 隐含字段中的逻辑rowid 可以用于创建第二个索引

基于rowid 进行数据访问

基于逻辑rowid 进行数据访问

连续扫描返回所有的行

全索引扫描返回所有的行

可以与其他表一起保存在簇中

不能够保存在簇中

可以包含数据类型位LONG 和LOB 的字段

可以包含数据类型位LOB 的字段,但是不

能包含数据类型位LONG 的字段

组合索引表还有3个重要的参数

select dbms_metadata.get_ddl('TABLE','ORG_INDEX_TABLE') from dual

CREATE TABLE"TIWEN"."ORG_INDEX_TABLE"

( "OBJECT_ID"NUMBER(38,0),

"ONAME" VARCHAR2(30),

"OWNER" VARCHAR2(30),

"STATUS" VARCHAR2(30),

PRIMARY KEY ("OBJECT_ID") ENABLE

) ORGANIZATION INDEX NOCOMPRESSPCTFREE 10 INITRANS 2 MAXTRANS 255 LOGGING

STORAGE(INITIAL 65536 NEXT 1048576MINEXTENTS 1 MAXEXTENTS 2147483645

PCTINCREASE 0 FREELISTS 1 FREELISTGROUPS 1 BUFFER_POOL DEFAULT)

TABLESPACE "USERS"

PCTTHRESHOLD 50

主键总是要存在索引叶结点块上

在一个8k的数据块上,PCTTHRESHOLD 50表示,如果一行数据如果字节数>4k 则这个行的一部分数据存在另一个非索引块上(溢出块),至于哪一些数据存储在块上,还要察看其它的一些参数。

Including 行中的第一列到including指定的列存放在索引块上,剩余部分存放在溢出块。

CREATE TABLE "TIWEN"."ORG_INDEX_TABLE"

( OBJECT_IDNUMBER(38,0),

ONAME VARCHAR2(30),

OWNER VARCHAR2(30),

STATUS VARCHAR2(30),

PRIMARY KEY ("OBJECT_ID") ENABLE

)

Organization index

Include ONAME overflow

这张表的object_id oname存放在索引块上,而剩余部分存放在溢出块上。

产看下面的3个语句的执行计划

select * from org_index_table_1

where object_id=312

select * from org_index_table_1

where oname='I_DIR$SERVICE_UI'

select owner from org_index_table_1

where owner='SYS'

我们并不能从执行计划产看,什么数据在索引块上,什么数据在溢出块上。

但是我们可以看到索引快以及溢出块所在的段

CREATE TABLE TIWEN.ORG_INDEX_TABLE_2

( OBJECT_IDNUMBER(38,0),

ONAME VARCHAR2(30),

OWNER VARCHAR2(30),

STATUS VARCHAR2(30),

PRIMARY KEY (OBJECT_ID) ENABLE

) ORGANIZATION INDEX NOCOMPRESSPCTFREE 10 INITRANS2 MAXTRANS 255 LOGGING

STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS1 BUFFER_POOLDEFAULT)

TABLESPACE USERS

PCTTHRESHOLD 1 INCLUDINGONAME OVERFLOW

PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 LOGGING

STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS1 BUFFER_POOLDEFAULT)

TABLESPACE example

select replace(dbms_metadata.get_ddl('TABLE','ORG_INDEX_TABLE_1'),'"',null) fromdual

insert intoorg_index_table_2

select * from s_table

analyze tableorg_index_table_2 compute statistics

for table

for all indexes

for all indexed columns

select * fromorg_index_table_1

where object_id=312

select * fromorg_index_table_1

where oname='I_DIR$SERVICE_UI'

select owner from org_index_table_2

where owner='SYS'

select * from user_segments where segment_name='SYS_IOT_TOP_71389'

select * from dba_segments where owner='TIWEN' andtablespace_name='EXAMPLE'

select * from dba_segments where segment_