LinuxEye - Linux系统教程

LinuxEye - Linux系统教程

当前位置: 主页 > 数据库 >

oracle聚簇cluster

时间:2012-07-01 00:47来源:未知 编辑:admin 点击:
聚簇cluster 是 存储表数据段一种方法。对于单个表,一个聚簇是将某个表的一个列或一组列上具有相同值得记录存放在一个物理块或一组连续的物理块中,以提高该列或列组的查 询速度
聚簇cluster
是 存储表数据段一种方法。对于单个表,一个聚簇是将某个表的一个列或一组列上具有相同值得记录存放在一个物理块或一组连续的物理块中,以提高该列或列组的查 询速度;对于一组表,一个聚簇是将多个表上具有同一公共列值的数据行物理地存储在一个或一组物理块中,以提高存储性能;这些列即构成聚簇码。
特点:
·相同列值的数据存储在一个或相邻的一组物理块中,大大加快物理读写性能;
·聚簇码在一个物理块中仅需存储一次,大大减少了数据冗余,节省了空间
·一个表只能加入一个聚簇
·聚簇对于用户透明,隐藏了数据复杂性
·聚簇码的值应相对稳定,以减少修改聚簇码所引起的维护开销
·每个聚簇码的平均记录数不能太少,否则聚簇效益不明显,甚至浪费块空间
SQL> create tablespace data01 datafile '/u01/data01.dbf' size 100m;
SQL> create cluster clu_stu_sc (sno number(6)) tablespace data01;
SQL> create index ind_clu_sc on cluster clu_stu_sc;
建立聚簇,准备sno列为聚簇码存储student和sc表,再立即为聚簇建立一个聚簇索引,否则使用聚簇的表中不能被插入数据。
SQL> create table student (sno number(6),sname char(8),sdept char(4)) cluster clu_stu_sc(sno);
建立聚簇表,使用指定聚簇,聚簇码列数据类型定义要与聚簇定义相同
SQL> create table student1 cluster clu_stu_sc (sno) as select * from student;
SQL> drop table student;
SQL> rename student1 to student;
对已存在的表不能直接应用聚簇,应先建立原表的复制表(建表时指定使用聚簇),复制表建立后再删除原表,并重命名复制表为原表名。
SQL> create table sc(sno number(6),cno char(8),grade number(3)) cluster clu_stu_sc(sno);
建立多聚簇表,使用指定聚簇
 
SQL> select cluster_name,tablespace_name,single_table from dba_clusters
where cluster_name='CLU_STU_SC';
CLUSTER_NAME                   TABLESPACE_NAME                SINGLE_TAB
------------------------------ ------------------------------ ----------
CLU_STU_SC                     DATA01                             N
查询系统中指定聚簇相关情况
 
SQL> select substr(cluster_name,1,16),substr(clu_column_name,1,6),substr(table_name,1,8),
substr(tab_column_name,1,8) from dba_clu_columns where cluster_name='CLU_STU_SC';
SUBSTR(CLUSTER_NAME,1,16)        SUBSTR(CLU_C SUBSTR(TABLE_NAM SUBSTR(TAB_COLUM
-------------------------------- ------------ ---------------- ----------------
CLU_STU_SC                       SNO          BIN$hKmv         SNO
CLU_STU_SC                       SNO          BIN$hKmv         SNO
CLU_STU_SC                       SNO          STUDENT         SNO
CLU_STU_SC                       SNO          SC                SNO
查询系统中指定聚簇以哪些表的那些列为聚簇码
SQL> drop cluster clu_stu_sc including tables;
聚簇中有表,则删除聚簇时应指定including参数,聚簇删除,表也被删除。

转载请保留固定链接: https://linuxeye.com/database/662.html

------分隔线----------------------------
标签:聚簇
栏目列表
推荐内容