主页 > 知识库 > Oracle 簇的使用详解

Oracle 簇的使用详解

热门标签:word地图标注方向 开封智能外呼系统厂家 百度地图标注素材 阿尔巴尼亚地图标注app 征服眼公司地图标注 外呼线路外显本地号码 征服者火车站地图标注 美图秀秀地图标注 人工智能地图标注自己能做吗
簇其实就是一组表,由一组共享相同数据块的多个表组成,将经常一起使用的表组合在一起成簇可以提高处理效率;在一个簇中的表就叫做簇表。
建立顺序是:簇→簇表→簇索引→数据
创建簇的格式
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、创建簇
复制代码 代码如下:

    create cluster my_clu (deptno number ) 
    pctused 60 
    pctfree 10 
    size 1024 
    tablespace users 
    storage ( 
    initial 128 k 
    next 128 k 
    minextents 2 
    maxextents 20 
    ); 

2、创建簇表
复制代码 代码如下:

    create table t1_dept( 
    deptno number , 
    dname varchar2 ( 20 ) 
    ) 
    cluster my_clu(deptno); 
    create table t1_emp( 
    empno number , 
    ename varchar2 ( 20 ), 
    birth_date date , 
    deptno number 
    ) 
    cluster my_clu(deptno); 

3、为簇创建索引
复制代码 代码如下:

create index clu_index on cluster my_clu;

注:若不创建簇索引,则在插入数据时报错:ORA-02032: clustered tables cannot be used before the cluster index is built
管理簇
使用ALTER修改簇属性(必须拥有ALTER ANY CLUSTER的权限)
1、修改簇属性
可以修改的簇属性包括:
* PCTFREE、PCTUSED、INITRANS、MAXTRANS、STORAGE
* 为了存储簇键值所有行所需空间的平均值SIZE
* 默认并行度
注:
* 不能修改INITIAL和MINEXTENTS的值
* PCTFREE、PCTUSED、SIZE参数修改后适用于所有数据块
* INITRANS、MAXTRANS仅适用于以后分配的数据块
* STORAGE参数修改后仅影响以后分配给簇的盘区
例:
复制代码 代码如下:

    alter cluster my_clu 
    pctused 40 

2、删除簇
复制代码 代码如下:

    drop cluster my_clu; -- 仅适用于删除空簇 
    drop cluster my_clu including tables ; -- 删除簇和簇表 
    drop cluster my_clu including tables cascade constraints ;--同时删除外键约束 

注:簇表可以像普通表一样删除。
3、清空簇
复制代码 代码如下:

truncate cluster my_clu;

注:所有在此簇上的表的数据全部被清空
散列聚簇表
在簇表中,Oracle使用存储在索引中的键值来定位表中的行,而在散列聚簇表中,使用了散列函数代替了簇索引,先通过内部函数或者自定义的函数进行散列计算,然后再将计算得到的码值用于定位表中的行。创建散列簇需要用到HASHKEYS子句。
1、创建散列簇
复制代码 代码如下:

    create cluster my_clu_two(empno number(10) ) 
    pctused 70 
    pctfree 10 
    tablespace users 
    hash is empno 
    hashkeys 150 ; 

说明:
* hash is 子句指明了进行散列的列,如果列是唯一的标示行,就可以将列指定为散列值
* hashkeys 指定和限制散列函数可以产生的唯一的散列值的数量
2、创建散列表
复制代码 代码如下:

    create table t2_emp ( 
    empno number ( 10 ), 
    ename varchar2 ( 20 ), 
    birth_date date , 
    deptno number ) 
    cluster my_clu_two(empno); 

注意:
* 必须设置数值的精度
* 散列簇不能也不用创建索引
* 散列簇不能ALTER:size、hashkeys、hash is参数
不宜用聚簇表的情况
1)如果预料到聚簇中的表会大量修改,聚簇表会对DML的性能产生负面影响
2)非常不适合对单表的全表扫描,因为只能引起对其它表的全表扫描
3)频繁对表进行TRUNCATE和加载,因为聚簇中的表是不能TRUNCATE的,只能TRUNCATE簇
4)如果表只是偶尔被连接或者它们的公共列经常被修改,则不要聚簇表
5)如果经常从所有有相同聚簇键值的表查询出的结果数据超过一个或两个Oracle块,则不要聚簇表
6)如果空间不够,并且不能为将要插入的新记录分配额外的空间,那么不要使用聚簇

标签:孝感 海北 葫芦岛 泰安 淮南 酒泉 宜春 六安

巨人网络通讯声明:本文标题《Oracle 簇的使用详解》,本文关键词  Oracle,簇,的,使用,详解,Oracle,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《Oracle 簇的使用详解》相关的同类信息!
  • 本页收集关于Oracle 簇的使用详解的相关信息资讯供网民参考!
  • 推荐文章