`
fudehai001
  • 浏览: 487817 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ORACLE 簇的详细介绍

阅读更多
1. 什么是聚簇
    聚簇是根据码值找到数据的物理存储位置,从而达到快速检索数据的目的。聚簇索引的顺序就是数据的物理存储顺序,叶节点就是数据节点。非聚簇索引的顺序与数据物理排列顺序无关,叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。一个表最多只能有一个聚簇索引。
    2. 使用 Oracle 聚簇索引
    聚簇是一种存储表的方法,这些表密切相关并经常一起连接进磁盘的同一区域。例如,表 BOOKSHELF 和BOOKSHELF_AUTHOR 数据行可以一起插入到称为簇(Cluster)的单个区域中,而不是将两个表放在磁盘上的不同扇区上。簇键(Cluster Key)可以是一列或多列,通过这些列可以将这些表在查询中连接起来(例如,BOOKSHELF表和BOOKSHELF_AUTHOR表中的 Title列)。为了将表聚集在一起,必须拥有这些将要聚集在一起的表。
    下面是create cluster命令的基本格式:
create cluster (column datatype [, column datatype]...) [other options];
    cluster的名字遵循表命名约定,column datatype是将作为簇键使用的名字和数据类型。column的名字可以与将要放进该簇中的表的一个列名相同,或者为其他有效名字。下面是一个例子:
create cluster BOOKandAUTHOR (Col1 VARCHAR2(100));
    这样就建立了一个没有任何内容的簇(象给表分配了一块空间一样)。COL1的使用对于簇键是不相干的,不会再使用它。但是,它的定义应该与要增加的表的主键相符。接下来,建立包含在该簇中的表:
create table BOOKSHELF
    (Title VARCHAR2(100) primary key,
    Publisher VARCHAR2(20),
    CategoryName VARCHAR2(20),
    Rating VARCHAR2(2),
    constraint CATFK foreign key (CategoryName) references CATEGORY(CategoryName)
    )
    cluster BOOKandAUTHOR(Title);
    在向BOOKSHELF表中插入数据行之前,必须建立一个聚簇索引:
create index BOOKandAUTHORndx on cluster BOOKandAUTHOR;
    在上面的create table语句中,簇BOOKandAUTHOR(Title)子句放在表的列清单的闭括号的后面。BOOKandAUTHOR是前面建立的聚簇的名字。Title是将存储到聚簇Col1中的该表的列。create cluster语句中可能会有多个簇键,并且在created table语句中可能有多个列存储在这些键中。请注意,没有任何语句明确说明Title列进入到Col1中。这种匹配仅仅是通过位置做到的,即Col1和Title都是在它们各自的簇语句中提到的第一个对象。多个列和簇键是第一个与第一个匹配,第二个与第二个匹配,第三个与第三个匹配,等等。现在,添加第二个表到聚簇中:
create table BOOKSHELF_AUTHOR
    (Title VARCHAR2(100),
    AuthorName VARCHAR2(50),
    constraint TitleFK Foreign key (Title) references BOOKSHELF(Title),
    constraint AuthorNameFK Foreign key (AuthorName) references AUTHOR(AuthorName)
    )
    cluster BOOKandAUTHOR (Title);
    当这两个表被聚在一起时,每个唯一的Title在簇中实际只存储一次。对于每个Title,都从这两个表中附加列。
    来自这两个表的数据实际上存放在一个位置上,就好像簇是一个包含两个表中的所有数据的大表一样。
    3. 散列聚簇
    对于散列聚簇,它只有一个表。它通过散列算法求出存储行的物理存储位置,从而快速检索数据。创建散列聚簇时要指定码列的数据类型,数据行的大小及不同码值的个数。如果码值不是平均分布的,就可能有许多行存储到溢出块上,从而会降低查询该表的SQL语句的性能。
    散列聚簇被用在总是通过主键查询数据的情况,例如要从表 T 查询数据并且查询语句总是是这样:
select * from T where id =;
    这时散列聚簇是一个好的选择,因为不需要索引。Oracle 将通过散列算法得到值 所对应的物理地址,从而直接取到数据。不用进行索引扫描,只通过散列值进行一次表访问。
    散列聚簇语法示例:
CREATE CLUSTER personnel
    ( department_number NUMBER )
    SIZE 512 HASHKEYS 500
    STORAGE (INITIAL 100K NEXT 50K);

    CREATE CLUSTER personnel
    ( home_area_code NUMBER,
    home_prefix NUMBER )
    HASHKEYS 20
    HASH IS MOD(home_area_code + home_prefix, 101);
    CREATE CLUSTER personnel
    (deptno NUMBER)
    SIZE 512 SINGLE TABLE HASHKEYS 500;
分享到:
评论

相关推荐

    Oracle中聚簇表的使用

    Oracle中聚簇表的使用,详细的介绍了oracle中聚簇表的创建及使用。

    高性能动态SQL Oracle数据安全 Oracle 数据库的聚簇技术 等等

    Oracle 数据库的聚簇技术 61 数据库、服务名、实例 63 Oracle内存结构 64 sys用户和system用户 67 Oracle SQL语句 67 GROUPING SETS分组 74 Oracle外部程序触发 75 Oracle数据库的备份与恢复 77 Oracle分区功能提高...

    Oracle中聚簇表Cluster Table使用图文详解

    大家通常oracle中的cluster的理解是不准确的,经常和sql server中的cluster index混淆。Cluster是存储一组table的一种方法,这些table共享同一数据块中的某些相同column,并把不同table在这一共享column上值相同的...

    Oracle 簇的使用详解

    簇其实就是一组表,由一组共享相同数据块的多个表组成,将经常一起使用的表组合在一起成簇可以提高处理效率;在一个簇中的表就叫做簇表。建立顺序是:簇→簇表→簇索引→数据创建簇的格式CREATE CLUSTER cluster_...

    Oracle Index 索引介绍

    NULL 博文链接:https://dolphin-ygj.iteye.com/blog/444147

    oracle9i oracle11g oracle10g 性能调优 基础学习 视频地址

    玩转oracle全套教程 韩顺平 第1讲 oracle基础介绍 4 韩顺平.玩转oracle第2讲.oralce安装 4 韩顺平.玩转oralce第3讲.oracle的基本使用 4 韩顺平.玩转oralce第4讲.oracle用户管理(1) 4 韩顺平.玩转oralce第5讲.oracle...

    Oracle从入门到精通指南

    本文档详细讲解ORACLE数据库的内部体系结构,包含数据库实例,物理存储结构,逻辑存储结构,配置与维护,非常详细地介绍了数据库模式对象的应用于管理,包括表,约束,索引,分区表,分区索引,视图,簇,外部表,...

    Oracle 9i 数据库管理员指南(PDF)

    第2部分:Oracle 服务器进程和存储结构,详细讲解管理Oracle 进程、管理控制文件、管理联机重作日志、管理作业对列、管理表空间、管理数据文件以及撤消空间的管理。第3部分:模式对象,内容包括管理模式对象空间、...

    Oracle四大宝典之四:Oracle 调优入门到精通

    你所管理的Oracle系统性能是否“极好”,你的回答可能是“否”。你的系统在正常运行的情况下是否能降低资源的消耗?...第12章 聚簇 第13章 索引组织表 第14章 重要的ORACLE特性 第15章 分区 第16章 实体化视图

    Oracle_11gR2_2-表和表簇

    Oracle_11gR2_2-表和表簇

    Oracle 10g 学习笔记

    这个笔记是学习oracle数据库过程中整理出来的,比较详细,适合于初学者。 │ oracle与tomcat端口冲突.txt │ Oracle学习笔记.pdf │ Oracle学习笔记.wps │ 安装Oracle后myEclipse不能正常使用.txt │ 手工配置...

    ORACLE9i_优化设计与系统调整

    第一部分 ORACLE系统优化基本知识 23 第1章 ORACLE结构回顾 23 §1.1 Oracle数据库结构 23 §1.1.1 Oracle数据字典 23 §1.1.2 表空间与数据文件 24 §1.1.3 Oracle实例(Instance) 24 §1.2 Oracle文件 26 §1.2.1...

    Oracle数据库恢复工具Oracle Database Unloader(ODU)3.09

    支持各种表,普通的HEAP表,IOT表,聚簇(CLUSTER)表。 DESC表,以显示表的列定义 支持10g及以上的大文件(BigFile)表空间 列出表的分区和子分区 支持表被truncate后的数据恢复 支持表被drop后的数据恢复 支持...

    Oracle系统权限说明

    Oracle系统权限说明,新手必用!... alter any cluster 修改任意簇的权限  alter any index 修改任意索引的权限  alter any role 修改任意角色的权限  alter any sequence 修改任意序列的权限

    Oracle中利用哈希函数提高查询速度

    当表中存在大量键值的时候,你就会开始发现由于存在许多簇...在Oracle 10g 中,你可以将一个数据定义为“natural order” ,那么就可以不用经过排序而以你所希望的顺序来检索哈希簇的数据,从而解决了上面的提出问题。

    Oracle.9i数据库管理员指南(PDF)

    没想到大家学习oracle如此热情,这里再推荐一本学习资料,Oracle.9i数据库管理员指南(PDF),可以深入了解一些oracle特性。 象征性收取推荐分一分O(∩_∩)O~ 当然,你也可以Google一下,自己动手,丰衣足食! 备注少...

    oracle 培训文档1

    oracle 1 基本对象 表(Table)和 视图(View) 索引(Index)和 约束(Constraint) 函数(Function) 过程(Procedure) 其他(同义词,序列,簇,job,等)

    Oracle_11gR2_概念 oracle白皮书 concept

    第 1 章 Oracle 数据库简介 第 2 章 表和表簇 第 3 章 索引和索引组织表 第 4 章 分区、 视图和其它模式对象 第 5 章 数据完整性 第 6 章 数据字典和动态性能视图

Global site tag (gtag.js) - Google Analytics