`
Jack Wu
  • 浏览: 898375 次
  • 来自: ...
社区版块
存档分类
最新评论

Oracle 数据库的聚簇(对理解sap的聚集表有帮助)

阅读更多

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 = :x;

  这时散列聚簇是一个好的选择,因为不需要索引。Oracle 将通过散列算法得到值 :x 所对应的物理地址,从而直接取到数据。不用进行索引扫描,只通过散列值进行一次表访问。
  散列聚簇语法示例:
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;  

 source url:  http://blog.csdn.net/wuhuif/archive/2007/10/16/1827227.aspx

分享到:
评论

相关推荐

    数据库课件关系模型资料

    它的出现引领了数据库系统的发展,从早期的System R和INGRES等代表性系统,到现今广泛应用的Oracle、SQL Server、DB2、Sybase、Informix等主流商业数据库,以及Access、Foxpro、Foxbase等小型数据库管理系统。...

    大数据技术分享 数据仓库建模教程 共8页.pdf

    - **数据源支持**: 支持多种数据源系统,包括Oracle数据库、平面文件、SAP R/3、DB2、Sybase、Informix、SQL Server等。 - **目标系统**: 主要支持Oracle数据库,同时也支持平面文件。 ##### 2. ETL过程设计 - **...

    集成供应链管理解决方案 V2.0.ppt

    此外,Oracle还支持多种操作系统(如Windows、Linux/Unix)、开发工具(如J2EE、Visual Studio .NET)和第三方产品(如IBM的DB2、SAP的NetWeaver)的集成,展现出强大的兼容性和灵活性。 在中国,Oracle有着深厚的...

    商务智能BI的主流厂商与产品架构

    Oracle是全球最大的数据库管理系统供应商之一,其BI产品涵盖了从数据仓库到前端分析工具的完整解决方案: 1. **Oracle Database 10g**:包括Oracle OLAP和Oracle Data Mining等组件,提供高性能的数据存储和处理...

    Tableau实时数仓洞察能力解决方案.pptx

    Tableau是一款强大的商业智能工具,专注于帮助用户查看和理解数据,从而推动企业的数字化转型。Tableau公司的起源可以追溯到2003年,由西雅图的一群创新者创立,目前在全球拥有超过4000名员工,服务于85000多家客户...

    大数据产业链架构及业务解析共页.pptx

    数据存储涉及关系数据库(如Oracle、Sybase)、NOSQL数据库和SQL数据库。此外,还包括分布式文件系统(如Hadoop)、云存储和数据库管理系统。数据管理涉及到数据的预处理,包括数据提取、清洗、标注、转换和加载。 ...

Global site tag (gtag.js) - Google Analytics