Oracle 簇

索引(Indexing)包含了创建了独立的结构来帮你快速地定位指定的数据。 簇(Clustering)表示,通过将数据物理地定位在某些位置来优化数据库的访问。

Oracle 提供了两种基本的簇机制

a .  索引簇将来自多张表的、拥有同样键值的记录存储在一起,相当于它们已经提前做好链接了。
b.   散列簇将特定的记录存储在一个位置。该位置可以从记录的键值出发通过数学处理推导出来。

1.  索引簇

是将一张或多张表的相关记录存储在同一个数据块中的机制。理论上,这将提高表连接的速度,因为将要进行连接的记录都存储在同一个数据块中。实际上,多表索引簇的价值非常有限,只有当表几乎总是同时被引用时才会适用。,下面是索引簇的一些缺点:

 1.1 : 只针对索引簇中的一张表进行全表扫描会变得更慢,因为索引簇中的其他表的记录也需要被扫描。
 1.2: : 由于维护索引簇需要付出额外的开销,因此插入的速度会更慢。
 1.3 : 表连接获得的性能收益可能很少(理论上)。
下面分析索引簇的结构:
Oracle 簇 - John.Zhou - zhouyou.jun的博客
 

2. 散列簇

如前所说,散列簇中,有一个将簇键值翻译成物理存储地址的数学转换。在Oracle散列簇中,簇键值会被翻译成散列键,拥有相同的散列键的记录会被存储在一起。这意味着Oracle可以在不检索索引(这将带来一定的IO开销)的情况下直接定位到需要的数据块。
    有了散列簇,检索一条记录可能只需要访问一次数据块——包含这条记录的数据块。与此相比,使用B*Tree索引的起码需要访问四次数据块(索引头块、索引分支块、索引叶子块与表数据块).
    在使用散列簇的时候需要考虑下面几点:
2.1  散列键应该具有很高的很高的基数(大量的唯一值)。 唯一键或者主键比较合适做散列键。
2.2  使用散列键查找时,通常应该考虑精确检索而不是范围检索或者LIKE条件。
下面分析散列簇结构:
Oracle 簇 - John.Zhou - zhouyou.jun的博客
 
                                     散列簇的结构,word里面画的真是太丑了,不过能表达意思就好。呵呵
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值