Bucket、Hash Chain List
這周在看譚老師關于latch的視頻,其中涉及到 Bucket、Hash Chain List和X$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.
總結
以上是生活随笔為你收集整理的Bucket、Hash Chain List的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ERROR:cannot load fl
- 下一篇: html单元格分割,html – 拆分t