您好,登錄后才能下訂單哦!
緩存交換
根據目前的硬件發展狀況來看,網絡的傳輸速度比磁盤的讀、寫速度更快,因此,DMRAC集群引入了緩存交換(Buffer Swap)技術,節點間的數據頁盡可能通過網絡傳遞,避免通過磁盤的寫入、再讀出方式在節點間傳遞數據,從而減少數據庫的IO等待時間,提升系統的響應速度。
緩存交換的實現基礎是GBS/LBS服務,在GBS/LBS中維護了Buffer數據頁的相關信息。包括:1. 閂的封鎖權限(LATCH);2. 哪些站點訪問過此數據頁(Access MAP);3. 最新數據保存在哪一個節點(Fresh EP)中;4. 以及最新數據頁的LSN值(Fresh LSN)等信息。這些信息作為LBS封鎖、GBS授權和GBS權限回收請求的附加信息進行傳遞,因此并不會帶來額外的通訊開銷。
下面,以兩節點DMRAC集群(EP0/EP1)訪問數據頁P1為例子。初始頁P1位于共享存儲上,P1的GBS控制結構位于節點EP1上。初始頁P1還沒有被任何一個節點訪問過,初始頁P1的LSN為10000。通過幾種常見場景分析,逐步深入,解析緩存交換的原理。
場景1
節點EP0訪問數據頁P1。
1. 節點EP0的本地LBS向EP1的GBS請求數據頁P1的S LATCH權限
2. 節點EP1的GBS修改P1控制結構,記錄訪問節點EP0的封鎖模式為S LATCH(數據分布節點為EP0),并響應EP0的LBS請求
3. 節點EP0的LBS獲得GBS授權后,記錄獲得的授權模式是S_LATCH,P1數據不在其他節點的Buffer中,發起本地IO請求,從磁盤讀取數據。
IO完成后,修改LBS控制結構,記錄數據頁上的LSN信息
場景2
節點EP1訪問數據頁P1。
1. 節點EP1本地LBS向EP1的GBS請求數據頁P1的S LATCH權限
2. 節點EP1的GBS修改控制結構,記錄訪問節點EP1的封鎖模式為S LATCH(數據分布節點為EP0/EP1),并響應EP1的LBS請求
3. 節點EP1的LBS獲得GBS授權后,記錄獲得的授權模式是S LATCH,根據數據分布情況,EP1向EP0發起P1的讀請求,通過內部網絡從EP0獲取
數據,而不是重新從磁盤讀取P1數據
場景3
節點EP0修改數據頁P1。
1. 節點EP0本地LBS向EP1的GBS請求數據頁P1的X LATCH權限(附加LSN信息)
2. 節點EP1的GBS修改控制結構的LSN值,從EP1的LBS回收P1的權限
3. 修改訪問節點EP0的封鎖模式為S + X LATCH,并響應EP0的LBS請求
4. 節點EP0的LBS獲得GBS授權后,記錄獲得的授權模式是S + X LATCH
5. 節點EP0修改數據頁P1,LSN修改為11000
這個過程中,只有全局Latch請求,數據頁并沒有在節點間傳遞。
修改之后,數據頁P1的LSN修改為11000。如下所示:
場景4
節點EP1修改數據頁P1。
1.節點EP1本地LBS向EP1的GBS請求數據頁P1的X LATCH權限
2.節點EP1的GBS發現P1被EP0以S + X方式封鎖,向EP0發起回收P1權限的請求
3.節點EP0釋放P1的全局LATCH,響應GBS,并且在響應消息中附加了最新的PAGE LSN值
4.節點EP1的GBS收到EP0的響應后,修改GBS控制結構,記錄最新數據保存在EP0,最新的LSN值信息,記錄EP0獲得的授權模式是S + X LATCH
(此時,數據分布節點仍然是EP0/EP1),并授權EP1的LBS
5.節點EP1的LBS收到授權信息后,記錄獲得的授權模式是S + X LATCH,并根據數據分布情況,向節點EP0發起數據頁P1的讀請求
6.節點EP1修改數據頁P1,LSN修改為12000
修改之后,數據頁P1的LSN修改為12000。如下所示:
這個過程中,數據頁P1的最新數據從EP0傳遞到了EP1,但并沒有產生磁盤IO。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。