`
PolyAngel
  • 浏览: 114268 次
  • 性别: 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 = :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;
分享到:
评论

相关推荐

    Oracle中聚簇表的使用

    ### Oracle中聚簇表的使用 #### 聚簇表的概念 在Oracle数据库中,聚簇表(Cluster Table)是一种特殊的数据存储结构,它允许多个表通过共享某些相同的列值来存储在同一个数据块内。这种特性使得相关联的数据能够在...

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

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

    Oracle 簇的使用详解

    Oracle 簇是一种数据库优化技术,它允许将一组相关联的表存储在同一组数据块中,从而提高了查询性能,特别是当这些表经常一起被访问时。簇中的表称为簇表,它们共享相同的物理存储,减少了磁盘I/O,提升了数据访问...

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

    Oracle数据库是世界上最广泛使用的数据库管理系统之一,以其高效、稳定和强大的功能著称。本文将深入探讨Oracle的一些核心知识点,包括数据导入导出、系统性能优化、动态SQL、数据安全以及数据库的架构和管理。 1. ...

    Oracle 11g Concepts中英文对照.pdf

    表和表簇是 Oracle 数据库中的基本结构,包括表、索引、表簇等。表和表簇是 Oracle 数据库的基本组成部分,它们共同组成了 Oracle 数据库的逻辑结构。 索引和索引组织表 索引和索引组织表是 Oracle 数据库中的重要...

    关于Oracle9i的电子书

    3. **数据库管理**:"9iDBA1_1.pdf"和"9iDBA1_2.pdf"、"9iDBA2_1.pdf"、"9iDBA2_2.pdf"这些书籍章节可能是关于Oracle9i数据库管理员(DBA)的教程。DBA是负责数据库的安装、配置、监控、备份恢复和性能优化的角色。...

    ORACLE 19C SQL调优指南 中文版 Oracle DBA

    12. **数据库架构调整**:包括表空间管理、数据分布策略(如表分区、簇、位图索引等)、以及数据库块大小的选择,都会影响性能。 13. **SQL优化工具**:Oracle提供了一些内置工具,如SQL Tuning Advisor和Automatic...

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

    6. **段**(Segments):段是由一组连续的数据库块组成的,它是Oracle存储对象(如表、索引、簇等)的基本单位。每个对象都有自己的段。 7. **区**(Extents):区是段内的逻辑分区,由一组连续的数据块组成。当...

    oracle 11g concepts

    “Oracle_11gR2_概念_第6章_数据字典和动态性能视图.pdf”解释了如何利用数据字典获取关于数据库的元数据,以及如何通过动态性能视图监控数据库的运行状态。这对于性能调优和故障排查非常有用。 “Oracle_11gR2_...

    Oracle系统表汇总.docx

    聚簇管理是Oracle数据库管理系统的重要组件,用于管理聚簇的创建、修改、删除等操作。通过dba_clusters视图,可以查询聚簇的基本信息,包括聚簇名称、聚簇类型、创建日期等信息。 快照管理 快照是Oracle数据库中的...

    oracle官网参考资料-最新最完整

    在Oracle官网资料中,你可以找到关于如何编写PL/SQL存储过程、函数、触发器和包的详细指南。 三、数据库管理 Oracle数据库管理包括实例管理、表空间和数据文件的管理、用户和权限管理等。其中,性能优化是数据库...

    Oracle 9i10g 数据库管理详细

    - **ORACLE数据字典**:用于存储关于数据库的元数据信息。 - **表空间与数据文件**:表空间是逻辑上的概念,用于组织数据库的数据存储;数据文件则是物理上的存储单元。 - **ORACLE实例**:代表了数据库运行时的...

    Oracle\Oracle DBA课程安排.doc

    9. **模式管理与数据库对象**:理解模式与账户的关系,创建和管理表、索引,以及其他数据库对象,如聚簇、序列、同义词和快照。 10. **归档模式与恢复**:了解归档与非归档模式,基于事务日志的恢复机制,物理备份...

    Oracle_11gR2_概念 oracle白皮书 concept

    紧接着,对表的基本概念、表簇(包括索引化表簇和哈希簇)进行了详细介绍,还包括表的示例创建与修改语句、Oracle数据类型、完整性约束、对象表、临时表、外部表和表存储等内容。 第3章索引和索引组织表,主要介绍...

    Oracle体系结构简介

    4. **内部存储结构**:Oracle提供了多种存储机制,如分区、索引和簇,以优化数据的访问和存储。分区允许大型表按逻辑划分,提高查询效率。索引则提供了快速查找数据的方法,包括簇索引、表索引和位图索引。簇将相关...

    Oracle电子书资料集锦

    - 了解表、索引、分区和簇的创建与管理。 - 探讨数据库实例和进程模型,理解数据库的启动、运行和关闭过程。 4. **数据库性能优化**: - 学习如何通过索引优化、查询优化器和统计信息提升查询性能。 - 了解SQL ...

    杭州电子科技大学oracle课堂ppt

    "第六讲 Oracle其他数据库对象"可能包括了如簇、物质化视图、同义词等扩展的对象类型,以及如何利用它们优化数据库设计和性能。 "第七讲 PLSQL编程"分为两部分,详细讲解了PL/SQL编程语言,包括流程控制、异常处理...

    Oracle 9i BDA.pdf

    根据提供的信息,我们可以总结出以下关于《Oracle 9i 数据库管理员指南》的关键知识点: ### 一、概览 - **书名**:《Oracle 9i 数据库管理员指南》(V9.0.1) - **作者**:胡欣杰 - **出版社**:北京希望电子出版...

Global site tag (gtag.js) - Google Analytics