闪存数据库缓冲区管理优化

数据库缓冲区管理主要是说明数据库的缓冲区使用什么样的算法,缓冲区的替换算法关乎着数据库很重要的性能,数据库对外提供高性能,需要考虑动态的决定把哪些数据放入缓冲区,哪些数据驱逐出缓冲区。传统的数据库的缓冲区考虑的都是读写一致的策略,但是现在的闪存读写的代价是不一致的,那么需要做的就是面对闪存,缓冲区的替换算法应该如何考虑呢?
在这里插入图片描述

1、缓冲区的替换算法一般存在两种代价,如何设计替换算法需要考虑着两种代价。

一种代价是:从闪存上读数据带缓冲区的代价,即需要增加额外的读操作
一种代价是:将一个脏页从缓存驱逐到闪存上,即需要增加额外的写操作

这两种代价是互斥的,其中一种的代价的增加会对另外一种代价产生影响。举个例子来说,如果为了尽量减少额外的写操作,即减少第二种代价,那么替换算法会选择将更可能多的脏页放在缓冲区,尽可能的替换脏页到闪存上。但是同时,这样做的话,脏页会逐渐沾满缓冲区,那么热的干净页不能在缓冲区中,这样导致缓冲区的命中率会下降,从而增加额外的读操作,即增加第一种代价。同样的道理,反过来,如果替换算法尽可能的提高命中率,替换脏页到闪存上,会增加额外的写操作。

所以,总的来说,这两种的代价是互斥的。

2、这里需要理清的是,为了加快访问速度,所以设置的缓冲区,为了让数据能尽可能在缓冲区中命中,呢么缓冲区一定会尽可能的缓冲热数据,这是设置缓冲区的初衷原则,但是缓冲热数据的过程中可能不同的替换算法,就会导致上述不同的代价。

缓冲区替换算法需要考虑的就是有两点:

驱逐页如何选择,这关系着两种代价
冷热数据如何识别

3、那么引出了几个词汇,简单的介绍一下这几个词语

脏页,在缓冲区命中修改的数据页称为脏页,因为修改,所以和闪存的数据不一致,所以脏页替换出缓冲区是会导致闪存的另外一次写

干净页,和脏页对应,在缓冲区没有被修改过,可能是从闪存上读上来的干净页,这些干净页,表示和闪存上的数据是相同的,那么此时干净页从缓冲区替换是可以直接丢弃,不会导致额外的写。

冷热辨别,数据的冷热辨别一般有两个衡量指标,一个是频率frequency,一个时间recency。也就是说,频率可以表示访问次数,多访问的次数就是热数据,时间表示这段时间访问的,那么就是最近访问的,是热数据。经典的缓存替换算法LRU,基于的就是recency,LFU,基于的就是frequency。

简单给出经典的LRU的算法
在这里插入图片描述
在这里插入图片描述

4、当存储介质变成了闪存之后,为什么需要重新设计面对闪存的缓冲区,给出下面的几个原因

之前的LRU算法,考虑的都是如何提高命中率,因为在之前的设计中,认为代价一和代价二是等价的&#

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值