System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 数据库的内存分配方法、计算机可读存储介质和存储引擎组成比例_技高网

数据库的内存分配方法、计算机可读存储介质和存储引擎组成比例

技术编号:40949424 阅读:3 留言:0更新日期:2024-04-18 20:23
一种数据库的内存分配方法、计算机可读存储介质和存储引擎,该数据库包括基于LSM树进行数据存储的存储引擎,所述数据库包含至少一个数据库实例;所述内存用于存储分别对应于所述至少一个数据库实例的MemTable和immutable MemTable的数据,所述方法包括:确定所述数据库中的各个数据库实例在历史周期存储的数据量;基于所述各个数据库实例在历史周期存储的数据量,对所述各个数据库实例在下一周期所需的内存进行预测;其中,所述数据库实例在下一周期所需的内存与所述数据库实例在历史周期存储的数据量正相关;基于预测出的所述各个数据库实例在下一周期所需的内存,为所述各个数据库实例分别分配下一周期的内存。

【技术实现步骤摘要】

本公开涉及计算机,尤其涉及数据库的内存分配方法、计算机可读存储介质和存储引擎


技术介绍

1、存储引擎可以将新数据库实例对应的memtable和immutable memtable数据存储在内存中,immutable memtable的数据可以进一步通过后台线程写入持久化存储介质中。为数据库实例分配适当的内存,有助于提高向持久化存储介质写入数据的效率以及提高内存利用率。如果为数据库实例分配的内存过大,会导致该数据库实例对应的memtable的数据长时间占用内存,从而降低内存利用率;如果为数据库实例分配的内存过小,则会造成频繁地执行向持久化存储介质写入数据的操作,从而增加数据的写放大,导致数据写入效率降低。


技术实现思路

1、第一方面,本公开实施例提供一种数据库的内存分配方法,该数据库包括基于lsm树进行数据存储的存储引擎,所述数据库包含至少一个数据库实例;所述内存用于存储分别对应于所述至少一个数据库实例的memtable和immutable memtable的数据,所述方法包括:确定所述数据库中的各个数据库实例在历史周期存储的数据量;基于所述各个数据库实例在历史周期存储的数据量,对所述各个数据库实例在下一周期所需的内存进行预测;其中,所述数据库实例在下一周期所需的内存与所述数据库实例在历史周期存储的数据量正相关;基于预测出的所述各个数据库实例在下一周期所需的内存,为所述各个数据库实例分别分配下一周期的内存。

2、第二方面,本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本公开任一实施例所述的方法。

3、第三方面,本公开实施例提供一种存储引擎,基于lsm树进行数据存储,所述存储引擎包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本公开任一实施例所述的方法。

4、在本公开实施例中,根据各个数据库实例在历史周期的数据量来预测各个数据库实例在下一周期所需的内存,其中,数据库实例在下一周期所需的内存与该数据库实例在历史周期存储的数据量正相关,而数据库实例存储的数据量与该数据库实例对应的memtable和immutable memtable的数据在内存中的存储需求相关。一方面,如果数据库实例在历史周期存储的数据量较小,可以预测下一周期该数据库实例对应的memtable和immutable memtable的数据在内存中的存储需求较低,从而可以为该数据库实例分配较少的内存,以提高内存利用率;另一方面,如果数据库实例在历史周期的数据量较大,可以预测下一周期该数据库实例对应的memtable和immutable memtable的数据在内存中的存储需求较高,从而可以为该数据库实例分配较多的内存,以减少内存向持久化存储介质的数据写入频率,从而减少写放大。

5、应当理解,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。

本文档来自技高网...

【技术保护点】

1.一种数据库的内存分配方法,该数据库包括基于LSM树进行数据存储的存储引擎,所述数据库包含至少一个数据库实例;所述内存用于存储分别对应于所述至少一个数据库实例的MemTable和immutable MemTable数据,所述方法包括:

2.根据权利要求1所述的方法,其中,所述各个数据库实例在历史周期存储的数据量包括所述各个数据库实例在上一个历史周期存储的数据量,或者,所述各个数据库实例在之前若干个历史周期存储的数据量的平均值。

3.根据权利要求1所述的方法,所述基于所述各个数据库实例在历史周期存储的数据量,对所述各个数据库实例在下一周期所需的内存进行预测,包括:

4.根据权利要求3所述的方法,其中,各个数据库实例预先配置了内存上限值和内存下限值;

5.根据权利要求4所述的方法,其中,若针对某一数据库实例确定的下一周期所需的内存大于所述内存上限值,将对应的数据库实例在下一周期所需的内存确定为不大于所述内存上限值的第一内存值;

6.根据权利要求1所述的方法,其中,将为所述各个数据库实例分别分配的下一周期的内存中的一部分作为数据突发写时的内存。

7.根据权利要求1所述的方法,该方法还包括,所述数据库支持的数据库实例不超过其支持的实例上限值,所述实例上限值基于可分配内存和数据库实例的内存下限值确定,数据库实例的内存下限值为预设值。

8.根据权利要求1所述的方法,所述各个数据库实例在历史周期存储的数据量为:

9.一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现权利要求1至8任意一项所述的方法。

10.一种存储引擎,基于LSM树进行数据存储,所述存储引擎包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求1至8任意一项所述的方法。

...

【技术特征摘要】

1.一种数据库的内存分配方法,该数据库包括基于lsm树进行数据存储的存储引擎,所述数据库包含至少一个数据库实例;所述内存用于存储分别对应于所述至少一个数据库实例的memtable和immutable memtable数据,所述方法包括:

2.根据权利要求1所述的方法,其中,所述各个数据库实例在历史周期存储的数据量包括所述各个数据库实例在上一个历史周期存储的数据量,或者,所述各个数据库实例在之前若干个历史周期存储的数据量的平均值。

3.根据权利要求1所述的方法,所述基于所述各个数据库实例在历史周期存储的数据量,对所述各个数据库实例在下一周期所需的内存进行预测,包括:

4.根据权利要求3所述的方法,其中,各个数据库实例预先配置了内存上限值和内存下限值;

5.根据权利要求4所述的方法,其中,若针对某一数据库实例确定的下一周期所需的内存大于所述内存上限值,将对应...

【专利技术属性】
技术研发人员:黄华朱炳鹏
申请(专利权)人:支付宝杭州信息技术有限公司
类型:发明
国别省市:

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

1