CN117725035A - 一种针对lsm树的文件合并方法及相关设备 - Google Patents

一种针对lsm树的文件合并方法及相关设备 Download PDF

Info

Publication number
CN117725035A
CN117725035A CN202410134294.0A CN202410134294A CN117725035A CN 117725035 A CN117725035 A CN 117725035A CN 202410134294 A CN202410134294 A CN 202410134294A CN 117725035 A CN117725035 A CN 117725035A
Authority
CN
China
Prior art keywords
rate
storage
data
file
merging
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202410134294.0A
Other languages
English (en)
Inventor
黄华
朱炳鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alipay Hangzhou Information Technology Co Ltd
Original Assignee
Alipay Hangzhou Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202410134294.0A priority Critical patent/CN117725035A/zh
Publication of CN117725035A publication Critical patent/CN117725035A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书提供了一种针对LSM树的文件合并方法及相关设备。该方法包括:获取与数据库的访问请求对应的数据读取速率和数据写入速率;其中,所述数据库中的存储引擎为基于LSM树存储结构的存储引擎,所述LSM树包括多个存储层,所述多个存储层中的至少部分存储层中存储了若干个文件;将所述数据读取速率和所述数据写入速率分别与预设的速率区间进行对比;根据对比结果,调整所述存储引擎的文件合并限速值,以使所述存储引擎在所述LSM树的多个存储层中存在满足合并条件的目标存储层时,基于不大于调整后的所述文件合并限速值的文件合并速率,对所述目标存储层中存储的文件执行文件合并操作。

Description

一种针对LSM树的文件合并方法及相关设备
技术领域
本说明书一个或多个实施例涉及数据库技术领域,尤其涉及一种针对LSM树的文件合并方法及相关设备。
背景技术
日志结构合并树(The Log-Structured Merge Tree,LSM-Tree)是一种多层存储结构,基于LSM-Tree存储结构的存储引擎可以将写入内存中的数据批量、有序地以文件的形式写入磁盘。磁盘中定义了用于以文件形式存储数据的多个存储层,进一步地,存储引擎可以对多个存储层中存储的文件执行文件合并操作以减少磁盘中的重复数据。
通常情况下,文件合并操作的触发往往依据预先配置的合并条件,只要多个层存储中的任一存储层满足合并条件,存储引擎就会对该层存储的文件执行文件合并操作。如此一来,若大量存储层均满足合并条件,频繁的文件合并操作势必会占用大量的CPU资源和IO资源,从而影响数据库对前台访问请求的执行效率,影响用户体验。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种针对LSM树的文件合并方法及相关设备。
第一方面,本说明书提供了一种针对LSM树的文件合并方法,所述方法包括:
获取与数据库的访问请求对应的数据读取速率和数据写入速率;其中,所述数据库中的存储引擎为基于LSM树存储结构的存储引擎,所述LSM树包括多个存储层,所述多个存储层中的至少部分存储层中存储了若干个文件;
将所述数据读取速率和所述数据写入速率分别与预设的速率区间进行对比;
根据对比结果,调整所述存储引擎的文件合并限速值,以使所述存储引擎在所述LSM树的多个存储层中存在满足合并条件的目标存储层时,基于不大于调整后的所述文件合并限速值的文件合并速率,对所述目标存储层中存储的文件执行文件合并操作。
第二方面,本说明书提供了一种针对LSM树的文件合并装置,所述装置包括:
获取单元,用于与数据库的访问请求对应的数据读取速率和数据写入速率;其中,所述数据库中的存储引擎为基于LSM树存储结构的存储引擎,所述LSM树包括多个存储层,所述多个存储层中的至少部分存储层中存储了若干个文件;
对比单元,用于将所述数据读取速率和所述数据写入速率分别与预设的速率区间进行对比;
限速单元,用于根据对比结果,调整所述存储引擎的文件合并限速值,以使所述存储引擎在所述LSM树的多个存储层中存在满足合并条件的目标存储层时,基于不大于调整后的所述文件合并限速值的文件合并速率,对所述目标存储层中存储的文件执行文件合并操作。
相应地,本说明书还提供了一种计算机设备,包括:存储器和处理器;所述存储器上存储有可由所述处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行上述第一方面所述的针对LSM树的文件合并方法。
相应地,本说明书还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行如上述第一方面所述的针对LSM树的文件合并方法。
综上所述,本申请可以先获取与数据库的访问请求对应的数据读取速率和数据写入速率。其中,该数据库的存储引擎可以为基于LSM树存储结构的存储引擎,该 LSM树包括多个存储层,多个存储层中的至少部分存储层中存储了若干个文件。进一步地,存储引擎可以将上述数据读取速率和数据写入速率分别与预设的速率区间进行对比。然后,可以根据对比结果,调整存储引擎的文件合并限速值,使得存储引擎在上述LSM树的多个存储层中存在满足合并条件的目标存储层时,基于不大于调整后的文件合并限速值的文件合并速率,对该目标存储层中存储的文件执行文件合并操作。如此,本申请通过检测数据库的前台读写压力,并基于当前的读写压力动态调整存储引擎后台的文件合并操作的限速值,以使存储引擎基于不大于该限速值的文件合并速率来执行文件合并操作,可以有效避免后台的文件合并操作占用过多的系统资源,进而保证前台的读写性能。
附图说明
图1是一示例性实施例提供的一种针对LSM树的文件合并系统的架构示意图;
图2是一示例性实施例提供的一种针对LSM树的文件合并方法的流程示意图;
图3是一示例性实施例提供的一种文件合并限速值的调整方法的流程示意图;
图4是一示例性实施例提供的一种针对LSM树的文件合并装置的结构示意图;
图5是一示例性实施例提供的一种计算机设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
需要说明的是,本申请中所述的“多个”是指两个或者两个以上。
首先,对本说明书中的部分技术用语进行解释说明,以便于本领域技术人员理解。
(1)日志结构合并树(The Log-Structured Merge Tree,LSM-Tree)是一种多层存储结构,是较为常见的分层存储引擎数据组织方式。其中,LSM树的多层存储结构具体可以包括:内存,以及非易失性存储设备(例如磁盘或硬盘,下面以磁盘为例进行说明)中定义的多个存储层(例如L0-Ln层)。
在基于LSM树的多层存储结构中,存储引擎执行数据库接收到的访问请求时,会先将与本次请求对应的数据写入内存中,具体可以写入MemoryTable(内存表)中。当某个MemoryTable中写入的数据量达到一定阈值时,或者说当该MemoryTable被写满时,该MemoryTable中的数据就会通过存储引擎的后台线程保存(Flush)到磁盘L0层的文件中。进一步地,当L0层存储的文件总数达到一定阈值,又或者L0层存储的某个文件的数据量达到一定阈值之后,存储引擎的后台线程会将L0层的文件下刷到L1层,并与L1层中的文件进行合并(Compaction),以此类推。具体地,存储引擎会先在L1层中查找与L0层的待合并文件之间有重叠(overlap)键的文件来参与合并,然后读取出参与合并的多个文件中包含的所有数据,再然后删除所有数据中的重复数据,最后将剩余数据以文件的形式写入L1层,以减少磁盘中的重复数据,优化磁盘的存储性能。
应理解,文件合并操作主要是为了对存储引擎所管理的磁盘中存储的数据进行整理,对用户来说是无感知的,因此文件合并操作是由存储引擎的后台任务负责自动调度和执行的,而针对用户发起的访问请求所涉及的数据读写操作是由存储引擎的前台任务负责执行的。
如上所述,一般文件合并操作的触发往往依据预先配置的合并条件(例如磁盘中某一存储层存储的文件总数达到一定阈值,又或者该存储层存储的某个文件的数据量达到一定阈值),一旦满足合并条件,存储引擎后台就会自动执行文件合并操作。
如此一来,在流量高峰期,例如在平常日间或者购物软件大促活动期间,数据库往往会接收到大量高并发的访问请求,若此时LSM树中多数的存储层均满足合并条件,从而触发了大量频繁的文件合并操作,这势必会占用系统大量的CPU资源和IO资源,从而降低存储引擎前台的读写性能,甚至还会降低查询引擎的执行效率,进而严重影响数据库对用户访问请求的顺利执行,甚至造成大量请求超时失败,影响用户体验。
基于此,本说明书提供了一种技术方案,针对基于LSM树存储结构的存储引擎,检测数据库当前的前台读写压力,并基于该读写压力动态调整存储引擎后台文件合并操作的限速值,以使存储引擎基于不大于该限速值的文件合并速率来执行文件合并操作,避免后台的文件合并操作占用过多的系统资源,进而保证前台的读写性能。
在实现时,本申请可以先获取与数据库的访问请求对应的数据读取速率和数据写入速率。其中,该数据库的存储引擎可以为基于LSM树存储结构的存储引擎,该 LSM树包括多个存储层,多个存储层中的至少部分存储层中存储了若干个文件。进一步地,存储引擎可以将上述数据读取速率和数据写入速率分别与预设的速率区间进行对比。然后,可以根据对比结果,调整存储引擎的文件合并限速值,使得存储引擎在上述LSM树的多个存储层中存在满足合并条件的目标存储层时,基于不大于调整后的文件合并限速值的文件合并速率,对该目标存储层中存储的文件执行文件合并操作。
在以上技术方案中,本申请通过检测数据库的前台读写压力,并基于当前的读写压力动态调整存储引擎后台的文件合并操作的限速值,以使存储引擎基于不大于该限速值的文件合并速率来执行文件合并操作,可以有效避免后台的文件合并操作占用过多的系统资源,进而保证前台的读写性能。
请参阅图1,图1是一示例性实施例提供的一种针对LSM树的文件合并系统的架构示意图。本说明书提供的一个或多个实施例可以在图1所示的系统架构或者类似的系统架构中具体实施。如图1所示,该针对LSM树的文件合并系统可以包括数据库中的存储引擎100,以及该存储引擎100管理的内存101和非易失性存储设备102。
其中,该存储引擎100为基于LSM树存储结构的存储引擎。与该存储引擎100对应的数据库可以为采用LSM树存储结构的任何数据库类型的数据库,例如可以是关系型数据库,也可以是非关系型数据库,比如图数据库,等等,本说明书对此不做具体限定。
其中,内存101中保存了存储引擎100最新写入的数据,该数据可以是key-value(键值对)类型的数据。示例性的,内存101可以通过MemoryTable保存最新写入的数据。
其中,非易失性存储设备102中定义了多个存储层,各个存储层可以以文件的形式存储数据。如图1所示,非易失性存储设备102中定义的多个存储层具体可以包括Level0层至LevelN层,N为大于或者等于1的整数。如图1所示,该多个存储层中的至少部分存储层中可以存储有若干个文件,例如Level 0层中存储了文件1等,Level 1层中存储了文件2和文件3等,Level 2层中存储了文件4和文件5等,此处不再赘述。
在一示出的实施方式中,针对非易失性存储设备102中的Level 0层至Level N层中的各个存储层可以预先配置相应的存储容量阈值。在一示出的实施方式中,预配置的存储容量阈值可以从Level 0层至Level N层逐渐增大,例如每一层的存储容量阈值可以是上一层的10倍,等等,本说明书对此不做具体限定。与此同时,针对存储层中存储的文件也可以预先配置相应的数据量阈值,该阈值可以是预定义的标准数据量或者说是较为合适的数据量,例如为64M、32M、16M,等等,本说明书对此不做具体限定。
在一示出的实施方式中,该非易失性存储设备102例如可以是硬盘或磁盘等,本说明书对此不做具体限定。
在一示出的实施方式中,响应于数据库接收到的访问请求,存储引擎100可以执行与该访问请求相关的数据读写操作,例如将与本次请求相关的数据写入内存101,又或者从非易失性存储设备102中读取出本次请求所需的数据,等等,本说明书对此不做具体限定。
与此同时,响应于Level 0层至Level N层中的任一存储层满足合并条件,存储引擎100会对该存储层内存储的文件执行文件合并操作。在一示出的实施方式中,存储引擎100执行文件合并操作的具体过程可参考上述技术用语解释部分,此处不再进行赘述。
本申请考虑到平常日间或者购物软件的大促活动期间,数据库往往会接收到大量高并发的访问请求,为了避免存储引擎100后台频繁的合并操作影响前台访问的数据读写性能,首先,本申请为存储引擎100预先配置了文件合并限速值,以限制后台的文件合并速率,保证前台的数据读写性能。示例性的,该文件合并限速值例如为300M/s或者400M/s等,可以表示存储引擎100在执行文件合并操作时写数据或者读数据的速度。
此外,本申请还可以周期性地检测数据库的前台读写压力,并基于该读写压力,实时调整为存储引擎100的文件合并限速值,以实时保证在不影响前台读写效率的情况下,也尽可能地保证后台的文件合并效率,进而提升整个数据库系统的性能。
在一示出的实施方式中,上述数据库的前台读写压力具体可以表现为与该数据库的访问请求对应的数据读取速率和数据写入速率。
需要说明的是,本申请对获取该数据读取速率和数据写入速率的具体实施方式不作特别限定。
在一示出的实施方式中,本申请可以根据数据库接收到的访问请求的数据操作类型以及请求流量等,计算得到上述数据读取速率和数据写入速率,本说明书对此不做具体限定。示例性的,本申请可以将检测到的读类型的访问请求的请求流量作为上述数据读取速率的参考依据,并将检测到的写类型的访问请求的请求流量作为上述数据写入速率的参考依据,等等,本说明书对此不做具体限定。
在一示出的实施方式中,本申请可以检测上述存储引擎100在执行与数据库接收到的访问请求相关的数据读写操作时的数据读取速率和数据写入速率,并将该存储引擎100的数据读取速率和数据写入速率,直接作为与该数据库的访问请求对应的数据读取速率和数据写入速率。也就是说,数据库的前台读写压力具体可以表现在存储引擎100前台的读写压力。
应理解,数据读取速率越大,表示存储引擎100前台的读压力越大,数据写入速率越大,表示存储引擎100前台的写压力越大。示例性的,该数据读取速率可以包括每秒查询速率(Queries Per Second,QPS),该数据写入速率可以包括事务处理速率(TransactionsPer Second,TPS)或者写速率(WriteRate),其中,WriteRate表示每秒写入的数据总量。
在以下实施例中,将以存储引擎100在执行与数据库接收到的访问请求相关的数据读写操作时的数据读取速率和数据写入速率作为数据库前台读写压力的参考依据,对本申请提供的方案进行阐述。
进一步地,存储引擎100可以将上述获取到的数据读取速率和数据写入速率分别与预设的速率区间进行对比。
进一步地,存储引擎100可以根据对比结果,调整存储引擎100的文件合并限速值。如此一来,当LSM树的多个存储层中存在满足合并条件的目标存储层时,存储引擎100只能基于不大于调整后的文件合并限速值的文件合并速率,对该目标存储层中存储的文件执行文件合并操作。应理解,此处LSM树的多个存储层主要指非易失性存储设备102中定义的多个存储层(即Level 0层至Level N层),不包括LSM树的内存层。
示例性的,上述满足合并条件的目标存储层可以为非易失性存储设备102的Level0层至Level N层中的第i个存储层,i为大于或者等于1的整数。该合并条件可以包括该第i个存储层中存储的文件数量大于第一预设值,或者该第i个存储层中存储的任一文件中包含的数据量大于第二预设值。
相应的,存储引擎100在对满足合并条件的目标存储层中存储的文件执行文件合并操作时,可以包括:将该第i个存储层中存储的文件与第i+1个存储层中存储的文件进行合并。
需要说明的是,本申请对上述合并条件中配置的第一预设值和第二预设值不作特别限定。示例性的,该第一预设值可以为128个、256个或者500个,等等;该第二预设值可以为64M、32M、16M,等等,可以根据实际情况和需求进行调整,本说明书对此不做具体限定。
示例性的,若对比结果指示存储引擎前台的写压力较大,即此时有大量数据写入内存101,为了避免内存溢出,必须要极大程度地提升文件合并速率,以及时地将非易失性存储设备102中存储的文件尽可能地向下层合并,以便内存101中的数据可以快速写入非易失性存储设备102,从而提供最大的系统写吞吐能力。
示例性的,若对比结果指示存储引擎前台的写压力较小,并且读压力也较小,则可以适当提升文件合并限速值,此时不会影响前台的读写性能。
示例性的,若对比结果指示存储引擎前台的写压力较小,但是读压力较大,则可以适当降低文件合并限速值,以避免影响前台的数据读取性能。
应理解,图2仅做示例性说明,在一些可能的实施方式中,针对LSM树的文件合并系统中还可以包括比图1所示更多或者更少的结构,例如还可以包括与存储引擎100对接的查询引擎,等等,本说明书对此不做具体限定。
请参阅图2,图2是一示例性实施例提供的一种针对LSM树的文件合并方法的流程示意图。该方法可以应用于图1所示的存储引擎100中。如图2所示,该方法具体可以包括如下步骤S201-步骤S203。
步骤S201,获取与数据库的访问请求对应的数据读取速率和数据写入速率;其中,所述数据库中的存储引擎为基于LSM树存储结构的存储引擎,所述LSM树包括多个存储层,所述多个存储层中的至少部分存储层中存储了若干个文件。
本申请中的存储引擎为基于LSM树存储结构的存储引擎,该LSM树中包括多个存储层。应理解,此处LSM树包括的多个存储层主要指非易失性存储设备(例如磁盘或硬盘,以下实施例均以磁盘为例)中定义的多个存储层,例如图1所示的Level 0层至Level N层。其中,该多个存储层中的至少部分存储层中可以存储了若干个文件。
在一示出的实施方式中,响应于数据库接收到的访问请求,存储引擎可以执行与接收到的访问请求相关的数据读写操作。进一步地,存储引擎可以获取其在执行相关数据读写操作时的读写压力。
需要说明的是,本申请对读写压力的参考数据不作特别限定。在一示出的实施方式中,存储引擎可以获取其在执行相关数据读写操作时的数据读取速率和数据写入速率,并将数据读取速率作为读压力的参考数据,将数据写入速率作为写压力的参考数据。
需要说明的是,本申请对数据读取速率和数据写入速率的具体内容也不作特别限定。在一示出的实施方式中,该数据读取速率可以包括QPS,该数据写入速率可以包括TPS或者WriteRate,本说明书对此不做具体限定。
需要说明的是,本申请对获取数据读取速率和数据写入速率的具体方式也不作特别限定。
在一示出的实施方式中,存储引擎可以按照预设的周期时长,周期性地获取存储引擎在执行与接收到的访问请求相关的数据读写操作时的数据读取速率和数据写入速率。
示例性的,该周期时长可以为1分钟,2分钟或者5分钟,等等,可以根据实际情况和需求设置,本说明书对此不做具体限定。
在一示出的实施方式中,任一周期时长内可以仅检测一次数据读取速率和数据写入速率,并将其作为本周期内获取到的数据读取速率和数据写入速率。
在一示出的实施方式中,任一周期时长内也可以检测多次数据读取速率和数据写入速率。相应的,任一周期时长内获取到的数据读取速率可以为该周期时长内检测到的多个数据读取速率的平均值或者加权平均值;以及,任一周期时长内获取到的数据写入速率可以为该周期时长内检测到的多个数据写入速率的平均值或者加权平均值,等等,本说明书对此不做具体限定。
示例性的,一周期时长为1分钟为例,每分钟内可以检测10次数据读取速率和10次数据写入速率(即每6秒检测一次数据读取速率和数据写入速率),并将该周期内检测到的10个数据读取速率的平均值或者加权平均值作为该周期内的数据读取速率,以及将该周期内检测到的10个数据写入速率的平均值或者加权平均值作为该周期内的数据写入速率。
步骤S202,将所述数据读取速率和所述数据写入速率分别与预设的速率区间进行对比。
进一步地,存储引擎可以将获取到的数据读取速率和数据写入速率分别与预设的速率区间进行对比。
在一示出的实施方式中,考虑到触发文件合并操作的合并条件主要和写入磁盘的数据量达到一定阈值相关,因此,可以将数据写入速率作为调整文件合并限速值的优先参考数据。
在一示出的实施方式中,存储引擎可以先将数据写入速率与预设的第一区间进行对比,其中,该第一区间可以是由第一阈值和大于该第一阈值的第二阈值构成的速率区间。示例性的,该第一区间可以是100M/s-150M/s,或者200M/s-400M/s,等等,可以根据实际情况和需求设置,本说明书对此不做具体限定。
进一步地,若数据写入速率小于所述第一区间,则进一步可以将获取到的数据读取速率与预设的第二区间进行对比。其中,该第一区间可以是由第三阈值和大于该述第三阈值的第四阈值构成的速率区间。示例性的,该第一区间可以是800M/s-150M/s,或者150M/s-300M/s,等等,可以根据实际情况和需求设置,本说明书对此不做具体限定。
步骤S203,根据对比结果,调整所述存储引擎的文件合并限速值,以使所述存储引擎在所述LSM树的多个存储层中存在满足合并条件的目标存储层时,基于不大于调整后的所述文件合并限速值的文件合并速率,对所述目标存储层中存储的文件执行文件合并操作。
进一步地,存储引擎可以根据对比结果,调整存储引擎的文件合并限速值。
在一示出的实施方式中,本申请可以在存储引擎中配置相应的限速器,该限速器可以用于检测前台的数据读取速率和数据写入速率,并将数据读取速率和数据写入速率分别与预设的速率区间进行对比,进一步还可以基于对比结果来调整文件合并限速值。
需要说明的是,存储引擎后台一般会启用至少一个合并任务线程来执行文件合并操作,相应的,每个线程执行文件合并操作时的数据读写速率的总和需要低于该文件合并限速值。例如,存储引擎当前的文件合并限速值为300M/s,且存储引擎后台启用了两个合并任务线程来执行文件合并操作,则每个线程在执行文件合并操作时的数据读写速率可以分别为150M/s,或者一个为120 M/s,另一个为180M/s,等等,本说明书对此不做具体限定。
在一示出的实施方式中,存储引擎中的限速器在根据对比结果调整文件合并限速值时,可以包括:调整文件合并限速值,以及调整该存储引擎启用的合并任务线程的线程数量;或者,仅调整文件合并限速值;又或者,仅调整该存储引擎启用的合并任务线程的线程数量,本说明书对此不做具体限定。
示例性的,请参阅图3,图3是一示例性实施例提供的一种文件合并限速值的调整方法的流程示意图。该方法可以应用于图1所示的存储引擎100中,如图3所示,该方法具体可以包括如下步骤S301-步骤S307。
步骤S301,判断数据写入速率是否大于第一区间;若是,则执行步骤S302,若否,则执行步骤S303。
首先,存储引擎可以将获取到的数据写入速率与预设的第一区间进行对比,判断该数据写入速率是否大于该第一区间。
步骤S302,若数据写入速率大于第一区间,则提升文件合并限速值至与所述数据写入速率对应的限速值。
在一示出的实施方式中,若数据写入速率大于该第一区间,即存储引擎前台的写压力非常大,通常为了不影响前台此时的数据写入,应该及时降低后台的文件合并速率,以将更多的CPU资源和IO资源度让给前台。但是,应理解,当存储引擎前台的写压力非常大的情况下,表明此时有大量数据写入内存,为了避免内存溢出,必须要极大程度地提升文件合并速率,以及时地将磁盘中存储的文件尽可能地向下层合并,以便内存中的数据可以快速写入磁盘,从而提供最大的系统写吞吐能力。
如此一来,若数据写入速率大于第一区间,则存储引擎可以提升文件合并限速值,具体可以提升文件合并限速值至与该数据写入速率对应的限速值。
具体地,存储引擎在提升文件合并限速值时,可以包括:提升文件合并限速值,以及增加该存储引擎启用的合并任务线程的线程数量;或者,仅提升文件合并限速值;又或者,仅增加该存储引擎启用的合并任务线程的线程数量,本说明书对此不做具体限定。
示例性的,存储引擎原本的文件合并限速值可以为300M/s,并且存储引擎后台启用了两个合并任务线程来执行文件合并操作。
若数据写入速率大于第一区间,则存储引擎可以将文件合并限速值提升为450M/s,并将合并任务线程的数量增加至3个。或者,也可以仅将文件合并限速值提升为450M/s。又或者,也可以仅将合并任务线程的数量增加至3个,等等,本说明书对此不做具体限定。
步骤S303,若数据写入速率不大于第一区间,则进一步判断数据写入速率是否小于第一区间;若是,则执行步骤S304,若否,则可以不调整当前的文件合并限速值。
在一示出的实施方式中,若数据写入速率不大于第一区间,则存储引擎可以进一步判断该数据写入速率是否小于该第一区间。
在一示出的实施方式中,若数据写入速率不大于第一区间,并且也不小于该第一区间,即数据写入速率位于该第一区间之内,则表示存储引擎当前的写压力处于正常水平,此时可以不调整当前的文件合并限速值。
或者,在一示出的实施方式中,只要数据写入速率不大于第一区间,就可以执行下述步骤S304,本说明书对此不做具体限定。
步骤S304,若数据写入速率小于第一区间,则进一步判断数据读取速率是否大于第二区间;若是,则执行步骤S305,若否,则执行步骤S306。
在一示出的实施方式中,若数据写入速率小于第一区间,表明当前存储引擎前台的写压力非常小,通常可以适当提升文件合并限速值。但是,考虑到存储引擎前台可能存在频繁的数据读取操作需要占用CPU资源和IO资源,因此为了避免后台的文件合并操作影响前台的数据读取性能,在数据写入速率小于第一区间的情况下,存储引擎还需要进一步判断数据读取速率是否大于第二区间。
步骤S305,若数据读取速率大于第二区间,则降低文件合并限速值至与所述数据写入速率和所述数据读取速率对应的限速值。
在一示出的实施方式中,若数据写入速率小于第一区间,并且数据读取速率大于第二区间,即当前存储引擎前台的写压力非常小,但是读压力非常大,则存储引擎可以适当降低文件合并限速值,具体可以降低文件合并限速值至与该数据写入速率和该数据读取速率对应的限速值。
具体地,存储引擎在降低文件合并限速值时,可以包括:降低文件合并限速值,以及减少该存储引擎启用的合并任务线程的线程数量;或者,仅降低文件合并限速值;又或者,仅减少该存储引擎启用的合并任务线程的线程数量,本说明书对此不做具体限定。
示例性的,存储引擎原本的文件合并限速值可以为300M/s,并且存储引擎后台启用了两个合并任务线程来执行文件合并操作。
若数据写入速率小于第一区间,并且数据读取速率大于第二区间,则存储引擎可以将文件合并限速值降低为200M/s,并将合并任务线程的数量减少至1个。或者,也可以仅将文件合并限速值降低为200M/s。又或者,也可以仅将合并任务线程的数量减少至1个,等等,本说明书对此不做具体限定。
可以理解的是,当文件合并限速值很低的情况下,没有必要保留较多的合并任务线程,即一般情况下可以在降低文件合并限速值的同时也减少合并任务线程数量,因为每个线程最终都会受限于文件合并限速值,保留较多的合并任务线程反而会浪费大量CPU资源在后台线程的切换过程中,进而影响前台的数据读写性能。
步骤S306,若数据读取速率不大于第二区间,则进一步判断数据读取速率是否小于第二区间;若是,则执行步骤S307,若否,则可以不调整当前的文件合并限速值。
在一示出的实施方式中,若数据读取速率不大于第二区间,则存储引擎可以进一步判断数据读取速率是否小于该第二区间。
若数据读取速率不大于该第二区间,并且也不小于该第二区间,即数据读取速率位于该第二区间之内,则表示存储引擎当前的读压力处于正常水平,此时可以不调整当前的文件合并限速值。或者,虽然当前的读压力处于正常水平,但是由于写压力较小,存储引擎也可以适当提升文件合并限速值,等等,本说明书对此不做具体限定。
或者,在一示出的实施方式中,只要数据写入速率不大于第一区间,就可以执行下述步骤S307,本说明书对此不做具体限定。
步骤S307,若数据读取速率小于第二区间,则提升文件合并限速值至与所述数据写入速率和所述数据读取速率对应的限速值。
在一示出的实施方式中,若数据写入速率小于第一区间,并且数据读取速率小于第二区间,即当前存储引擎前台的读写压力都非常小,前台处于空闲状态,此时存储引擎可以适当提升文件合并限速值,具体可以提升文件合并限速值至与该数据写入速率和该数据读取速率对应的限速值。若后续检测到了前台的访问请求,可以适当降低文件合并限速值,以保证前台访问请求的执行效率,本说明书对此不做具体限定。
在一示出的实施方式中,本申请还可以为该存储引擎预先配置与文件合并速率对应的限速范围,上述调整后的文件合并限速值可以是在该限速范围之内的限速值。也就是说,本申请在根据存储引擎的前台读写压力自适应调整文件合并限速值时,是在预配置的限速范围内进行调整,即不仅对文件合并速率加以限制,还对文件合并限速值加以限制,以避免过分提高或者降低文件限速值,保证前后台整体的执行效率。
在一示出的实施方式中,该预配置的限速范围可以是一个经验值,例如为80 M/s-450M/s,100 M/s-500M/s,或者150 M/s-600M/s,等等,本说明书对此不做具体限定。
进一步地,在基于上述对比结果适应性地调整文件合并限速值之后,当上述LSM树的多个存储层中存在满足合并条件的目标存储层时,存储引擎只能基于不大于调整后的该文件合并限速值的文件合并速率,对目标存储层中存储的文件执行文件合并操作。
在一示出的实施方式中,上述合并条件可以包括存储层中存储的文件数量大于第一预设值,或者存储层中存储的任一文件中包含的数据量大于第二预设值,等等,本说明书对此不做具体限定。示例性的,该第一预设值可以为128个、256个或者500个,等等;该第二预设值可以为64M、32M、16M,等等,可以根据实际情况和需求进行调整,本说明书对此不做具体限定。
在一示出的实施方式中,存储引擎在对满足合并条件的目标存储层中存储的文件执行文件合并操作时,可以包括:在该目标存储层存储的文件中确定出待合并文件,并将该待合并文件与下一存储层中存储的文件进行合并,此处不再进行赘述。
具体地,存储引擎后台的合并任务线程在执行文件合并操作时,具体可以包括:从合并任务队列中按序获取合并任务并执行。队列中的合并任务之间可以按照优先级高低进行排列,一般情况下,合并任务中待合并文件所包含的数据量越大,其优先级越高,越先执行。
示例性的,目标存储层中存储的待合并文件1的大小为64M,待合并文件2的大小为48M,而上述合并条件中针对文件大小预先配置的第二预设值为32M,由于待合并文件1的大小相比于待合并文件2来说更加超过该第二预设值,因此与待合并文件1对应的合并任务的优先级更高,越先执行,等等,本说明书对此不做具体限定。
进一步地,在一示出的实施方式中,在上述数据写入速率小于第一区间,并且数据读取速率小于第二区间的情况下,即存储引擎前台处于空闲状态的情况下,存储引擎除了可以适当提升文件合并速率之外,还可以对LSM树的多个存储层中未满足合并条件的存储层中存储的文件提前执行文件合并操作。从而可以尽可能的提前将多个存储层中存储的文件均合并到一层中,后续在执行数据查询时只需要访问一层数据即可,极大程度上提升了查询性能。
示例性的,请一并参阅图1,如图1所示的多个存储层中,若只有Level 0层、Level1层和Level 2层中存储了若干个文件,则通过提前合并,可以尽快将Level 0层、Level 1层和Level 2层中存储的所有文件均合并到Level 3层。在一示出的实施方式中,在实现将Level 0层、Level 1层和Level 2层中存储的所有文件均合并到Level 3层后,存储引擎也可以进一步将Level 3层中的文件进一步向更底层合并,甚至合并到Level N层,等等,本说明书对此不做具体限定。
并且,提前进行文件合并操作后,图1所示的Level 0层和Level 1层中的数据就会被清空,如此一来,可以预留更多的写入缓冲区,以应对后续的突发写入压力。
应理解,提前合并本身是一种优化策略,目的是充分利用数据库的空闲时间进行后台合并,但其不应该影响前台访问请求的读写性能。因此,提前合并策略是在“自适应调整合并限速值”的逻辑之下的。也就是说,即使触发提前合并,其合并速率也应该限制在当前的文件合并限速值之内,以在接收到突发请求的情况下,避免后台的提前合并对前台读写的影响。
需要说明的是,本申请对提前合并的触发条件不作特别限定。
在一示出的实施方式中,在上述数据写入速率小于第一区间,并且数据读取速率小于第二区间的情况下,可以直接触发提前合并。
或者,在一示出的实施方式中,在上述数据写入速率小于第一区间,并且数据读取速率小于第二区间的情况下,存储引擎可以再进一步确定当前的文件合并压力大小,以根据确定出的结果决定是否提前执行文件合并操作。需要说明的是,由于本申请在前台读写压力均较小的情况下,可以适当提升文件合并限速值,但是后台实际的文件合并速率可能达不到提升后的文件合并限速值,甚至由于没有任何数据写入,导致没有文件合并需求,而使得后台实际的文件合并速率远低于该文件合并限速值,即存储引擎后台的文件合并压力非常小,此时在不影响后台正常文件合并的情况下,可以触发提前合并。
具体地,存储引擎可以通过确定当前的文件合并速率是否低于预设阈值来确定当前的文件合并压力大小。应理解,在文件合并速率受限于文件合并限速值的前提下,该预设阈值为小于当前的文件合并限速值的阈值,例如可以为上述预配置的限速范围内的最小值,比如100M/s,或者80M/s,等等,可以根据实际情况和需求设置,本说明书对此不做具体限定。
在一示出的实施方式中,若存储引擎的文件合并速率低于该预设阈值,则表明存储引擎当前的文件合并压力较小,可以触发提前合并,存储引擎可以基于不大于调整后的文件合并限速值的文件合并速率,对多个存储层中未满足合并条件的存储层中存储的文件提前执行文件合并操作。
需要说明的是,若当前LSM树中的所有文件已经全部处于一个存储层了,例如所有文件均处于Level 0层或Level 1层,其他存储层中没有存储任何数据,则可以不提前执行文件合并操作,以减少不必要的文件合并操作带来的写放大。
此外,需要说明的是,存储引擎可能管理有多个LSM树,该多个LSM树共享当前的文件合并限速值,例如,存储引擎管理有3个LSM树,并且当前的文件合并限速值为200M/s,则3个LSM树的文件合并速率的总和不大于200M/s,比如分别为100M/s、50M/s、50M/s。若存储引擎对其中任一LSM树的文件合并压力较大,即使其他LSM树的文件合并压力较小(例如上述3个LSM树中,其中一个LSM树的文件合并速率为150M/s,而其他两个LSM树的文件合并速率只有25M/s),其他LSM树也不能进行提前合并。也就是说,只有存储引擎前台的读写压力较低,并且后台全局的合并压力也较低的情况下,才会触发提前合并,以避免提前合并对正常合并的影响,本说明书对此不做具体限定。
与上述方法流程实现对应,本说明书的实施例还提供了一种针对LSM树的文件合并装置。请参阅图4,图4是一示例性实施例提供的一种针对LSM树的文件合并装置的结构示意图,该装置40可以应用于图1所示的存储引擎100。如图4所示,该装置40包括:
获取单元401,用于获取与数据库的访问请求对应的数据读取速率和数据写入速率;其中,所述数据库中的存储引擎为基于LSM树存储结构的存储引擎,所述LSM树包括多个存储层,所述多个存储层中的至少部分存储层中存储了若干个文件;
对比单元402,用于将所述数据读取速率和所述数据写入速率分别与预设的速率区间进行对比;
限速单元403,用于根据对比结果,调整所述存储引擎的文件合并限速值,以使所述存储引擎在所述LSM树的多个存储层中存在满足合并条件的目标存储层时,基于不大于调整后的所述文件合并限速值的文件合并速率,对所述目标存储层中存储的文件执行文件合并操作。
在一示出的实施方式中,所述与数据库的访问请求对应的数据读取速率和数据写入速率,包括:
所述存储引擎在执行与所述数据库接收到的访问请求相关的数据读写操作时的数据读取速率和数据写入速率。
在一示出的实施方式中,所述对比单元402,具体用于:
将所述数据写入速率与预设的第一区间进行对比,若所述数据写入速率小于所述第一区间,则进一步将所述数据读取速率与预设的第二区间进行对比;
其中,所述第一区间为由第一阈值和大于所述第一阈值的第二阈值构成的速率区间,所述第二区间为由第三阈值和大于所述第三阈值的第四阈值构成的速率区间。
在一示出的实施方式中,所述限速单元403,具体用于:
若所述数据写入速率大于所述第一区间,则提升所述存储引擎的文件合并限速值至与所述数据写入速率对应的限速值;
若所述数据写入速率小于所述第一区间,且所述数据读取速率大于所述第二区间,则降低所述文件合并限速值至与所述数据写入速率和所述数据读取速率对应的限速值;
若所述数据写入速率小于所述第一区间,且所述数据读取速率小于所述第二区间,则提升所述文件合并限速值至与所述数据写入速率和所述数据读取速率对应的限速值。
在一示出的实施方式中,所述装置40还包括提前合并单元404,用于:
若所述数据写入速率小于所述第一区间,并且所述数据读取速率小于所述第二区间,则进一步确定所述存储引擎当前的文件合并速率是否低于预设阈值;
若低于所述预设阈值,则基于不大于调整后的所述文件合并限速值的文件合并速率,对所述多个存储层中未满足合并条件的存储层中存储的文件提前执行文件合并操作。
在一示出的实施方式中,所述合并条件包括:
存储层中存储的文件数量大于第一预设值;或者,存储层中存储的任一文件包含的数据量大于第二预设值。
在一示出的实施方式中,所述存储引擎启用至少一个合并任务线程来执行文件合并操作;所述限速单元403,具体用于:
调整为所述存储引擎配置的文件合并限速值,以及调整所述存储引擎启用的合并任务线程的线程数量。
在一示出的实施方式中,所述获取单元401,具体用于:
按照预设的周期时长,周期性地获取与数据库的访问请求对应的数据读取速率和数据写入速率。
在一示出的实施方式中,任一周期时长内获取到的数据读取速率为该周期时长内检测到的多个数据读取速率的平均值;以及,任一周期时长内获取到的数据写入速率为该周期时长内检测到的多个数据写入速率的平均值。
在一示出的实施方式中,所述数据读取速率包括查询速率QPS;所述数据写入速率包括事务处理速率TPS或者WriteRate。
在一示出的实施方式中,为所述存储引擎预配置了与文件合并速率对应的限速范围;调整后的所述文件合并限速值为在所述限速范围之内的限速值。
上述装置40中各个单元的功能和作用的实现过程具体详见上述图1-图3对应实施例的描述,在此不再进行赘述。应理解,上述装置40可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为逻辑意义上的装置,是通过所在设备的处理器(CPU)将对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,除了CPU以及存储器之外,上述装置所在的设备通常还包括用于进行无线信号收发的芯片等其他硬件,和/或用于实现网络通信功能的板卡等其他硬件。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部单元或模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的装置、单元、模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备、车载计算机或者这些设备中的任意几种设备的组合。
与上述方法实施例相对应,本说明书的实施例还提供了一种计算机设备。请参阅图5,图5是一示例性实施例提供的一种计算机设备的结构示意图。该计算机设备中可以搭载了图1所示的存储引擎100。如图5所示,该计算机设备包括处理器1001和存储器1002,进一步还可以包括输入设备1004(例如键盘等)和输出设备1005(例如显示器等)。处理器1001、存储器1002、输入设备1004和输出设备1005之间可以通过总线或其他方式连接。如图5所示,存储器1002包括计算机可读存储介质1003,该计算机可读存储介质1003存储有能够由处理器1001运行的计算机程序。处理器1001可以是CPU,微处理器,或用于控制以上方法实施例执行的集成电路。处理器1001在运行存储的计算机程序时,可以执行本说明书实施例中针对LSM树的文件合并方法的各个步骤,包括:获取与数据库的访问请求对应的数据读取速率和数据写入速率;其中,所述数据库中的存储引擎为基于LSM树存储结构的存储引擎,所述LSM树包括多个存储层,所述多个存储层中的至少部分存储层中存储了若干个文件;将所述数据读取速率和所述数据写入速率分别与预设的速率区间进行对比;根据对比结果,调整所述存储引擎的文件合并限速值,以使所述存储引擎在所述LSM树的多个存储层中存在满足合并条件的目标存储层时,基于不大于调整后的所述文件合并限速值的文件合并速率,对所述目标存储层中存储的文件执行文件合并操作,等等。
对上述针对LSM树的文件合并方法的各个步骤的详细描述请参见之前的内容,此处不再进行赘述。
与上述方法实施例相对应,本说明书的实施例还提供了一种计算机可读存储介质,该存储介质上存储有计算机程序,这些计算机程序在被处理器运行时,执行本说明书实施例中针对LSM树的文件合并方法的各个步骤。具体请参见上述图1-图3对应实施例的描述,此处不再进行赘述。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
在一个典型的配置中,终端设备包括一个或多个CPU、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。
计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书的实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书的实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

Claims (14)

1.一种针对LSM树的文件合并方法,其特征在于,所述方法包括:
获取与数据库的访问请求对应的数据读取速率和数据写入速率;其中,所述数据库中的存储引擎为基于LSM树存储结构的存储引擎,所述LSM树包括多个存储层,所述多个存储层中的至少部分存储层中存储了若干个文件;
将所述数据读取速率和所述数据写入速率分别与预设的速率区间进行对比;
根据对比结果,调整所述存储引擎的文件合并限速值,以使所述存储引擎在所述LSM树的多个存储层中存在满足合并条件的目标存储层时,基于不大于调整后的所述文件合并限速值的文件合并速率,对所述目标存储层中存储的文件执行文件合并操作。
2.根据权利要求1所述的方法,其特征在于,所述与数据库的访问请求对应的数据读取速率和数据写入速率,包括:
所述存储引擎在执行与所述数据库接收到的访问请求相关的数据读写操作时的数据读取速率和数据写入速率。
3.根据权利要求1所述的方法,其特征在于,所述将所述数据读取速率和所述数据写入速率分别与预设的速率区间进行对比,包括:
将所述数据写入速率与预设的第一区间进行对比,若所述数据写入速率小于所述第一区间,则进一步将所述数据读取速率与预设的第二区间进行对比;
其中,所述第一区间为由第一阈值和大于所述第一阈值的第二阈值构成的速率区间,所述第二区间为由第三阈值和大于所述第三阈值的第四阈值构成的速率区间。
4.根据权利要求3所述的方法,其特征在于,所述根据对比结果,调整所述存储引擎的文件合并限速值,包括:
若所述数据写入速率大于所述第一区间,则提升所述存储引擎的文件合并限速值至与所述数据写入速率对应的限速值;
若所述数据写入速率小于所述第一区间,且所述数据读取速率大于所述第二区间,则降低所述文件合并限速值至与所述数据写入速率和所述数据读取速率对应的限速值;
若所述数据写入速率小于所述第一区间,且所述数据读取速率小于所述第二区间,则提升所述文件合并限速值至与所述数据写入速率和所述数据读取速率对应的限速值。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若所述数据写入速率小于所述第一区间,并且所述数据读取速率小于所述第二区间,则进一步确定所述存储引擎当前的文件合并速率是否低于预设阈值;
若低于所述预设阈值,则基于不大于调整后的所述文件合并限速值的文件合并速率,对所述LSM树包括的多个存储层中未满足合并条件的存储层中存储的文件提前执行文件合并操作。
6.根据权利要求1所述的方法,其特征在于,所述合并条件包括:
存储层中存储的文件数量大于第一预设值;或者,存储层中存储的任一文件包含的数据量大于第二预设值。
7.根据权利要求1所述的方法,其特征在于,所述存储引擎启用至少一个合并任务线程来执行文件合并操作;所述调整所述存储引擎的文件合并限速值,包括:
调整所述存储引擎的文件合并限速值,以及调整所述存储引擎启用的合并任务线程的线程数量。
8.根据权利要求1所述的方法,其特征在于,所述获取与数据库的访问请求对应的数据读取速率和数据写入速率,包括:
按照预设的周期时长,周期性地获取与数据库的访问请求对应的数据读取速率和数据写入速率。
9.根据权利要求8所述的方法,其特征在于,任一周期时长内获取到的数据读取速率为该周期时长内检测到的多个数据读取速率的平均值;以及,任一周期时长内获取到的数据写入速率为该周期时长内检测到的多个数据写入速率的平均值。
10.根据权利要求1所述的方法,其特征在于,所述数据读取速率包括查询速率QPS;所述数据写入速率包括事务处理速率TPS或者WriteRate。
11.根据权利要求1-10任意一项所述的方法,其特征在于,为所述存储引擎预配置了与文件合并速率对应的限速范围;调整后的所述文件合并限速值为在所述限速范围之内的限速值。
12.一种针对LSM树的文件合并装置,其特征在于,所述装置包括:
获取单元,用于获取与数据库的访问请求对应的数据读取速率和数据写入速率;其中,所述数据库中的存储引擎为基于LSM树存储结构的存储引擎,所述LSM树包括多个存储层,所述多个存储层中的至少部分存储层中存储了若干个文件;
对比单元,用于将所述数据读取速率和所述数据写入速率分别与预设的速率区间进行对比;
限速单元,用于根据对比结果,调整所述存储引擎的文件合并限速值,以使所述存储引擎在所述LSM树的多个存储层中存在满足合并条件的目标存储层时,基于不大于调整后的所述文件合并限速值的文件合并速率,对所述目标存储层中存储的文件执行文件合并操作。
13.一种计算机设备,其特征在于,包括:存储器和处理器;所述存储器上存储有可由所述处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行如权利要求1至11任意一项所述的方法。
14.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至11任意一项所述的方法。
CN202410134294.0A 2024-01-30 2024-01-30 一种针对lsm树的文件合并方法及相关设备 Pending CN117725035A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410134294.0A CN117725035A (zh) 2024-01-30 2024-01-30 一种针对lsm树的文件合并方法及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410134294.0A CN117725035A (zh) 2024-01-30 2024-01-30 一种针对lsm树的文件合并方法及相关设备

Publications (1)

Publication Number Publication Date
CN117725035A true CN117725035A (zh) 2024-03-19

Family

ID=90209129

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410134294.0A Pending CN117725035A (zh) 2024-01-30 2024-01-30 一种针对lsm树的文件合并方法及相关设备

Country Status (1)

Country Link
CN (1) CN117725035A (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7111316B1 (en) * 1999-08-06 2006-09-19 Wisconsin Alumni Research Foundation Method for efficient, on-demand data streaming
CN105159915A (zh) * 2015-07-16 2015-12-16 中国科学院计算技术研究所 可动态适应的lsm树合并方法及系统
WO2020238750A1 (zh) * 2019-05-30 2020-12-03 阿里巴巴集团控股有限公司 数据处理方法、装置、电子设备及计算机存储介质
CN112463048A (zh) * 2020-11-26 2021-03-09 新华三技术有限公司成都分公司 一种compact处理速度的调整方法、装置、电子设备和介质
CN114020713A (zh) * 2021-10-12 2022-02-08 清华大学 一种日志结构合并树的文件合并方法、装置、电子设备及存储介质
CN115168317A (zh) * 2022-07-29 2022-10-11 北京志凌海纳科技有限公司 一种lsm树存储引擎构建方法和系统
CN115438007A (zh) * 2022-09-07 2022-12-06 慕思健康睡眠股份有限公司 一种文件合并方法、装置、电子设备及介质
CN115794819A (zh) * 2022-11-21 2023-03-14 超聚变数字技术有限公司 一种数据写入方法及电子设备
US20230153006A1 (en) * 2021-11-16 2023-05-18 Samsung Electronics Co., Ltd. Data processing method and data processing device
CN116886848A (zh) * 2023-08-07 2023-10-13 深圳市小辉智驾智能有限公司 录像码率控制方法、装置、计算机设备及介质

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7111316B1 (en) * 1999-08-06 2006-09-19 Wisconsin Alumni Research Foundation Method for efficient, on-demand data streaming
CN105159915A (zh) * 2015-07-16 2015-12-16 中国科学院计算技术研究所 可动态适应的lsm树合并方法及系统
WO2020238750A1 (zh) * 2019-05-30 2020-12-03 阿里巴巴集团控股有限公司 数据处理方法、装置、电子设备及计算机存储介质
CN112463048A (zh) * 2020-11-26 2021-03-09 新华三技术有限公司成都分公司 一种compact处理速度的调整方法、装置、电子设备和介质
CN114020713A (zh) * 2021-10-12 2022-02-08 清华大学 一种日志结构合并树的文件合并方法、装置、电子设备及存储介质
US20230153006A1 (en) * 2021-11-16 2023-05-18 Samsung Electronics Co., Ltd. Data processing method and data processing device
CN115168317A (zh) * 2022-07-29 2022-10-11 北京志凌海纳科技有限公司 一种lsm树存储引擎构建方法和系统
CN115438007A (zh) * 2022-09-07 2022-12-06 慕思健康睡眠股份有限公司 一种文件合并方法、装置、电子设备及介质
CN115794819A (zh) * 2022-11-21 2023-03-14 超聚变数字技术有限公司 一种数据写入方法及电子设备
CN116886848A (zh) * 2023-08-07 2023-10-13 深圳市小辉智驾智能有限公司 录像码率控制方法、装置、计算机设备及介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
YUNPENG CHAI ET AL: "Adaptive Lower-Level Driven Compaction to Optimize LSM-Tree Key-value Stores", 《IEEE TRANSACTION ON KNOWLEDGE AND DATA ENGINEERING》, vol. 34, no. 6, 25 August 2020 (2020-08-25), pages 2595 - 2609, XP011906976, DOI: 10.1109/TKDE.2020.3019264 *
张虔熙: "一种可动态适应的LSM树合并算法研究", 《万方学位论文》, 31 December 2015 (2015-12-31) *

Similar Documents

Publication Publication Date Title
US10671290B2 (en) Control of storage of data in a hybrid storage system
CN109144414B (zh) 区块链数据的多级存储方法和装置
CN103399713B (zh) 平衡多级存储性能与固态硬盘寿命的数据缓冲方法
CN106844740B (zh) 基于内存对象缓存系统的数据预读方法
CN111124304B (zh) 一种数据迁移方法、装置及电子设备和存储介质
CN112148226A (zh) 一种数据存储方法及相关装置
CN110532228A (zh) 一种区块链数据读取的方法、系统、设备及可读存储介质
CN112711564B (zh) 合并处理方法以及相关设备
CN117725035A (zh) 一种针对lsm树的文件合并方法及相关设备
CN112905121B (zh) 一种数据下刷方法和系统
CN105573920B (zh) 存储空间管理方法和装置
CN115469796A (zh) 数据存储方法、装置、设备及存储介质
CN108762679B (zh) 一种在线ddp与离线ddp相结合的方法及其相关装置
US10592420B1 (en) Dynamically redistribute cache space with min-max technique
CN115794446B (zh) 一种消息处理方法、装置、电子设备和存储介质
CN110795367B (zh) 一种存储访问控制方法和装置
CN117827440A (zh) 数据库的内存分配方法、计算机可读存储介质和存储引擎
CN112416253B (zh) 一种基于分布式存储的存储区域动态调整方法及装置
CN116737398B (zh) 一种异步io请求的调度与处理方法、装置、设备及介质
CN116126546B (zh) 一种性能调优的方法、装置、电子设备及介质
US20210117331A1 (en) Method and apparatus for managing page cache for multiple foreground applications
US20240192853A1 (en) Multi-level data storage device and operation method thereof
CN114327260B (zh) 一种数据读取方法、系统、服务器及存储介质
WO2021129847A1 (zh) 一种内存设置方法以及装置
CN111124281B (zh) 全闪存储系统的数据存储方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination