`
zhanglu0223
  • 浏览: 21509 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

数据库性能优化2——使用CLUSTER降低关联查询的IO

 
阅读更多

表簇(table cluster)是一个数据库对象,它可以将那些经常在相同数据块中一起使用的表进行物理分组。当你处理那些经常连接在一起进行查询的表时,表簇是特别有效的。一个表簇存储簇键(用于将表连接到一起的列),以及簇表中的列值。因为簇中的表都被储存在相同的数据库块中,所以使用簇工作时,I/O操作就减少了。

使用典型数据簇的目的是为了在硬盘上将应用程序经常一起使用的行存储在一块,当应用程序请求这组行时,oracle只用一个或几个硬盘I/O就能找到所有被请求的行。

1.cluster 可以将两个或多个表捆绑在一起,,cluster是一种数据库结构,在这个结构中,可以将两个或者多个表储存在相同的数据块或段中,加入到cluster中的每个表行将物理地存储在相同的块中,好像这些表在cluster key 处连接起来了一样.通过下面的例子,你将理解cluster如何的工作.

aa 表


SQL> select * from aa;

ID NAME SE AGE

---- ---- -- ----------

01 cc m 20

02 dd f 18

03 ee m 22

04 ff f 21

05 gg f 19

06 hh m 20

已选择6行。

bb表

SQL> select * from bb;

SE LIVING

-- ------

m 11-01

f 11-02

2.

在使用aa,bb表的时候,如果想要将这两个表放到一个cluster中,则可以将这两个


表在sex列上连接起来,在这种情况下,吧sex列称为cluster key ,当完成cluster的

创建后,两个表中的数据将会在cluster中物理地连接起来.在创建cluster的时候有两种选择

:


* index cluster(

默认,需要在其中创建cluster index)


* hash cluster


3.创建cluster的步骤:


1). SQL> create cluster ab_cluster (sex char(2) ) tablespace users;

簇已创建。

上面的语句创建了一个名为ab_cluster的cluster,且将它置于表空间usrs中.因为上面创建的是index cluster ,所以当cluster创建完后,还必须在cluster key 上创建索引.

2). SQL> create index ab_cluster_idx on cluster ab_cluster tablespace users;

索引已创建。

{ 当创建hash cluster的时候,例子如下:

Create cluster ab_cluster (sex char(2) size 8k hashkeys 1000 tablespace users;

参数hashkeys用来定义分配给表的hash]值的数目.指出了在cluster中唯一性cluster key的最大值.}

3).创建参与cluster的表.(aa bb)

SQL> create table aa(id varchar2(4) ,name varchar2(4),sex char(2),age number(2))

cluster ab_cluster (sex);

表已创建.

SQL> create table bb( sex char(2) , living varchar(6))

cluster ab_cluster (sex);


表已创建。


4.删除cluster.

在删除cluster的时候,首先必须删除参与该cluster的表或者使用including tables子句.不能从正在使用的cluster删除表.


SQL> drop cluster ab_cluster including tables cascade constraints;

簇已删除。




转载自:http://blog.csdn.net/doymm2008/archive/2009/12/16/5017733.aspx

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics