Managing Non-Volatile Memory in Database Systems
Managing Non-Volatile Memory in Database Systems
一、背景及動機
1、幾種場景的NVM儲存方式
NVM-DIRECT
將nvm放到記憶體匯流排上,直接訪問。資料和WAL日誌都在NVM上。但是CPU CACHE中的內容易失且刷寫到NVM的時機和順序都不受控制,所以為保證持久化及資料一致性需要呼叫命令clwb和sfence來確保。
優勢:日誌量少,輕量日誌,恢復高效。直接從NVM讀取,讀操作簡單。WAL日誌可以不需要,只需要獨特輕量日誌?這個日誌什麼結構及如何工作?事務提交立即將髒頁寫入NVM,只需要少量undo需要回滾。
劣勢:NVM相對於DRAM,高延遲,效能還是有很大差距的。NVM擦寫次數有限,可能造成硬體故障。程式直接應用到NVM上比較困難,任何修改都可能已經持久化到NVM。
BASIC NVM BM
DRAM+NVM的架構,DRAM中快取資料頁並在記憶體中修改,以頁為單位將其刷寫到NVM或從其讀取。
本文在DRAM+NVM基礎上,設計新的NVM BUFFER管理機制。
二、解決方案
同樣以三層儲存架構,利用NVM位元組可定址特性,將資料頁分割成一個個cache line大小(64位元組),以cache line大小為單位進行刷寫和讀取。
Cache line page
頁頭資訊包括:nvm:頁型別;resident:bitmap表,用於表示哪個cache line block已經載入到記憶體,1表示載入,0表示未載入。dirty:表示哪個cache line block已經變髒,1表示髒,0表示未修改。pId:頁號?,r:?,d:?
Mini page
Cache line grained page透過僅載入需要的cache line減小頻寬消耗。然而,頁面在記憶體中仍然是頁大小,消耗DRAM大小並沒減少。本文又提出一種頁結構min page。在記憶體中頁面沒有空洞。頁頭資訊新增count:表示該頁面記憶體中有幾個cache line;slot陣列用來實現間接定址,儲存物理cache line ID。元組在記憶體中連續。Full:比如圖4,當前mini page有16個cache line,cache line“San Francisco”是物理頁第255個cache line,載入到記憶體中的第3個,即slot為2,因此slot陣列中儲存:位置2對應索引255。當都用完時,需要申請一個full page,而full欄位儲存指向full page的指標;然後將mini page中內容複製到full page;最後buffer管理器的page map表更新指向full page。
透過函式 void* MakeResident(Page *p, int offset, int n)訪問頁內資料:Page *p為入參(物理頁?)返回記憶體中指定offset位置開始n個位元組。
Full page情況:指定的cache lines已載入,返回cache lines的指標。
Mini page:檢索請求cache line的slots,如果沒有在記憶體,則載入到記憶體,然後新增到slot array。否則返回cache line上offset的指標。
這個函式需要保證,返回的記憶體是連續的。
Pointer swizzling
使用物理指標替代頁號。par:8個位元組,儲存父節點指標;cnt:swizzled頁個數。Swizzled leaf頁即PID為7的頁替換出記憶體時:透過par定位到父節點,將父節點的cnt減去1,將ptr重新替換成頁號。透過off域找到指標位置?
三層管理機制
SSD儲存冷資料。只在DRAM中訪問(讀寫)資料頁,透過WAL日誌確保永續性,當DRAM中資料頁被驅逐時,根據資料冷熱程度要麼寫入NVM,要麼寫入SSD。
也需要類似DRAM中的頁表定位NVM中頁。為減小消耗,將這些兩個頁表合併成一個。
1) 初始時頁都在SSD上,當一個事務訪問這個頁時,以頁為單位整體載入到DRAM中,不需要寫入NVM。
2) 只有從DRAM驅逐時才會寫入NVM。NVM資料頁載入到DRAM可使用cache line page結構。
3) 當DRAM沒有空閒slot時需要驅逐資料頁,為新頁騰出空間。首先執行DRAM驅逐,保持最熱資料在DRAM,採用clock演算法選擇哪個資料頁被替換。DRAM中選中被驅逐頁,且該頁不在NVM,那麼進入NVM admission階段。透過admission set定位最近訪問的資料頁,判斷頁是否進入NVM:
4) 檢查該頁是否在佇列中,若在則從set中刪除並寫入NVM。
5) 否則,將其加到set中,頁只在SSD中
6) 第三階段,將NVM中頁驅逐並寫入SSD。同樣適用clock演算法。
組合頁表
地址欄位同樣可以儲存nvm中地址,這樣可以透過該指標直接訪問NVM中資料頁。該頁表在DRAM中,系統重啟後需要重構,透過遍歷NVM中所有資料頁進行重構。
三、原文及參考
Managing Non-Volatile Memory in Database Systems
https://blog.csdn.net/u013129143/article/details/83829600
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31493717/viewspace-2706356/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- CSCI235 – Database SystemsDatabase
- Oracle Database Memory StructuresOracleDatabaseStruct
- Oracle Database In-MemoryOracleDatabase
- [轉]ABAP Memory/SAP Memory/Shared Buffer/DatabaseDatabase
- Oracle 20c 新特性:自主的 In-Memory 管理 - Self-ManagingOracle
- The Self-Managing Database: Automatic Performance Diagnosis(一)原文翻譯DatabaseORM
- Oracle Database In-Memory Certified with EBS 12.2OracleDatabase
- [江楓]In Memory Undo與logical standby databaseDatabase
- Oracle_TimesTen_and_In-Memory_Database_Cache_11g_Ed_1OracleDatabase
- iOS:Managing the KeyboardiOS
- 管理Managing SQL ProfilesSQL
- PostgreSQL mail list patch:Non-volatile WAL BUFFERSQLAI
- Managing Namespaces in VB.Netnamespace
- Incorrect MEMORY_MAX_TARGET (> Available RAM) Can Lead To Database HangsAIDatabase
- Go-ethereum 原始碼解析之 go-ethereum/ethdb/memory_database.goGo原始碼Database
- Error 945 Database cannot be opened due to inaccessible files or insufficient memory or disk spaceErrorDatabase
- Managing Startups: Best Blog Posts
- Managing Rails Apps at Massive ScaleAIAPP
- android tv-Managing User InteractionAndroid
- CS 551 Systems Programming
- 騰訊冷啟動論文閱讀《Enhancing User Interest based on Stream Clustering and Memory Networks in Large-Scale Recommender Systems》REST
- Oracle Database on Unix AIX,HP-UX,Linux,Mac OS X,Solaris,Tru64 Unix Operating Systems Installation aOracleDatabaseAILinuxMac
- Oracle ASM Cluster File Systems (ACOracleASM
- Recommendation Systems Basic Notes
- 【OH】3 Managing Oracle Cluster Registry and Voting DisksOracle
- 播布客視訊-Managing Indexes筆記Index筆記
- memory
- EIE4432 Web Systems and TechnologiesWeb
- The Nature of Code: Simulating Natural Systems with Processing
- How to Recreate the OraInventory on UNIX Systems [ID 472854.1]AI
- Multiple-Process Oracle Systems (107)Oracle
- 【翻譯】控制檔案管理(Managing Control Files)
- 「Matrix Factorization Techniques for Recommender Systems」- 論文摘要
- MACH SYSTEMS—匯流排介面轉換工具Mac
- OOM(Out Of Memory)OOM
- Memory Management in RustRust
- java out of memoryJava
- Managing multiple archive log destinations with RMAN (Doc ID 443814.1)Hive