基于闪存数据库的CCF-LRU算法优化

本文记录了对基于闪存的数据库FlashDB中CCF-LRU算法的优化过程,通过修改数据结构和缓存读写流程,提升了性能。在PostgreSQL数据库上也进行了相似的LRU算法修改,并通过基准测试验证了改进的有效性,减少了写操作,提高了响应时间和缓存命中率。
摘要由CSDN通过智能技术生成

2018.5.28

今天查看了关于flashdb中关于缓存算法的数据结构,发现了3dsim的数据结构是不一样的,然后又去看了一遍3Dsim的数据结构,发现flashdb的数据结构实际是可以优化的。下面对这个点简单的分析下。

首先来看下flashdb的数据结构
在这里插入图片描述
ftop是模拟内存的顺序存储
ptop是哈希表
LRU链表是缓存替换算法
其中引入的frame_id可以看做是数据在内存中的地址。

首先数据通过pageid,通过哈希索引判断是否在内存中存在,然后通过哈希索引找到内存的地址,然后内存的地址通过LRU链表维护替换算法。这样做是没问题的,问题在于LRU维护的时候没有必要用内存地址去在维护,因为如果通过额外的内存地址去维护,那么实际在LRU链表中还得再遍历一遍,这样开销很大,哈希索引的目的也没有实现。

3Dsim则只用两个数据结构,内存中数据的存放除了数据之外,还有LRU链表维护的指针,然后通过一个平衡树索引数据的地址,通过这个平衡树则找到了数据节点所在的地址,通过这个地址则可以找到LRU链表的位置。不需要再次遍历LRU链表的过程。

那么flashdb这种数据结构可以修改吗,应该如何修改?

答案是肯定的,修改也比较简单,在数组中存放的除了pageid,还可以存放LRU的前后指针即可。

那么当哈希索引到数据的地址时,就可以访问数据的LRU的前后指针。
ok,
1、明天在看完整个flashdb的代码之后,对这个数据结构进行修改。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值