簇由一组共享相同数据块的多个表组成,它将这些表的相关行一起存储到相同数据块中,这样可以减少查询数据所需的磁盘读取量。创建簇后,用户可以在簇中创建表,这些表成为簇表。
例如,scott用户中有一个员工信息表emp、部门信息表dept,这两个表共享部门编号deptno列。当将emp和dept表组成簇后,在物理上Oracle将emp和dept表中有关每个部门的所有员工信息和部门信息行存储到相同的数据块中。因为簇将不同表的相关行一起存储到相同的数据块中,所以合理使用簇可以帮助减少查询数据所需的磁盘读取量。而对于经常单独使用的表不应该使用簇。
创建簇
创建簇的语法形式如下:
CREATE CLUSTER cluster_name(COLUMN date_type[,COLUMN date_type]...)
[PCTUSED 40 | INTEGER]
[PCTFREE 10 | INTEGER]
[SIZE INTEGER]
[INITRANS 1 | INTEGER]
[MAXTRANS 255 | INTEGER]
[TABLESPACE tablespace_name]
[STORAGE storage]1
例1:
以SYSDBA角色登录并赋予用户相关权限:
GRANT ALTER ANY CLUSTER TO siege;1
然后创建簇:
CREATE CLUSTER cluster_student(sid NUMBER)
PCTUSED 40
PCTFREE 10
SIZE 1024
STORAGE (
INITIAL 128k
NEXT 128k
MINEXTENTS 2
MAXEXTENTS 20
)TABLESPACE learning;