Managing Non-Volatile Memory in Database Systems

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 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://www.researchgate.net/publication/325373187_Managing_Non-Volatile_Memory_in_Database_Systems

https://blog.csdn.net/u013129143/article/details/83829600

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
机器学习/深度学习 人工智能 自动驾驶
全球名校AI课程库(12)| CMU卡内基梅隆 · 数据库系统进阶课程『Advanced Database Systems』
数据库进阶课程,讨论了很多数据库方向的新技术,适合有数据库基础又想在该方向有深入研究的同学。
2341 1
全球名校AI课程库(12)| CMU卡内基梅隆 · 数据库系统进阶课程『Advanced Database Systems』
|
4月前
|
SQL Oracle 关系型数据库
WARNING: Too Many Parse Errors With error=911 When Running a JDBC Application Connected to an Oracle 19c database
WARNING: Too Many Parse Errors With error=911 When Running a JDBC Application Connected to an Oracle 19c database (
63 2
|
4月前
|
Oracle 关系型数据库
19c 开启Oracle Database Vault
19c 开启Oracle Database Vault
127 1
|
4月前
|
SQL Oracle 关系型数据库
Connect to Autonomous Database Using Oracle Database Tools
Connect to Autonomous Database Using Oracle Database Tools
45 1
|
3月前
|
Oracle 关系型数据库 Linux
Requirements for Installing Oracle Database/Client 19c on OL8 or RHEL8 64-bit (x86-64) (Doc ID 2668780.1)
Requirements for Installing Oracle Database/Client 19c on OL8 or RHEL8 64-bit (x86-64) (Doc ID 2668780.1)
30 0
|
4月前
|
人工智能 Oracle 关系型数据库
一篇文章弄懂Oracle和PostgreSQL的Database Link
一篇文章弄懂Oracle和PostgreSQL的Database Link
|
4月前
|
SQL Oracle 安全
Oracle Database Vault Access Control Components
Oracle Database Vault Access Control Components
35 0
|
4月前
|
Oracle 安全 关系型数据库
What Is Oracle Database Vault?
The Oracle Database Vault security controls protect application data from unauthorized access, and helps you to comply with privacy and regulatory requirements. You can deploy controls to block privileged account access to application data and control sensitive operations inside the database using
32 0
|
4月前
|
Oracle 关系型数据库 Linux
服务器Centos7 静默安装Oracle Database 12.2
服务器Centos7 静默安装Oracle Database 12.2
236 0