Oracle簇

簇其实就是一组表,由一组共享相同数据块的多个表组成,将经常一起使用的表组合在一起成簇可以提高处理效率;在一个簇中的表就叫做簇表

建立顺序是:簇→簇表→簇索引→数据

创建簇的格式

CREATE CLUSTER cluster_name

(column date_type [,column datatype]...)

[PCTUSED 40 | integer] [PCTFREE 10 | integer]

[SIZE integer]

[INITRANS 1 | integer] [MAXTRANS 255 | integer]

[TABLESPACE tablespace]

[STORAGE storage]

SIZE:指定估计平均簇键,以及与其相关的行所需的字节数。

1、创建簇

 

2、创建簇表

 

3、为簇创建索引

 

注:若不创建簇索引,则在插入数据时报错:ORA-02032: clustered tables cannot be used before the cluster index is built

管理簇

使用ALTER修改簇属性(必须拥有ALTER ANY CLUSTER的权限)

1、修改簇属性

可以修改的簇属性包括:

* PCTFREEPCTUSEDINITRANSMAXTRANSSTORAGE

* 为了存储簇键值所有行所需空间的平均值SIZE

* 默认并行度

注:

* 不能修改INITIALMINEXTENTS的值

* PCTFREEPCTUSEDSIZE参数修改后适用于所有数据块

* INITRANSMAXTRANS仅适用于以后分配的数据块

* STORAGE参数修改后仅影响以后分配给簇的盘区

例:

 

2、删除簇

 

注:簇表可以像普通表一样删除。

3、清空簇

 

注:所有在此簇上的表的数据全部被清空

散列聚簇表

在簇表中,Oracle使用存储在索引中的键值来定位表中的行,而在散列聚簇表中,使用了散列函数代替了簇索引,先通过内部函数或者自定义的函数进行散列计算,然后再将计算得到的码值用于定位表中的行。创建散列簇需要用到HASHKEYS子句。

1、创建散列簇

 

说明:

* hash is 子句指明了进行散列的列,如果列是唯一的标示行,就可以将列指定为散列值

* hashkeys 指定和限制散列函数可以产生的唯一的散列值的数量

2、创建散列表

 

注意:

* 必须设置数值的精度

* 散列簇不能也不用创建索引

* 散列簇不能ALTER:sizehashkeyshash is参数

不宜用聚簇表的情况

1)如果预料到聚簇中的表会大量修改,聚簇表会对DML的性能产生负面影响

2)非常不适合对单表的全表扫描,因为只能引起对其它表的全表扫描

3)频繁对表进行TRUNCATE和加载,因为聚簇中的表是不能TRUNCATE的,只能TRUNCATE

4)如果表只是偶尔被连接或者它们的公共列经常被修改,则不要聚簇表

5)如果经常从所有有相同聚簇键值的表查询出的结果数据超过一个或两个Oracle块,则不要聚簇表

6)如果空间不够,并且不能为将要插入的新记录分配额外的空间,那么不要使用聚簇

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值