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

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

分享到:
评论

相关推荐

    sap 与 oracle数据库的连接

    因此,了解SAP与Oracle数据库的连接步骤对SAP开发和业务流程的实施具有重要意义。 需要注意的是,在连接Oracle数据库时,需要确保相关目录和文件的权限正确,避免因权限问题而导致连接失败。此外,需要按照正确的...

    Oracle数据库大作业

    【Oracle数据库大作业】是一个关于Oracle数据库在教务管理系统中的应用项目,可能涵盖了数据库设计、实施、优化等...通过研究这个大作业,可以提升数据库管理和开发的技能,对教务管理系统的设计和实现有更深入的理解。

    Oracle数据库体系结构( 中文详细版)

    以上是对Oracle数据库体系结构的基本介绍,深入学习还包括对Oracle的SQL语法、存储过程、触发器、视图、约束、分区表等特性的理解和应用。通过理解这些核心概念,可以更好地管理和优化Oracle数据库,提升系统的稳定...

    查看登录oracle数据库用户记录.docx

    查看登录 Oracle 数据库的用户记录可以帮助数据库管理员监控数据库的访问情况,追踪用户的登录行为,确保数据库的安全性和完整性。此外,查看登录记录也可以帮助数据库管理员诊断和解决数据库性能问题。 使用触发器...

    SAP中oracle数据库的备份恢复.pdf

    在SAP环境中,Oracle数据库的备份和恢复是关键的运维任务,确保数据的安全性和业务连续性。本文将详细介绍如何在SAP中进行Oracle数据库的备份和恢复操作。 首先,我们来看备份过程。在SAP系统中,通常使用SAP提供的...

    Oracle数据库系统应用与开发

    这包括对数据库概念的理解,如数据模型(如层次、网状和关系模型)、表结构、索引、存储过程、触发器等。此外,了解SQL语法,包括DML(数据操纵语言)用于插入、更新和删除数据,以及DDL(数据定义语言)用于创建和...

    Oracle数据库试题100题(附答案)

    总的来说,Oracle数据库试题可以帮助应聘者或数据库管理人员对Oracle数据库有一个全面和深入的了解。通过这些试题,不仅能够加深对Oracle数据库理论知识的理解,还能够提高解决实际问题的能力。

    在线重组Oracle数据库优化关键SAP应用性能

    5. **SAP特定优化**:SAP应用对数据库有特定的访问模式,如频繁的读操作和特定的事务处理。了解这些模式并针对性地调整数据库配置,如缓存大小、并行度等,能进一步提升性能。 6. **监控与调优**:持续监控数据库...

    oracle数据库编程pdf文档教案

    这份"Oracle数据库编程pdf文档教案"提供了从基础到高级的Oracle学习路径,通过5天的学习内容,帮助读者深入理解并掌握Oracle数据库的使用。 在Oracle数据库编程中,首先会涉及到SQL(结构化查询语言),这是与...

    面向SAP的Oracle数据库应用底层架构

    为了更好地理解两者如何协同工作,我们需要对Oracle数据库的基本架构进行深入的了解。 #### Oracle数据库架构的关键组件 ##### 文件存储层 Oracle数据库的核心是文件系统,它主要由三类文件组成: 1. **数据文件**...

    oracle数据库日志查看方法

    本文将详细介绍如何查看Oracle数据库中的各种日志文件,并提供具体的步骤和示例,帮助读者更好地理解和操作。 #### 二、Oracle数据库日志类型 Oracle数据库中有多种类型的日志文件,包括但不限于: 1. **后台进程...

    Oracle数据库表结构导出工具Excel

    总结来说,"Oracle数据库表结构导出工具Excel"通过DBExport软件实现,能够有效地帮助数据库管理员和开发人员快速获取和分享Oracle数据库的表结构信息。通过阅读DBExport的使用手册,用户可以学会如何利用这个工具...

    基于oracle数据库的生产和测试数据库表结构对比工具

    该工具能够自动比较两个数据库之间的表结构差异,从而帮助数据库管理员快速识别并修复这些问题。 工具的核心功能包括: 1. 表结构分析:工具可以深入解析Oracle数据库中的每个表,包括字段名、数据类型、主键、外键...

    oracle 数据库 scott.sql 范例表

    "scott.sql"是一个典型的Oracle数据库示例脚本,它包含了著名的"SCOTT"用户的表和相关数据,这个用户是为了教学和演示目的而设计的。在本文中,我们将深入探讨Oracle数据库的基础知识,以及如何使用"SCOTT"用户和...

    Java导出Oracle数据库数据

    Java 导出 Oracle 数据库数据 Java 是一种流行的编程语言,广泛应用于各种领域。Oracle 是一种关系数据库管理系统,广泛应用于企业级应用中。在实际项目中,数据备份和恢复是非常重要的工作。本文将介绍如何使用 ...

    Oracle数据库设计文档——帮助数据库初学者了解数据库设计

    本文档将深入探讨Oracle数据库的设计原理和实践技巧,帮助新手逐步掌握数据库设计的基本概念和方法。 首先,我们需要理解数据库设计的四个主要阶段:需求分析、概念设计、逻辑设计和物理设计。在需求分析阶段,我们...

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

    以上是Oracle数据库的一些关键知识点,涵盖了从基础操作到高级特性的各个方面,对于理解和管理Oracle数据库非常有帮助。在实际工作中,不断学习和实践这些知识,将有助于提升数据库管理和开发的技能。

    C#版Oracle数据库通用操作类

    `ConnForOracle` 类主要实现了对 Oracle 数据库的基本操作,包括但不限于连接数据库、执行 SQL 语句以及返回结果集等功能。通过此类可以有效地简化数据库操作代码,并提高开发效率。 #### 二、基本属性与构造函数 ...

    oracle数据库基础知识

    Oracle数据库是全球广泛使用的大型关系型...以上是对Oracle数据库基础知识的概览,自学Oracle数据库需要耐心和实践。通过学习这些基本概念和操作,你可以逐步掌握数据库管理的核心技能,从而在IT行业中奠定坚实的基础。

Global site tag (gtag.js) - Google Analytics