收藏 分享(赏)

oracle索引聚簇表的数据加载_1.doc

上传人:kuailexingkong 文档编号:1181736 上传时间:2018-06-17 格式:DOC 页数:2 大小:13.50KB
下载 相关 举报
oracle索引聚簇表的数据加载_1.doc_第1页
第1页 / 共2页
oracle索引聚簇表的数据加载_1.doc_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

1、 ORACLE 索引聚簇表的数据加载一:首先介绍一下索引聚簇表的工作原理:聚簇是指:如果一组表有一些共同的列,则将这样一组表存储在相同的数据库块中;聚簇还表示把相关的数据存储在同一个块上。利用聚簇,一个块可能包含多个表的数据。概念上就是如果两个或多个表经常做链接操作,那么可以把需要的数据预先存储在一起。聚簇还可以用于单个表,可以按某个列将数据分组存储。更加简单的说,比如说,EMP 表和 DEPT 表,这两个表存储在不同的 segment 中,甚至有可能存储在不同的 TABLESPACE 中,因此,他们的数据一定不会在同一个 BLOCK 里。而我们有会经常对这两个表做关联查询,比如说:selec

2、t * from emp,dept where emp.deptno = dept.deptno .仔细想想,查询主要是对 BLOCK 的操作,查询的 BLOCK 越多,系统 IO 就消耗越大。如果我把这两个表的数据聚集在少量的 BLOCK 里,查询效率一定会提高不少。比如我现在将值 deptno=10 的所有员工抽取出来,并且把对应的部门信息也存储在这个BLOCK 里(如果存不下了,可以为原来的块串联另外的块) 。这就是索引聚簇表的工作原理。二:创建过程。索引聚簇表是基于一个索引聚簇(index cluster)创建的。里面记录的是各个聚簇键。聚簇键和我们用得做多的索引键不一样,索引键指向的

3、是一行数据,聚簇键指向的是一个ORACLE BLOCK。我们可以先通过以下命令创建一个索引簇。SQL conn scott/tiger已连接。SQL desc dept名称 是否为空? 类型- - -DEPTNO NOT NULL NUMBER(2)DNAME VARCHAR2(14)LOC VARCHAR2(13)SQL create cluster emp_dept_cluster2 ( deptno number(2) )3 size 10244 /簇已创建。这个名字可以用户定义,不一定叫 deptno,数据类型必须和需要使用这个聚簇的数据类型一致 NUMBER(2)。在这里最关键的一个

4、参数是 size。这个选项原来告诉 Oracle:我们希望与每个聚簇键值关联大约 1024 字节的数据(1024 对于一般的表一条数据没问题) ,Oracle会在用这个数据库块上设置来计算每个块最 多能放下多少个聚簇键。假设块大小为8KB,Oracle 会在每个数据库块上放上最多 7 个聚簇键,也就是说,对应部门10、 20、 30、40、50 、60 和 70 的数据会放在一个块上,一旦插入部门 80,就会使用一个新块。存放的数据是和插入顺序相关的。因 此,SIZE 测试控制着每块上聚簇键的最大个数。这是对聚簇空间利用率影响最大的因素。如果把这个 SIZE 设置得太高,那么每个块上的键就会很少(单位 BLOCK 可以存的聚簇键就少了) ,我们会不必要地使用更多的空间。如果设置得太低,又会导致数据过分串链(一个聚簇键不够存放一条数据) ,这又与聚簇本来的目的不符,因为聚簇原本是为了把所有相关数据都存储在一个块上。向聚簇中放数据之前,需要先对聚簇建立索引。可以现在就在聚簇中创建表,但是由于我们想同时创建和填充表,而有数据之前必须有一个聚簇索引,所以我们先来建立聚簇索引。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报