数据库系统实现(缓存失效)

缓存失效的问题,数据直接请求到文件系统,对IO的影响巨大。

1、大量的不存在的KV进行查询,导致CACHE失效,请求直接到文件IO操作上。增加NULL的记录,需要开辟新的空间保存NULL的情况,同时又更新的策略和淘汰的策略。

2、CACHE不存在,文件中有,多个请求在IO数据没有进入到CACHE中,需要增加数据相同的判断,可以通过检查CACAE ID是否存在,PAGEID+FILEID+CACHEID+FLAG的唯一性进行判断是否需要读盘,同样有更新和淘汰的策略。对于INDEX的情况,在BUFFERLIST内存中中没有的话,需要进行索引文件读取,没有缓存的支持,只能读当前读的TREENODE点进行缓存,数据结构中增加一个节点的数据缓存,且只能支持一个TREENODE。同一TREENODE数据的重复读取可以只进行一次IO,后续都是读内存,如果设计多个TREENODE的数据,设计中多了缓存设计,本身HOTKEY就有CACHE设计,同时BUFFERLIST也是缓存设计,再增加缓存设计有多余,特别是内存容量还是有限制的。

4、HOTKEY CACHE的 更新,当新的KV对进入到HASHSERVICE TASK中,需要检查HOTKEY是否在缓存中,如果有,进行数据更新。

5、采用的缓存淘汰算法,数据量大的使用WINDOW-TINY LFU算法,数据量小的使用LRU算法,主要从更新的性能代价来进行衡量。频繁更新且数据量比较小的情况下,建议还是使用经典的LRU算法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值