System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于RocksDB数据库写放大的优化方法技术_技高网

一种基于RocksDB数据库写放大的优化方法技术

技术编号:40466512 阅读:11 留言:0更新日期:2024-02-22 23:20
本发明专利技术涉及数据库技术领域,具体为一种基于RocksDB数据库写放大的优化方法,包括以下步骤:键值分离,使用较小的读取放大器以提高查找性能,使用单独日志文件存储值;日志优化,值日志写入缓冲区,优化LSM‑Tree日志,优化垃圾回收机制;有益效果为:本发明专利技术提出的基于RocksDB数据库写放大的优化方法,采用键值分开的形式,将占用空间较大的值内容使用标识值实际内容的地址代替,大大降低了LSMTree在写入数据时遇到的写放大造成的资源损耗;使用更为完整和优化的配套日志系统,把写入时的数据按照新的类型存储到日志中,保证了在宕机崩溃时对内存中数据的保护。

【技术实现步骤摘要】

本专利技术涉及数据库,具体为一种基于rocksdb数据库写放大的优化方法。


技术介绍

1、rocksdb是一个基于lsmtree(log-structured-merge tree)为内核的数据库,将数据库的随机写改为顺序写,大大提高了写的速度。但是基于lsmtree实现的存储引擎在提供优秀的写性能之外,也存在着其他非常多的问题,其中一个非常严重的是写放大的问题。

2、现有技术中,写放大问题发生在rocksdb的compaction过程中,因为需要将相同的key-value反复读取与写入多次而造成的放大问题。写放大问题的存在会对ssd寿命产生非常严重的影响,同时也会导致过多的系统硬件的资源被消耗,比如在频繁的读取与写入时的cpu和io的消耗。因此我们需要采取某种措施,对rocksdb的写放大问题进行优化。


技术实现思路

1、本专利技术的目的在于提供一种基于rocksdb数据库写放大的优化方法,以解决上述
技术介绍
中提出的写放大问题带来的效率损耗、时间成本、资源损耗、硬件损耗等问题。

2、为实现上述目的,本专利技术提供如下技术方案:一种基于rocksdb数据库写放大的优化方法,所述方法包括以下步骤:

3、键值分离,使用较小的读取放大器以提高查找性能,使用单独日志文件存储值;

4、日志优化,值日志写入缓冲区,优化lsm-tree日志,优化垃圾回收机制。

5、优选的,使用较小的读取放大器以提高查找性能的具体操作步骤包括:

<p>6、在查找过程中,在lsmtree中搜索键和值的位置,一旦找到,将发出另一个读取来检索该值,虽然使用额外的i/o来检索该值,另外lsmtree的很大一部分缓存在内存中,因此每次查找只需要一个随机读取用于检索值,获得比rocksdb更好的查找性能。

7、优选的,使用单独日志文件存储值的具体操作步骤包括:

8、键值分离以后,键值的存储分别为:键存储在lsmtree中,而值存储在一个单独的值日志文件log中,在lsmtree中与键一起存储的人工值并不是实际的值,而是实际值的地址;

9、当用户插入键值对时,该值首先附加到log中,然后将键与值的地址一起插入到lsmtree中,删除一个键只需将其从lsm树中删除,而无需访问log,log中的所有有效值在lsm-树中都有相应的键;log中的其他值是无效的,将被垃圾收集;

10、当用户查询一个键时,首先在lsm树中搜索该键,如果找到,则检索相应值的地,从log中读取该值。

11、优选的,值日志写入缓冲区的具体操作步骤包括:

12、对于每个put()方法,通过使用write()方法系统调用将该值附加到log中,在用户空间缓冲区中缓冲值,并且只在缓冲区大小超过阈值或用户请求同步插入时刷新缓冲,将值日志写入缓冲区只会发出大的写操作,并减少write()方法的系统调用的数量;对于查找,首先搜索log缓冲区,如果在缓冲区没有找到,实际上从log中读取。

13、优选的,优化lsm-tree日志的具体操作包括:

14、定期将log的头记录在lsmtree中,作为键值对<head-maker,head-log-offset>,当打开数据库时,先从存储在lsmtree中的最近的头部位置开始对log进行扫描,并继续扫描直到log的结尾。

15、优选的,优化垃圾回收机制的具体操作包括:

16、构建一个轻量级的在线垃圾收集器,当在log中存储值时,同时存储相应的键和值,也就是将<keysize、valuesize、key、value>类型的元组存储在log中。

17、与现有技术相比,本专利技术的有益效果是:

18、本专利技术提出的基于rocksdb数据库写放大的优化方法,采用键值分开的形式,将占用空间较大的值内容使用标识值实际内容的地址代替,大大降低了lsmtree在写入数据时遇到的写放大造成的资源损耗;使用更为完整和优化的配套日志系统,把写入时的数据按照新的类型存储到日志中,保证了在宕机崩溃时对内存中数据的保护。

本文档来自技高网
...

【技术保护点】

1.一种基于RocksDB数据库写放大的优化方法,其特征在于:所述方法包括以下步骤:

2.根据权利要求1所述的一种基于RocksDB数据库写放大的优化方法,其特征在于:使用较小的读取放大器以提高查找性能的具体操作步骤包括:

3.根据权利要求2所述的一种基于RocksDB数据库写放大的优化方法,其特征在于:使用单独日志文件存储值的具体操作步骤包括:

4.根据权利要求1所述的一种基于RocksDB数据库写放大的优化方法,其特征在于:值日志写入缓冲区的具体操作步骤包括:

5.根据权利要求1所述的一种基于RocksDB数据库写放大的优化方法,其特征在于:优化LSM-Tree日志的具体操作包括:

6.根据权利要求1所述的一种基于RocksDB数据库写放大的优化方法,其特征在于:优化垃圾回收机制的具体操作包括:

【技术特征摘要】

1.一种基于rocksdb数据库写放大的优化方法,其特征在于:所述方法包括以下步骤:

2.根据权利要求1所述的一种基于rocksdb数据库写放大的优化方法,其特征在于:使用较小的读取放大器以提高查找性能的具体操作步骤包括:

3.根据权利要求2所述的一种基于rocksdb数据库写放大的优化方法,其特征在于:使用单独日志文件存储值的具体操作步骤包括:

【专利技术属性】
技术研发人员:夏子扬时云智
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1