Managing Non-Volatile Memory in Database Systems

问题引出

在这里插入图片描述
传统的架构都随着DATA size的增大而出现 性能悬崖式下降

2.1 NVM Direct

不同结构的 NVM Direct systems 在这篇论文中有详细的研究

J. Arulraj, A. Pavlo, and S. Dulloor. Let’s talk about storage & recovery methodfor non-volatile memory database systems. In SIGMOD, pages 707–722, 2015.
Their work categorizes database
systems into in-place update, log-structured, and copy-on-write
engines

in-place 性能最高同时对NVM硬件磨损最少,所以他们也用这个算法
直接使用NVM

2.2 Basic NVM Buffer Manager

事务只在DRAM执行
memory is divided into fixed-size pages

An NVM-optimized variant
H.Kimura.FOEDUS:OLTPengineforathousandcoresandNVRAM.InSIGMOD, pages691–706,2015.
FOEDUS stores two pointers. One identifies the NVM-
resident copy of the page, the other one (if not null ) the DRAM one.
When a page is not found in DRAM, it is loaded into a buffer pool.
FOEDUS uses an asynchronous process to combine WAL log entries
and merge them into the NVM-resident pages to achieve durability

FOEDUS 中NVM 是用于持久性和cold data的.作者的目的则是想让访问NVM更加频繁…改进BUFFER MANAGER 优化访问NVM

2.3 Recovery

作者并没有对LOGGING做文章,对每个对比的系统都用

We use write ahead logging with redo and undo information
The undo entries enable one to perform rollback and to undo the effect of loser transactions during recovery. The redo entries are used to repeat the effects of committed transactions during recovery if it was not yet persistent

3 NVM BUFFER MANAGEMENT

作者的目标:他们的系统的结构可以 在数据量小的时候 性能跟main-memory database system一样,然后 涉及NVM和SSD的时候性能也不会下降那么多

For this purpose, we design a novel DRAM-resident buffer manager that swaps cache-line-grained data objects between DRAM and NVM
在DRAM的BUFEER管理 管理在DRAM和NVM间交换一个CACHE line 粒度的数据

利用nvm 的可字节寻址可以优化带宽

在这里插入图片描述
在这里插入图片描述
红色 hotdata 橘色warmdata 蓝色 colddata

NVM SSD之间 page-grained swap

DRAM NVM之间 cacheline-grained

分配full-page 和mini-page能更好的利用DRAM空间

cold pages中的hot data object 能被抽离(因为是cacheline-grained)

大概是 在拥有大多数cold data的页存到了nvm中 然后把其中的hotdata 通过cache line grained 抽离回DRAM (因为HOTDATA经常用,放在DRAM很快就能访问到) 只当如果mini page满了,他就放到full page

pointer swizzling scheme

3.1 Cache-Line-Grained Pages

因为NVM低延迟,所以才能应用CLG pages . (如果SSD这种高延迟的,就只好通过一个PAGE粒度(16KB)的读取来降低延迟的带来的开销)

buffer manager之前的做法:分配一个pages在DRAM,只有当事务满了一pages才整个存进去
作者的做法:只分配一个pages在DRAM,当一个事务请求放进去,就给他找一个cache line
在这里插入图片描述

因为CLG 设计很复杂,而且每个数据必须被清晰标明信息,所以作者只在最有影响的几个地方使用CLG(lookup, insert, and delete)其他就整个PAGE

作者说只有小数据访问 用CLG 会比较好,大数据还是用PAGE比较好…佛了嗷
那你用大PAGE的话,你的MINI PAGE咋办,怎么提取hotdata?

3.2 Mini Page

因为 传统的page设计就是,你即使只想访问DISK的一个元组,我也把整个PAGE LOAD 进DRAM
在这里插入图片描述

为了简化访问full pages 和mini page中的一个cache line,用了一个接口(访问就调用这个接口,如果在DRAM就直接返回指针,不在就LOAD IN 然后返回指针)
(When a mini page does not have enough memory left to serve
a request, it is promoted to a full page. 所以有full 这个指针)
在这里插入图片描述
P 要找cache line所在的pages, offset偏移, length n
如果p是FULL page,那指定的cache Lines 就load到DRAM 然后返回一个指向这个lines的指针(if not yet resident)
如果p是MINI PAGE那就先看 slots array 如果没有,就从NVM load进DRAM并且修改slots array,返回指针
访问的必须是连续的(也就是说如果要访问两个以上的CACHE LINE,他们必须是连续存储) 所有mini page是顺序的

如果MINI PAGE满了就所有数据复制到一个新分配的FULL PAGE结构,并且buffer manager 加一个指向新FULL PAGE的指针,然后旧的mini page 只清空数据,但是不消除这个表,也不删除buffer manager里指向他的指针

3.3 Pointer Swizzling

we introduce pointer swizzling, a technique that
reduces this overhead (mainly the page table lookup) by dynam-
ically replacing page ids with physical pointers
动态地把Page ids 替换成 直接指向他的指针,这样就能减少查PAGE ID再根据PAGE ID 去找PAGE 的开销

Pointer swizzling has recently been proposed in the context of
traditional buffer managers (DRAM + SSD/HDD) [ 17 ]



一些前提知识



数据在内存 都是 以虚拟地址形式存在
在这里插入图片描述
在这里插入图片描述

swizzle = replace
Pointer Swizzling = the database addresses in data blocks/records are replaced by virtual memory addresses when the referenced data block/record resides in memory
就是把物理地址替换成内存虚拟地址

在这里插入图片描述
在这里插入图片描述

Problems created by the Pointer Swizzling technique

1.写回去DB的时候必须把指针恢复成DB物理地址
在这里插入图片描述
解决方案:穷举 映射表,或者 用HASH 表

2.想释放一个block 必须先把和他相关联的指针(指向虚拟地址) 恢复成指向物理地址的指针
在这里插入图片描述
在这里插入图片描述

这些被替换后的指针指向的块 叫做 pinned block 因为,他们只有当指针恢复指向DB物理地址的时候才能 release
解决办法:映射表引入Linked List 指向 指向他的第一个BLOCK



前提知识结束回到这篇论文的 POINTer SWIZZLING



在这里插入图片描述
同样的 swizzled leaf是不能直接swap out的
首先是修改父节点的cnt -1,然后把指针修改成PID

4 THREE-TIER BUFFER MANAGEMENT

再加一个SSD
这不会加快速度,但是增加数据存储量

现实中的数据都是hot data cold data 夹杂一起,所以要把少量Hot data放在DRAM ,COLD data放到别的地方, 而NVM的容量有限,如果采用大容量的NVM ,经济开销很大,所以引入SSD.

Our layered approach solves this problem by providing close to
main memory speed for the hot data (provided it fits into DRAM)
while also supporting cheap SSD storage for cold data in a single
system

4.2 repalce Strategies

有两个buffer pools (DRAM 和 NVM)
在这里插入图片描述

Combined Page Table

如果工作量可以在NVM里执行,那么第三层SSD ,就可以不使用了,.所以作者在BUFFER MANAGER中 指向DRAM 或者指向NVM
然后DRAM的PAGE头文件再加一个指针 指向NVM
在这里插入图片描述

The page mapping table is performance critical and is therefore
stored in DRAM.

重启的时候需要扫描整个NVM page 来建立这张表 到DRAM 中,所以需要等待一点时间才能开始进行事务…(在慢的硬件实行不了这个东西例如FLASH,NVM可以)

Reading the page identifiers for 100 GB
of NVM takes slightly less than 1 second

总结一下

他们的BUFFER MANAGER
1初始dram中仅仅有个空白nvm page指针,指向nvm相应的page,但是没有数据,事务来了再去检索nvm 相应page 的相应cache line,所以要有resident信息,dirty信息用来到时候writeback, NVM指针用来按需的取cache line,(16kb的page 有256个cache lien)
2.mini page中的slots指示cache line在nvm的位置

http://www.mathcs.emory.edu/~cheung/Courses/554/Syllabus/2-disks/pointer-swizzling.html

已标记关键词 清除标记
相关推荐
程序员的必经之路! 【限时优惠】 现在下单,还享四重好礼: 1、教学课件免费下载 2、课程案例代码免费下载 3、专属VIP学员群免费答疑 4、下单还送800元编程大礼包 【超实用课程内容】  根据《2019-2020年中国开发者调查报告》显示,超83%的开发者都在使用MySQL数据库。使用量大同时,掌握MySQL早已是运维、DBA的必备技能,甚至部分IT开发岗位也要求对数据库使用和原理有深入的了解和掌握。 学习编程,你可能会犹豫选择 C++ 还是 Java;入门数据科学,你可能会纠结于选择 Python 还是 R;但无论如何, MySQL 都是 IT 从业人员不可或缺的技能!   套餐中一共包含2门MySQL数据库必学的核心课程(共98课时)   课程1:《MySQL数据库从入门到实战应用》   课程2:《高性能MySQL实战课》   【哪些人适合学习这门课程?】  1)平时只接触了语言基础,并未学习任何数据库知识的人;  2)对MySQL掌握程度薄弱的人,课程可以让你更好发挥MySQL最佳性能; 3)想修炼更好的MySQL内功,工作中遇到高并发场景可以游刃有余; 4)被面试官打破沙锅问到底的问题问到怀疑人生的应聘者。 【课程主要讲哪些内容?】 课程一:《MySQL数据库从入门到实战应用》 主要从基础篇,SQL语言篇、MySQL进阶篇三个角度展开讲解,帮助大家更加高效的管理MySQL数据库。 课程二:《高性能MySQL实战课》主要从高可用篇、MySQL8.0新特性篇,性能优化篇,面试篇四个角度展开讲解,帮助大家发挥MySQL的最佳性能的优化方法,掌握如何处理海量业务数据和高并发请求 【你能收获到什么?】  1.基础再提高,针对MySQL核心知识点学透,用对; 2.能力再提高,日常工作中的代码换新貌,不怕问题; 3.面试再加分,巴不得面试官打破沙锅问到底,竞争力MAX。 【课程如何观看?】  1、登录CSDN学院 APP 在我的课程中进行学习; 2、移动端:CSDN 学院APP(注意不是CSDN APP哦)  本课程为录播课,课程永久有效观看时长 【资料开放】 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化。  下载方式:电脑登录课程观看页面,点击右侧课件,可进行课程资料的打包下载。
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页