ORACLE 簇

本文介绍Oracle数据库中的簇(cluster)概念及应用,通过将经常一起访问的表存储在一起以减少磁盘I/O次数,提高查询效率。文章详细讲解了簇的创建步骤,并提供了实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cluster的意思是把两个或两个以上具有公共列的表在物理上存放在一起,可以节省空间并且使某些关联操作加快,有hash cluster和index cluster。使用clustered table和普通表没有太大差别,基本是透明,惟独在加数据之前,要先做cluster的index .


-----------------------------------------------------------------------------------------------

 

经常被同时访问的表在物理位置上可以存储在一起。为了将它们存储在一起,就要创建一个簇( c l u s t e r )来管理这些表。表中的数据一起存储在簇中,从而最小化必须执行的I / O次数,改善系统性能。

表中相关的列称为簇键(cluster key)。簇键用一个簇索引(cluster index)来进行索引;对于簇中的多个表,簇键值只存储一次。在把任何行插入簇的表中之前,都必须先创建一个簇索引。对于经常频繁一起查询的表说,使用簇比较方便。在簇中,来自不同表的行存储在同一个块中;因此同将表分开存储相比,连接这些表的查询就可能执行更少的I / O。不过,与对非簇表的相同操作比较,簇表的插入、更新和删除性能要差很多。在聚簇表之前,要判断共同查询这些表的频率。如果这些表总是一起查询,就要考虑把它们合并成一个表而不是聚簇两个表。

 

 

 


1,簇
有公共列的两个或多个表的集合
簇表中的数据存储在公共数据块中

2,簇键
簇中行的唯一标识符
用于获取行

3,创建簇
应首先创建簇,然后创建组成簇的表
CREATE CLUSTER 语句用于创建簇
优点
减少磁盘I/O
节省磁盘空间(表的公共列存储在簇中)
缺点
向表中插入数据时性能降低
有主外键关系的表,可以考虑创建簇,把公共的列放到簇中

4,创建簇的详细例子

--创建簇数据(把公共列创建到簇中)
create cluster cluster_ClassNo
(
vClassNo varchar2(10)
)tablespace users;

--为簇键创建簇索引
create index idxClusterClassNo on cluster cluster_ClassNo;

--创建簇表(主键表、外键表)
//创建主键表——班级表

create table classes
(
vClassNo varcahr2(10),
vClassName varchar2(20)
)cluster cluster_ClassNo(vClassNo);

//创建外键表——学生表

create table students
(
vStudentNo varchar2(10),
vStudentName varchar2(20),
vClassNo varchar2(10)
)cluster cluster_ClassNo(vClassNo);

--撤消簇

drop cluster cluster_ClassNo including tables;

 

————————————————————————————————

————————————————————————————————
SQL> create cluster cluster_ClassNo
2 (
3 vClassNo varchar2(10)
4 )tablespace users;

已创建数据簇。

SQL> create index idxClustClassNo on cluster cluster_ClassNo;

索引已创建。

SQL> create table classes
2 (
3 vClassNo varchar2(10),
4 vClassName varchar2(20)
5 )cluster cluster_ClassNo(vClassNo);

表已创建。

SQL> create table students
2 (
3 vStudentNo varchar2(10),
4 vStudentName varchar2(20),
5 vClassNo varchar2(10)
6 )cluster cluster_ClassNo(vClassNo);

表已创建。

SQL> drop cluster cluster_ClassNo including tables;

数据簇已丢弃。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值