Bucket、Hash Chain List

这周在看谭老师关于latch的视频,其中涉及到 BucketHash Chain ListX$bh这几个概念,上网搜索了一些资料,综合看了之后对latch的问题理解增加了不少,现在整理分享如下:

一、 Bucket

1、直接从英文单词的意思理解:

bucket [简明英汉词典]
[5bQkit]
n.桶, 一桶的量, [桶状物]铲斗


桶,如同巧克力店里,不同的桶里装的是不同大小/类型/品牌的巧克力.

2、在oracle当中,bucekt这个“桶”当中存放的是内存块(chunk)。

为什么会出现“桶”?

随着物理内存空间增大,如果都使用整体遍历的方式,要在这么大的空间里查找到合适的内存块,需要消耗很多时间;为了加快查找的速度,Oracle采用了hash 桶的方式:具体来说就是根据file#和block#套进hash函数,获得对应的bucket#(这个bucket就是hash bucket)。然后,在每个bucket下面,以双向链表的方式,挂了多个同规格的内存块,进程在这个双向链表(这个双向链表就是Hash Chain List)里,才按照遍历的方式查找满足要求的内存块,由于查找范围大大地缩小,所以查找速度也大大地提升。

不同的“桶”是根据什么来区分的呢?

答案是:内存块的大小。下面来看一段大牛关于bucket的解说:

1). Bucket可以为空
Bucket0 * *
Bucket1
Bucket2 * * *

如果Bucke1是空的,自然要转向下一个 '非空' 的Bucket"

2).每个bucket存放固定大小的chunk
比如
bucket0 0~20
bucket1 20~40
bucket2 40~80

你现在要一块30的,如果bucket1为空,只好在bucket2里找一个,比如找到一块45的,用掉30,剩下的15进入bucket0.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值