日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

oracle buffer block,8 Oracle深度学习笔记——BUFFER CACHE深入一

發布時間:2025/4/5 pytorch 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle buffer block,8 Oracle深度学习笔记——BUFFER CACHE深入一 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

8.Oracle深度學習筆記——BUFFER CACHE深入一

最近項目一直和ORACLE死磕,感覺總是找不到出口,只能多看書少說話了。

先記錄多少是多少吧!

BUFFER CACHE在ORACLE的所有內存池中占了最大空間。

1.??HASH鏈表

Oracle通過HASH算法確定文件中的塊是否在BUFFERCACHE中。

HASH算法在搜索算法中最快的,在內存中搜索數據的算法都是采用HASH算法。

HASH中有一個概念叫做Bucket,數量由參數_db_block_hash_buckets參數設置。

每當要讀取一個數據塊的時候,根據塊艘在的文件、塊號計算一個HASH值。通過HASH值得到BUCKET,就可以得到BUCKET中的內容。

BUCKET中保存一個指向CacheBuffers Chain的鏈表頭的指針。

每個Buffer都有一個BufferHeader叫做Buffer Header (簡稱BH).

HASH值一樣的BUFFERHeader組成鏈表,鏈表叫做CBC鏈表(Cache Buffer Chains)

BUFFERCAHCHE 哈希表的BUCKET中,存放的CBC鏈表頭。

Oracle查找BUFFER的過程大概是這個樣子的:

數據庫要找某個號的塊,那么先根據文件號、塊號計算塊的HASH值,然后通過HASH值找到對應的BUCKET,BUCKET指向CBC鏈頭,然后在鏈表搜索每個BH(文件號,塊號),取出其中的BA,根據BA找個需要的BUFFER。

PS:BH中包含BA( BufferAddress)是塊在BUFFER CACHE中的地址,根據這個地址可以直接訪問BUFFER。

當然,到這里故事并沒有結束,如果遍歷完鏈表沒有找到BUFFER,說明塊沒有在BUFFER中,只能物理讀了。

2.??Latch:Cache Buffers Chain

Oracle機制關于訪問共享內存,需要Latch和Mutex.

搜索列表,訪問BH中的BA,都需要LATCH保護。 CacheBuffers Chian Latch檢查CBC Latch.

想訪問鏈表,必須先申請CBC LATCH,在鏈表中尋找目標BH,需要對BH修改,修改是為了加鎖(Buffer Pin鎖),加鎖完畢后CBC Latch釋放。Buffer Pin鎖保護訪問的Buffer.

CBC Latch期間主要是:搜索鏈表,查找BH,然后修改BH中的Buffer Pin鎖。

主要注意的是一個CBCLatch其實是保護好幾個Bucket的,意味著一個多個鏈表使用了同一Latch,所以這些鏈表不能再同一時間進行搜索了。Oracle這樣的目的是為了節約內存。

查看CBC Latch使用的內存量如下:

sys@PDB1> select to_number(b.addr,'xxxxxxxxxxxxxxxxxxxxx')-to_number(a.addr,'xxxxxxxxxxxxxxxxxxxxx') from(select rownum rid,addr from v$latch_children where name='cache buffers chains'order by addr) a, (select rownum rid,addr from v$latch_children wherename='cache buffers chains' order by addr) b where a.rid=b.rid+1 andrownum<=1;

TO_NUMBER(B.ADDR,'XXXXXXXXXXXXXXXXXXXXX')-TO_NUMBER(A.ADDR,'XXXXXXXXXXXXXXXXXXXXX')

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

192

每個CBC Latch的大小為192個字節。

釋放Buffer Pin鎖的時候,還要修改BH中的Buffer Pin鎖,同樣需要CBCLatch保護。

3.??CBC Latch競爭

l? 多個進程以不兼容模式申請某一CBC Latch,訪問此CBC Latch保護的不同鏈表和不同BH

l? 多個進程以不兼容模式申請某一CBC Latch,訪問此CBC Latch保護的同一鏈表和同一BH

熱鏈和熱塊競爭。

熱鏈競爭可以通過修改_db_block_hash_buckets和_db_block_hash_latches來控制BUCKETS 和LATCH數量,重新計算BUCKET和BH的對應關系。

再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!http://www.captainbed.net

標簽:CBC,HASH,BUFFER,CACHE,BH,鏈表,Buffer,Oracle,Latch

來源: https://www.cnblogs.com/swncz/p/10443514.html

總結

以上是生活随笔為你收集整理的oracle buffer block,8 Oracle深度学习笔记——BUFFER CACHE深入一的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。