簇其实就是一组表,由一组共享相同数据块的多个表组成,将经常一起使用的表组合在一起成簇可以提高处理效率;在一个簇中的表就叫做簇表。

建立顺序是:簇→簇表→簇索引→数据

创建簇的格式

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 簇的使用详解相关推荐

  1. 建oracle簇表,详解ORACLE簇表、堆表、IOT表、分区表

    详解ORACLE簇表.堆表.IOT表.分区表 簇和簇表 簇其实就是一组表,是一组共享相同数据块的多个表组成.将经常一起使用的表组合在一起成簇可以提高处理效率. 在一个簇中的表就叫做簇表.建立顺序是:簇 ...

  2. oracle中的exists 和 not exists 用法详解

    from:http://blog.sina.com.cn/s/blog_601d1ce30100cyrb.html oracle中的exists 和 not exists 用法详解 (2009-05- ...

  3. oracle中调试存储过程,详解Oracle调试存储过程

    详解Oracle调试存储过程 一 调试关键步骤 1.在要调试的存储过程右键,选择编辑以进行调试,截图如下: 2.点击小瓢虫,弹出调试窗口,截图如下: 3.输入7839员工编号,点击确认,进行调试,截图 ...

  4. Oracle入门(一)之入门级知识详解

    转载自 Oracle入门级知识详解 一. Oracle基本介绍 1. 什么时候用Oracle数据库? SQL SERVER 号称百万级数据(一个表的数据),但是其实做多20万条数据 超过20万条数据就 ...

  5. Oracle数据泵备份与恢复 命令 expdp/impdp 用法详解

    Oracle数据泵备份与恢复 命令 expdp/impdp 用法详解 关于expdp和impdp     使用EXPDP和IMPDP时应该注意的事项: EXP和IMP是客户端工具程序,它们既可以在客户 ...

  6. 详解Oracle架构、原理、进程,学会世间再无复杂架构

    详解Oracle架构.原理.进程,学会世间再无复杂架构 学习是一个循序渐进的过程,从面到点.从宏观到微观,逐步渗透,各个击破,对于Oracle, 怎么样从宏观上来理解呢?先来看一个图,这个图取自于教材 ...

  7. Oracle索引梳理系列(五)- Oracle索引种类之表簇索引(cluster index)

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

  8. 视频教程-Oracle数据库从入门到实用教程详解-Oracle

    Oracle数据库从入门到实用教程详解 全栈工程师,2010年从事软件开发以及软件教育培训工作,至今将近十余年,在项目的开发,设计,到管理上积累了丰富的实战经验,教学风格上通俗易懂,问题解答环节一对一 ...

  9. Oracle一张表写多个触发器,详解oracle中通过触发器记录每个语句影响总行数

    详解oracle中通过触发器记录每个语句影响总行数 需求产生: 业务系统中,有一步"抽数"流程,就是把一些数据从其它服务器同步到本库的目标表.这个过程有可能 多人同时抽数,互相影响 ...

  10. oracle导入导出版本规则,Oracle不同版本间的导入导出命令详解 - wangzhuoyan的专栏 - CSDN博......

    wangzhuoyan的专栏 明月松间照,清泉石上流 登录 注册 欢迎 退出 我的博客 配置 写文章 文章管理 博客首页   全站 当前博客  空间 博客 好友 相册 留言 用户操作 [发私信]  [ ...

最新文章

  1. IoT勒索软件会演化为劫持软件
  2. zTree的拖拽排序
  3. 一站式学习Redis 从入门到高可用分布式实践(慕课)第十章 缓存设计与优化
  4. idea2020 需要热部署吗_小微制造企业需要部署MES系统吗?
  5. [html] 能否做到禁止打印页面?如果可以那要怎么做?
  6. Windows Sysinternals Desktops v1.0 发布 - 超简单的虚拟桌面程序
  7. 关于年会抢红包游戏的一个思考
  8. linux SHELL之结构化命令
  9. js中文件写入(字符串写入)_note
  10. 1.几大开发模型区别与联系
  11. Java kryo/protobuf/protostuff序列化 or Json 性能对比
  12. 在Word中如何进行半行输入
  13. Ubuntu 20.04 锐捷客户端安装记录
  14. 基于遗传算法优化极限学习机预测及其MATLAB实现-附代码
  15. IOC/DI、AOP相关原理
  16. java pgm_如何读取Java中的PGM图像?
  17. windowsMobile 注册表136个操作
  18. Html div 打印自动分页,网页打印自动分页
  19. Chrome浏览器安装Adblock Plus插件拦截广告
  20. .Net Framework 4安装失败,提示RGB9RAST_x86.msi或者Windows6.0-KB956250-v6001-x86.msu

热门文章

  1. 程序员最不想让你知道的尴尬瞬间,看完我眼睛都绿了
  2. python_使用marshal模块序列化
  3. 给大家推荐几个程序员必备网站
  4. linux连ftp超时,ftp上传超时的一种解决方案
  5. 在pfSense上使用pfBlockerNG(DNSBL)来阻止广告
  6. Interpreting visually-grounded navigation instructions in real environments论文翻译
  7. 通过定义函数,来实现判断1-100之间奇数的目的
  8. java后端getmonth_Java中的LocalDateTime getMonth()方法
  9. 程序员”脑筋急转弯”
  10. 30天自制操作系统——第二十四天增加命令行窗口