PLSQL_Oracle簇表和簇表管理Index clustered tables(案例)

简介: 2012-06-08 Created By BaoXinjian 一、摘要 簇表是Oracle中一种可选、的存储表数据的方法。使用簇表可以减少磁盘I/O,改善访问簇表的联结所带来的资源开销,本文讲述了簇表的原理、创建以及管理簇表等。

2012-06-08 Created By BaoXinjian

一、摘要


簇表是Oracle中一种可选、的存储表数据的方法。使用簇表可以减少磁盘I/O,改善访问簇表的联结所带来的资源开销,本文讲述了簇表的原理、创建以及管理簇表等。

 

1.簇表

由共享相同数据块的一组表组成。在堆表的管理过程中,对于某些表的某些列和另外的表的某些列经常被用来联结使用,可以将这些表的联结列作为共享的公共列而将这些表组合在一起。

这就是簇表形成的原因。例如,scott模式中,有emp表,dept表,两个表经常使用 deptno列来进行联结,

为此,我们共享deptno列,将emp和dept表组成簇表。组成簇表后,Oracle物理上将emp和dept表中有关每个部门所有行存储到相同的数据块中。

簇表不能等同于SQL server中的簇索引,两者并不是一回事。

SQL server中的簇索引是使得行的存储按索引键来存储,类似于IOT表。

2.簇键

簇键是列或多列的组合,为簇表所共有

在创建簇时指定簇键的列,以后在创建增加的簇中的每个表时,指定相同的列即可

每个簇键值在簇和簇索引中仅仅存储一次,与不同表中有有多少这样的行无关

3.使用簇表的好处。

减少磁盘I/O,减少了因使用联结所带来的系统开销

节省了磁盘存储空间,因为原来需要单独存放多张表,现在可以将联结的部分作为共享列的存储。

4.何时创建簇表

对于经常查询、当DML较少的表

表中的记录经常使用到联结查询

5.创建簇表的步骤

创建簇

创建簇索引

创建簇表

6.创建簇、簇键、簇表时考虑的问题

哪些表适用于创建簇

对于创建簇的表哪些列用作簇列

创建簇时数据块空间如何使用(pctfree,pctused)

平均簇键及相关行所需的空间大小

簇索引的位置(比如存放到不同的表空间)

预估簇的大小

 

二、解析


 

create cluster emp_dept_cluster(deptno number(2))
pctused 80
pctfree 15
size 1024
tablespace users; 

 

create index emp_dept_cluster_idx
on cluster emp_dept_cluster;

 

create table dept
(deptno number(2) primary key,
 dname varchar2(14),
 loc   varchar2(13)
) 
cluster emp_dept_cluster(deptno);   --使用了cluster关键字后面跟簇名、簇列

 

create table emp
(empno number primary key,
 ename varchar2(10),
 job varchar2(9),
 mgr number,
 hiredate date,
 sal number,
 comm number,
 deptno number(2) references dept(deptno)
)
cluster emp_dept_cluster(deptno);  --使用了cluster关键字后面跟簇名、簇列

 

select object_name,object_type,status from user_objects order by object_name ;

 

begin
for x in ( select * from scott.dept )
loop
  insert into dept
    values ( x.deptno, x.dname, x.loc );
  insert into emp
    select * from scott.emp
   where deptno = x.deptno;
end loop;
end;
/

 

 

Thanks and Regards

转载 乐沙弥 - http://blog.csdn.net/leshami/article/details/5925501

ERP技术讨论群: 288307890
技术交流,技术讨论,欢迎加入
Technology Blog Created By Oracle ERP - 鲍新建
相关文章
|
7月前
|
JavaScript 前端开发 Java
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Jsp页面
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Jsp页面
|
7月前
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——OpSessionview实现
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——OpSessionview实现
|
7月前
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——EmpDao层代码
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——EmpDao层代码
|
7月前
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Dept实体类和对应的配置信息
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Dept实体类和对应的配置信息
|
7月前
|
Java
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Action的实现类
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Action的实现类
|
7月前
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——工具类
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——工具类
|
7月前
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——DeptDao层代码
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——DeptDao层代码
|
7月前
|
XML Java 数据库连接
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——hibernate的config文件(hibernate.cfg.xml)
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——hibernate的config文件(hibernate.cfg.xml)
|
19天前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
25天前
|
存储 Oracle 关系型数据库
oracle数据恢复—Oracle数据库文件大小变为0kb的数据恢复案例
存储掉盘超过上限,lun无法识别。管理员重组存储的位图信息并导出lun,发现linux操作系统上部署的oracle数据库中有上百个数据文件的大小变为0kb。数据库的大小缩水了80%以上。 取出&并分析oracle数据库的控制文件。重组存储位图信息,重新导出控制文件中记录的数据文件,发现这些文件的大小依然为0kb。