1. 程式人生 > >CMU15 445/645課程-Buffer Pool筆記

CMU15 445/645課程-Buffer Pool筆記

Buffer Pools

使用者對資料庫的最基本要求就是能高效的讀取和儲存資料,但是讀寫資料都涉及到與低速的裝置互動,為了彌補兩者之間的速度差異,所有資料庫都有快取池,用來管理相應的資料頁,提高資料庫的效率,當然也因為引入了這一中間層,資料庫對記憶體的管理變得相對比較複雜。
緩衝池是從磁碟讀取的頁面的記憶體快取,一個記憶體區域。

Page table:

頁中除了儲存使用者資料,還可以儲存控制資訊的資料。

緩衝池是從磁碟讀取的頁面的記憶體快取

(a)它是一個由固定大小頁面陣列組織的記憶體區域。 每個陣列條目稱為一個幀
(b)當DBMS請求頁面時,將精確副本放入其中一個幀中

緩衝池維護的元資料:

(a)頁面表:跟蹤當前在記憶體中的頁面
(b)Dirty-flag:執行緒修改頁面時設定(需要回寫)
(c)Pin-counter:觸控該頁面的執行緒數

Workloads:

1.OLTP:聯機事務處理
短週期
行列式儲存
2.OLAP:聯機事務分析
週期長
複雜
列式儲存

儲存模型:

1.n-ary storage model
優點:
插入,更新,刪除操作快
對於需要整個關係的查詢非常友好
缺點:
資料量大,都傳入記憶體時,容易堵塞
2.column store
優點:
減少IO,因為DBMS只讀需要的資料
缺點:
不利於OLTP

Locks VS Latches

1.Locks
保護資料庫事務免受其他事務影響
負責事務時期Held for transaction duration
允許事務執行或者讓事務推遲直到一個安全的狀態
2.Latches
(a)保護DBMS內部資料結構的關鍵部分不受其他執行緒的影響
(b)負責操作時期Held for operation duration
(c)不需要能夠回滾更改

時鐘演算法: