簇表及簇表管理(Index clustered t…
2014-11-25 18:00
183 查看
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
簇表是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)
平均簇键及相关行所需的空间大小
簇索引的位置(比如存放到不同的表空间)
预估簇的大小
二、创建簇及簇表
在创建簇时,如果未指定索引列,则默认地创建一个索引簇。
如果指定了散列参数,如hashkeys,hashis
或single table
hashkeys,则可以创建散列簇
SQL> show
user;
USER is "ROBINSON"
SQL> create cluster emp_dept_cluster(deptno number(2))
2 pctused
80
3 pctfree
15
4
size 1024
5
tablespace users;
Cluster created.
在上面创建的簇中,一个最重要的参数就是size,需要为size
指定合适的大小,如果size
指定的太大,则每个块仅仅能存放
少量的簇,容易引起空间的浪费,如果指定的太小,则容易产生过多的数据链
创建簇索引的条件
模式中必须包含簇
必须具有create any index的权限
簇索引的作用
用于一个簇键值并返回的包含该簇键值的地址块
SQL> create index emp_dept_cluster_idx
2
on cluster
emp_dept_cluster;
Index created.
创建簇表
SQL> create table dept
2
(deptno number(2)
primary key,
3
dname varchar2(14),
4
loc
varchar2(13)
5
)
6
cluster emp_dept_cluster(deptno);
--使用了cluster关键字后面跟簇名、簇列
Table created.
SQL> create table emp
2
(empno number primary key,
3
ename varchar2(10),
4
job varchar2(9),
5
mgr number,
6
hiredate date,
7
sal number,
8
comm number,
9
deptno number(2) references dept(deptno)
10 )
11
cluster emp_dept_cluster(deptno); --使用了cluster关键字后面跟簇名、簇列
Table created.
对于创建的簇表,与普通表的唯一差别是使用了cluster关键字,即告诉oracle
基表的哪一列将映射到簇表中
查看刚刚创建的簇对象
SQL> select object_name,object_type,status from user_objects order by
object_name ;
簇表是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)
平均簇键及相关行所需的空间大小
簇索引的位置(比如存放到不同的表空间)
预估簇的大小
二、创建簇及簇表
在创建簇时,如果未指定索引列,则默认地创建一个索引簇。
如果指定了散列参数,如hashkeys,hashis
或single table
hashkeys,则可以创建散列簇
SQL> show
user;
USER is "ROBINSON"
SQL> create cluster emp_dept_cluster(deptno number(2))
2 pctused
80
3 pctfree
15
4
size 1024
5
tablespace users;
Cluster created.
在上面创建的簇中,一个最重要的参数就是size,需要为size
指定合适的大小,如果size
指定的太大,则每个块仅仅能存放
少量的簇,容易引起空间的浪费,如果指定的太小,则容易产生过多的数据链
创建簇索引的条件
模式中必须包含簇
必须具有create any index的权限
簇索引的作用
用于一个簇键值并返回的包含该簇键值的地址块
SQL> create index emp_dept_cluster_idx
2
on cluster
emp_dept_cluster;
Index created.
创建簇表
SQL> create table dept
2
(deptno number(2)
primary key,
3
dname varchar2(14),
4
loc
varchar2(13)
5
)
6
cluster emp_dept_cluster(deptno);
--使用了cluster关键字后面跟簇名、簇列
Table created.
SQL> create table emp
2
(empno number primary key,
3
ename varchar2(10),
4
job varchar2(9),
5
mgr number,
6
hiredate date,
7
sal number,
8
comm number,
9
deptno number(2) references dept(deptno)
10 )
11
cluster emp_dept_cluster(deptno); --使用了cluster关键字后面跟簇名、簇列
Table created.
对于创建的簇表,与普通表的唯一差别是使用了cluster关键字,即告诉oracle
基表的哪一列将映射到簇表中
查看刚刚创建的簇对象
SQL> select object_name,object_type,status from user_objects order by
object_name ;
相关文章推荐
- 簇表及簇表管理(Index clustered tables)
- 簇表及簇表管理(Index clustered tables)
- 簇表及簇表管理(Index clustered tables)
- Clustered Index & Non Clustered Index
- 创建和管理 worker
- 2 时间管理和内存管理
- 学生管理系统(不用链表 动态…
- Clustered Index & Non Clustered Index
- Linux对I/O端口资源的管理( …
- EJB 3事务之容器管理事务(CMT)BE…
- 全面分析 Spring 的编程式事务管理…
- 1 任务管理 --转载于电子工程世界
- 存储  管理 概述//CPU(处理器) …
- 第四章 设备管理(Devices Managem…
- 修改index 可以增加挂件区域
- auto_ptr 自動管理配置資源
- 进程 管理
- Hadoop 权限管理
- ubuntu 自启动和服务管理
- 2 时间管理和内存管理