买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】一种LMDB扩展方法及装置_新华三技术有限公司_201811142236.3 

申请/专利权人:新华三技术有限公司

申请日:2018-09-28

公开(公告)日:2020-11-06

公开(公告)号:CN109408202B

主分类号:G06F9/46(20060101)

分类号:G06F9/46(20060101);G06F9/50(20060101)

优先权:

专利状态码:有效-授权

法律状态:2020.11.06#授权;2019.05.07#实质审查的生效;2019.03.01#公开

摘要:本发明提供一种LMDB扩展方法及装置,所述方法包括:当确定目标数据库文件的指针指向的目标进程的第一虚拟内存空间满足扩展条件时,为所述目标数据库文件在所述目标进程中映射第二虚拟内存空间;其中,所述第二虚拟内存空间的长度大于所述第一虚拟内存空间的长度;将所述目标数据库文件的指针指向所述第二虚拟内存空间。应用本发明实施例可以提高数据库文件的访问效率。

主权项:1.一种闪电内存映射数据库LMDB扩展方法,其特征在于,包括:当确定目标数据库文件的指针指向的目标进程的第一虚拟内存空间满足扩展条件时,为所述目标数据库文件在所述目标进程中映射第二虚拟内存空间;其中,所述第二虚拟内存空间的长度大于所述第一虚拟内存空间的长度;为所述目标数据库在所述目标进程中映射所述第二虚拟内存空间之前不释放所述第一虚拟内存空间;将所述目标数据库文件的指针指向所述第二虚拟内存空间;其中,所述将所述目标数据库文件的指针指向所述第二虚拟内存空间之后,还包括:当确定所述第一虚拟内存空间不存在访问者时,释放所述第一虚拟内存空间。

全文数据:一种LMDB扩展方法及装置技术领域本发明涉及网络通信技术领域,尤其涉及一种LMDB扩展方法及装置。背景技术LMDBLightningMemory-MappedDatabase,闪电内存映射数据库是一种基于MMAP一种内存映射文件的方法的数据库。MMAP可以将数据库文件的内容映射到进程内部虚拟内存空间,多个进程可以同时映射一个数据库文件,LMDB正是基于此,实现数据在不同进程间的共享。当一个数据库文件在一个进程中映射的虚拟内存空间的剩余空间为零时,该进程需要等待所有访问该虚拟内存空间的事务结束,再调用LMDB的接口,将原有的内存映射取消,即释放原有的虚拟内存空间剩余空间为零的虚拟内存空间,并重新在该进程中为该数据库文件映射一个更长的虚拟内存空间。然而,释放原有的虚拟内存空间,需要等待所有正在访问该虚拟内存空间的读者写者均结束时才能释放,而正在访问该虚拟内存空间的读者写者结束的时间不确定,等待所有正在访问该虚拟内存空间的读者写者可能要等很长时间,导致其他需要通过该进程访问该数据库文件的读者写者阻塞。发明内容本发明提供一种LMDB扩展方法及装置,以解决现有LMDB实现方案中LMDB扩展效率低的问题。根据本发明的第一方面,提供一种LMDB扩展方法,包括:当确定目标数据库文件的指针指向的目标进程的第一虚拟内存空间满足扩展条件时,为所述目标数据库文件在所述目标进程中映射第二虚拟内存空间;其中,所述第二虚拟内存空间的长度大于所述第一虚拟内存空间的长度;将所述目标数据库文件的指针指向所述第二虚拟内存空间。结合第一方面,在第一种可能的实现方式中,所述为所述目标数据库文件在所述目标进程中映射第二虚拟内存空间之前,还包括:当所述第一虚拟内存空间的剩余空间小于预设阈值时,在所述目标数据库文件的文件头部中增加预设标记;所述确定目标数据库文件的指针指向的目标进程的第一虚拟内存空间满足扩展条件,包括:当检测到所述目标数据库文件的文件头部存在所述预设标记时,确定所述目标数据库文件的指针指向的所述目标进程的所述第一虚拟内存空间满足扩展条件。结合第一方面,在第二种可能的实现方式中,所述目标数据库文件的文件头部记录有所述目标数据库文件的长度;所述确定目标数据库文件的指针指向的目标进程的第一虚拟内存空间满足扩展条件,包括:当检测到所述目标数据库文件的长度与所述第一虚拟内存空间的长度不一致时,确定所述目标数据库文件的指针指向的所述目标进程的所述第一虚拟内存空间满足扩展条件。结合第一方面,在第三种可能的实现方式中,所述将所述目标数据库文件的指针指向所述第二虚拟内存空间之后,还包括:当确定所述第一虚拟内存空间不存在访问者时,释放所述第一虚拟内存空间。结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述方法还包括:当检测到所述目标进程调用对应所述第一虚拟内存空间的事务开始接口时,将所述第一虚拟内存空间对应的引用计数增加预设值;当检测到所述目标进程调用对应所述第一虚拟内存空间的事务提交接口时,将所述第一虚拟内存空间对应的引用计数减去所述预设值;所述确定所述第一虚拟内存空间不存在访问者,包括:当检测到所述第一虚拟内存空间对应的引用计数的值为初始值时,确定所述第一虚拟内存空间不存在访问者。根据本发明的第二方面,提供一种LMDB扩展装置,其特征在于,包括:确定单元,用于确定目标数据库文件的指针指向的目标进程的第一虚拟内存空间是否满足扩展条件;映射单元,用于当确定目标数据库文件的指针指向的目标进程的第一虚拟内存空间满足扩展条件时,为所述目标数据库文件在所述目标进程中映射第二虚拟内存空间;其中,所述第二虚拟内存空间的长度大于所述第一虚拟内存空间的长度;控制单元,用于将所述目标数据库文件的指针指向所述第二虚拟内存空间。结合第二方面,在第一种可能的实现方式中,所述装置还包括:添加单元,用于当所述第一虚拟内存空间的剩余空间小于预设阈值时,在所述目标数据库文件的文件头部中增加预设标记;所述确定单元,具体用于当检测到所述目标数据库文件的文件头部存在所述预设标记时,确定所述目标数据库文件的指针指向的所述目标进程的所述第一虚拟内存空间满足扩展条件。结合第二方面,在第二种可能的实现方式中,所述目标数据库文件的文件头部记录有所述目标数据库文件的长度;所述确定单元,具体用于当检测到所述目标数据库文件的长度与所述第一虚拟内存空间的长度不一致时,确定所述目标数据库文件的指针指向的所述目标进程的所述第一虚拟内存空间满足扩展条件。结合第二方面,在第三种可能的实现方式中,所述控制单元,还用于当确定所述第一虚拟内存空间不存在访问者时,释放所述第一虚拟内存空间。结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述控制单元,具体用于当检测到所述目标进程调用对应所述第一虚拟内存空间的事务开始接口时,将所述第一虚拟内存空间对应的引用计数增加预设值;当检测到所述目标进程调用对应所述第一虚拟内存空间的事务提交接口时,将所述第一虚拟内存空间对应的引用计数减去所述预设值;所述控制单元,还具体用于当检测到所述第一虚拟内存空间对应的引用计数的值为初始值时,确定所述第一虚拟内存空间不存在访问者。应用本发明公开的技术方案,通过在确定目标数据库文件的指针指向的目标进程的第一虚拟内存空间满足扩展条件时,为目标数据库文件在所述目标进程中映射长度更长的第二虚拟内存空间,并将目标数据库文件的指针指向第二虚拟内存空间,从而,后续通过目标进程访问目标数据库文件的读者写者可以直接访问第二虚拟内存空间,而不需要等待所有正在访问第一虚拟内存空间的读者写者均结束,提高了数据库文件的访问效率。附图说明图1是本发明实施例提供的一种LMDB扩展方法的流程示意图;图2是本发明实施例提供的一种LMDB扩展的示意图;图3是本发明实施例提供的一种LMDB扩展装置的结构示意图;图4是本发明实施例提供的另一种LMDB扩展装置的结构示意图;图5是本发明实施例提供的一种LMDB扩展装置的硬件结构示意图。具体实施方式为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。请参见图1,为本发明实施例提供的一种LMDB扩展方法的流程示意图,其中,该LMDB扩展方法可以应用于运行LMDB的网络设备如交换机,如图1所示,该LMDB扩展方法可以包括以下步骤:为便于理解和描述,下文中以步骤101~步骤102的执行主体为网络设备为例进行说明。步骤101、当确定目标数据库文件的指针指向的目标进程的第一虚拟内存空间满足扩展条件时,为目标数据库文件在目标进程中映射第二虚拟内存空间;其中,第二虚拟内存空间的长度大于第一虚拟内存空间。本发明实施例中,目标数据库文件并不特指某一固定的数据库文件,而是可以指代网络设备中的任一数据库文件;此外,目标进程也并不特指某一固定的进程,而是可以指代网络设备中的任一进程,本发明实施例后续不再复述。本发明实施例中,当网络设备需要在目标数据库文件的指针指向的目标进程的虚拟内存空间本文中称为第一虚拟内存空间进行空间分配时,如接收到目标进程发起的针对该目标数据库文件的写事务,网络设备可以确定目标数据库文件的指针指向的目标进程的第一虚拟内存空间是否满足扩展条件。本发明实施例中,考虑到正在访问第一虚拟内存空间的读者写者结束的时间不确定,为了避免其他需要通过目标进程访问目标数据库文件的读者写者阻塞,当网络设备确定了目标数据库文件的指针指向的目标进程的第一虚拟内存空间满足扩展条件时,如第一虚拟内存空间的剩余空间为零,网络设备可以先不释放该第一虚拟内存空间,并为目标数据库文件在目标进程中映射另一个更长的虚拟内存空间本文中称为第二虚拟内存空间。其中,网络设备为目标数据库文件在目标进程中映射第二虚拟内存空间之后,正在访问第一虚拟内存空间的读者写者不受影响,继续访问第一虚拟内存空间。步骤102、将该目标数据库文件的指针指向第二虚拟内存空间。本发明实施例中,为了使后续的读者写者通过目标进程访问目标数据库文件时,可以访问第二虚拟内存空间,网络设备为目标数据库文件在目标进程中映射第二虚拟内存空间之后,可以将目标数据库文件的指向第一虚拟内存空间的指针调整为指向第二虚拟内存空间。需要说明的是,在本发明实施例中,当目标数据库文件在目标进程中第一次映射虚拟内存空间时,可以为该目标数据库文件新增一个指向该目标进程内的该虚拟内存空间的指针,对于通过该目标进程发起的针对该目标数据库文件的访问请求,可以根据该指针被定位至该目标进程内的该虚拟内存空间,其具体实现在此不做赘述。可见,在图1所示方法流程中,当目标数据库文件的指针指向的目标进程中的第一虚拟内存空间满足扩展条件时,在不释放第一虚拟内存空间的情况下,在目标进程中为目标数据库文件映射长度更大的第二虚拟内存空间,并将目标数据库文件的指向第一虚拟内存空间的指针调整为指向第二虚拟内存空间,从而,后续通过目标进程访问目标数据库文件的读者写者可以直接访问第二虚拟内存空间,而不需要等待所有正在访问第一虚拟内存空间的读者写者均结束,提高了数据库文件的访问效率。进一步地,在本发明实施例中,考虑到对于一个写事务,从事务开始begin到事务提交commit期间,可以有任意多个删除delete增加add修改modify操作,这些操作均需要从虚拟内存空间中分配空间,即均可能会导致虚拟内存空间的剩余空间为零,若在该写事务提交前虚拟内存空间的剩余空间为零,网络设备需要撤销该写事务已执行的操作删除、增加和或修改操作,并当完成虚拟内存空间扩展之后,重新执行该写事务的全部操作,进一步降低数据库文件的访问效率。因此,为了提高数据库文件的访问效率,需要尽量避免虚拟内存空间的剩余空间为零。相应地,在本发明其中一个实施例中,上述为目标数据库文件在目标进程中映射第二虚拟内存空间之前,还可以包括:当第一虚拟内存空间的剩余空间小于预设阈值时,在目标数据库文件的文件头部中增加预设标记;上述确定目标数据库文件的指针指向目标进程的第一虚拟内存空间满足扩展条件,可以包括:当检测到目标数据库文件的文件头部存在预设标记时,确定目标数据库文件的指针指向的目标进程的第一虚拟内存空间满足扩展条件。在该实施例中,为了避免虚拟内存空间的剩余空间为零导致的数据库文件访问效率降低,网络设备可以在虚拟内存空间的剩余空间小于预设阈值可以根据实际场景设定,如10M、20M等时就进行虚拟内存空间扩展。在该实施例中,当网络设备从第一虚拟内存空间中为写事务分配空间时,可以检测第一虚拟内存空间的剩余空间,并当第一虚拟内存空间的剩余空间小于预设阈值时,可以在该数据库文件的文件头部增加一个用于标识该虚拟内存空间需要扩展的标记本文中称为预设标记。当存在通过目标进程访问目标数据库文件的事务时,网络设备可以检测目标数据库文件的文件头部,以确定目标数据库文件的文件头部是否存在该预设标记,若存在,则确定第一虚拟内存空间满足扩展条件,并按照上述步骤101~步骤102中描述的方式进行处理。需要说明的是,在本发明实施例中,进行虚拟内存扩展时增长的空间的大小可以是固定的,例如,每次进行虚拟内存扩展时,增长20M空间;或者,进行虚拟内存扩展时增长的空间也可以是不固定的。此外,对于不同进程,上述预设阈值可以不同,即对于不同进程中映射的虚拟内存空间,可以在虚拟内存空间中的剩余空间降至不同的值时触发虚拟内存空间扩展。再者,网络设备为目标数据库文件在目标进程中映射第二虚拟内存空间之后,可以删除目标数据库文件的文件头部中的预设标记,以使访问者能够正常访问第二虚拟内存空间,其具体实现再次不做赘述。可见,在该实施例中,通过在虚拟内存空间的剩余空间不足预设阈值时,在对应的数据库文件的头部中增加预设标记,用于指示网络设备对该虚拟内存空间进行扩展,减少了虚拟内存空间的剩余空间为零的情况的发生,避免了由于虚拟内存空间的剩余空间为零导致的数据库文件访问效率降低,提高了数据库文件的访问效率。进一步地,在本发明实施例中,考虑到同一数据库文件可能会被映射至多个进程,为了保证虚拟内存空间扩展后,各进程中数据库文件的长度一致,可以在数据库文件的文件头部记录数据库文件的长度,当任一进程中的虚拟内存空间扩展时,可以更新对应的数据库文件的文件头部记录的数据库文件的长度该数据库文件的长度与对应的虚拟内存空间的长度匹配,以使映射有同一数据库文件的其他进程可以适应性地进行虚拟内存空间扩展。相应地,在本发明其中一个实施例中,上述确定目标数据库文件的指针指向的目标进程的第一虚拟内存空间满足扩展条件,可以包括:当检测到目标数据库文件的长度与第一虚拟内存空间的长度不一致时,确定目标数据库文件的指针指向的目标进程的第一虚拟内存空间满足扩展条件。在该实施例中,当读者写者通过目标进程访问目标数据库文件时,如通过目标进程调用对应第一虚拟内存空间的事务开始接口时,网络设备可以读取目标数据库文件的文件头部中记录的目标数据库文件的长度,并确定目标数据库文件的长度与第一虚拟内存空间的长度是否一致,若不一致,则可以确定存在其他映射有目标数据库文件的进程进行了虚拟内存空间扩展,此时,网络设备也可以对目标进程中映射的第一虚拟内存空间进行扩展。其中,在该实施例中,第二虚拟内存空间的长度与目标数据库文件的文件头部中记录的目标数据库文件的长度相同。进一步地,在本发明实施例中,由于网络设备为目标数据库文件在目标进程中映射第二虚拟内存空间之后,会将目标数据库文件的指向第一虚拟内存空间的指针调整为指向第二虚拟内存空间,因此,后续通过目标进程访问目标数据库文件的读者写者会访问第二虚拟内存空间,即第一虚拟内存空间不会出现新增的读者写者,因此,为了提高资源利用率,需要在适当时机对第一虚拟内存空间进行资源回收处理。相应地,在本发明其中一个实施例中,上述将目标数据库文件的指针指向第二虚拟内存空间之后,还可以包括:当确定第一虚拟内存空间不存在访问者时,释放第一虚拟内存空间。在该实施例中,网络设备将目标数据库文件的指针指向第二虚拟内存空间之后,可以在第一虚拟内存空间不存在访问者,即当前正在访问第一虚拟内存空间的访问者读者写者均结束时,释放第一虚拟内存空间,进行资源回收,以提高资源利用率。在一个示例中,为了使网络设备能够及时获知虚拟内存空间是否存在访问者,可以为各虚拟内存空间新增一个引用计数,对于任一虚拟内存空间,当对该虚拟内存空间的访问的事务开始时,将该引用计数增加预设值;当对该虚拟内存空间的访问的事务提交时,将该引用计数减去该预设值,从而,可以根据该引用计数确定正在访问虚拟内存空间的访问者的数量。相应地,当网络设备检测到目标进程调用对应第一虚拟内存空间的事务开始接口时,可以将第一虚拟内存空间对应的引用计数增加预设值;当检测到目标进程调用对应第一虚拟内存空间的事务的提交接口时,将第一虚拟内存空间对应的引用计数减去该预设值。上述确定第一虚拟内存空间不存在访问者,可以包括:当检测到第一虚拟内存空间对应的引用计数的值为初始值时,确定第一虚拟内存空间不存在访问者。举例来说,假设引用计数的初始值为0,预设值为1,则当网络设备检测到目标进程调用对应第一虚拟内存空间的事务开始接口时,可以将第一虚拟内存空间对应的引用计数加1;当检测到目标进程调用对应第一虚拟内存空间的事务提交接口时,可以将第一虚拟内存空间对应的引用计数减1,进而,当网络设备检测到第一虚拟内存空间对应的引用计数的值为0时,可以确定第一虚拟内存空间不存在访问者,此时,网络设备可以对第一虚拟内存空间进行释放。应该认识到,上述通过引用计数确定虚拟内存空间是否存在访问者的实现方式仅仅是本发明实施例中确定虚拟内存空间是否存在访问者的一种具体示例,而不是对本发明保护范围的限定,即在本发明实施例中,也可以通过其他方式确定虚拟内存空间是否存在访问者,例如,可以用户检测虚拟内存空间是否存在访问者,并将检测结果通知给网络设备;或者,可以根据访问者访问虚拟内存空间的时间的经验值确定访问者访问虚拟内存空间的最长时间,并根据该最长时间设置一个预设时间该预设时间大于等于该最长时间,网络设备可以在将目标数据库文件的指向第一虚拟内存空间的指针调整为指向第二虚拟内存空间时开始计时,并当计时时长达到该预设时间时,确定第一虚拟内存空间不存在访问者,其具体实现在此不做赘述。为了使本领域技术人员更好地理解本发明实施例提供的技术方案,下面结合具体实例对本发明实施例提供的技术方案进行说明。在该实施例中,假设网络设备在进程A中为数据库文件1映射了虚拟内存空间1,该虚拟内存空间1的长度为10M。当对应虚拟内存空间1的事务开始接口被调用时,网络设备可以检测数据库文件1的文件头部是否存在预设标记,若不存在预设标记,则确定不需要对虚拟内存空间1进行扩展,此时,可以按照现有处理流程进行虚拟内存空间1的访问。当通过进程A访问数据库文件1的写事务开始后,deleteaddmodify等操作均会触发该虚拟内存空间1的空间分配。网络设备每次从虚拟内存空间1中分配空间后,可以检测虚拟内存空间1的剩余空间是否大于等于预设阈值假设为1M。若检测到虚拟内存空间1的剩余空间小于1M,则可以在数据库文件1的文件头部增加一个预设标记。当对应虚拟内存空间1的事务开始接口被调用,且网络设备检测到数据库文件1的文件头部存在预设标记时,网络设备可以在进程A中为数据库文件1映射一个更长的虚拟内存空间下文中称为虚拟内存空间2,并将数据库文件1的指向虚拟内存空间1的指针调整为指向虚拟内存空间2,此后,通过进程A访问数据库文件1的访问者可以访问虚拟内存空间2,其示意图可以如图2所示。其中,假设每次进行虚拟内存空间扩展时增加的空间的大小为20M,则虚拟内存空间2为30M10M+20M=30M。需要说明的是,网络设备在进程A中为数据库文件1映射虚拟内存空间2之后,可以删除数据库文件1的文件头部的预设标记,后续访问者可以正常访问虚拟内存空间2。此外,在该实施例中,网络设备在进程A中为数据库文件1映射虚拟内存空间2之后,还可以将数据库文件1的文件头部中记录的数据库文件的长度更新为30M由10M更新为30M。进一步地,在该实施例中,为了提高资源利用率,虚拟内存空间可以新增引用计数,该引用计数的初始值为0,当虚拟内存空间对应的事务开始接口被调用时,虚拟内存空间的引用计数+1;当虚拟内存空间对应的事务提交接口被调用时,虚拟内存空间的引用计数-1。相应地,当网络设备检测到虚拟内存空间1的引用计数为0时,可以确定虚拟内存空间1不存在访问者,此时,网络设备可以将虚拟内存空间1释放,以实现资源回收。在该实施例中,假设网络设备在进程B中也为数据库文件1映射有虚拟内存空间下文中称为虚拟内存空间3,假设其长度为10M,则当对应虚拟内存空间3的事务开始接口被调用时,网络设备可以读取数据库文件1的文件头部中记录的数据库文件1的长度30M。由于数据库文件1的长度30M与虚拟内存空间3的长度10M不一致,因此,网络设备可以在进程B中为数据库文件1映射一个更长的虚拟内存空间下文中称为虚拟内存空间4,其长度为30M,以保证不同进程映射的同一数据库文件的长度相同。网络设备在进程B中为数据库文件1映射虚拟内存空间4之后,还可以将数据库文件1的指向虚拟内存空间3的指针调整为指向虚拟内存空间4。其中,对于虚拟内存空间3,可以按照上文中描述的方式进行资源回收,其具体实现在此不再赘述。通过以上描述可以看出,在本发明实施例提供的技术方案中,通过在确定目标数据库文件的指针指向的目标进程的第一虚拟内存空间满足扩展条件时,为目标数据库文件在所述目标进程中映射长度更长的第二虚拟内存空间,并将目标数据库文件的指针指向第二虚拟内存空间,从而,后续通过目标进程访问目标数据库文件的读者写者可以直接访问第二虚拟内存空间,而不需要等待所有正在访问第一虚拟内存空间的读者写者均结束,提高了数据库文件的访问效率。请参见图3,为本发明实施例提供一种LMDB扩展装置的结构示意图,其中,该装置可以应用于上述方法实施例中的网络设备,如图3所示,该LMDB扩展装置可以包括:确定单元310,用于确定目标数据库文件的指针指向的目标进程的第一虚拟内存空间是否满足扩展条件;映射单元320,用于当确定目标数据库文件的指针指向的目标进程的第一虚拟内存空间满足扩展条件时,为所述目标数据库文件在所述目标进程中映射第二虚拟内存空间;其中,所述第二虚拟内存空间的长度大于所述第一虚拟内存空间的长度;控制单元330,用于将所述目标数据库文件的指针指向所述第二虚拟内存空间。请一并参见图4,为本发明实施例提供的另一种LMDB扩展装置的结构示意图,如图4所示,在图3所示LMDB扩展装置的基础上,图4所示LMDB扩展装置还可以包括:添加单元340,用于当所述第一虚拟内存空间的剩余空间小于预设阈值时,在所述目标数据库文件的文件头部中增加预设标记;所述确定单元310,具体用于当检测到所述目标数据库文件的文件头部存在所述预设标记时,确定所述目标数据库文件的指针指向的所述目标进程的所述第一虚拟内存空间满足扩展条件。在可选实施例中,所述目标数据库文件的文件头部记录有所述目标数据库文件的长度;所述确定单元,具体用于当检测到所述目标数据库文件的长度与所述第一虚拟内存空间的长度不一致时,确定所述目标数据库文件的指针指向的所述目标进程的所述第一虚拟内存空间满足扩展条件。在可选实施例中,所述控制单元330,还用于当确定所述第一虚拟内存空间不存在访问者时,释放所述第一虚拟内存空间。在可选实施例中,所述控制单元330,具体用于当检测到所述目标进程调用对应所述第一虚拟内存空间的事务开始接口时,将所述第一虚拟内存空间对应的引用计数增加预设值;当检测到所述目标进程调用对应所述第一虚拟内存空间的事务提交接口时,将所述第一虚拟内存空间对应的引用计数减去所述预设值;所述控制单元330,还具体用于当检测到所述第一虚拟内存空间对应的引用计数的值为初始值时,确定所述第一虚拟内存空间不存在访问者。请参见图5,为本发明实施例提供的一种LMDB扩展装置的硬件结构示意图。该LMDB扩展装置可以包括处理器501、存储有机器可执行指令的机器可读存储介质502。处理器501与机器可读存储介质502可经由系统总线503通信。并且,通过读取并执行机器可读存储介质502中与LMDB扩展逻辑对应的机器可执行指令,处理器501可执行上文描述的LMDB扩展方法。本文中提到的机器可读存储介质502可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是易失存储器、非易失性存储器或者类似的存储介质。具体地,机器可读存储介质502可以是RAMRadomAccessMemory,随机存取存储器、闪存、存储驱动器如硬盘驱动器、固态硬盘、任何类型的存储盘如光盘、DVD等,或者类似的存储介质,或者它们的组合。本发明实施例还提供了一种包括机器可执行指令的机器可读存储介质,例如图5中的机器可读存储介质502,所述机器可执行指令可由LMDB扩展装置中的处理器501执行以实现以上描述的LMDB扩展方法。上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。由上述实施例可见,通过在确定目标数据库文件的指针指向的目标进程的第一虚拟内存空间满足扩展条件时,为目标数据库文件在所述目标进程中映射长度更长的第二虚拟内存空间,并将目标数据库文件的指针指向第二虚拟内存空间,从而,后续通过目标进程访问目标数据库文件的读者写者可以直接访问第二虚拟内存空间,而不需要等待所有正在访问第一虚拟内存空间的读者写者均结束,提高了数据库文件的访问效率。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

权利要求:1.一种闪电内存映射数据库LMDB扩展方法,其特征在于,包括:当确定目标数据库文件的指针指向的目标进程的第一虚拟内存空间满足扩展条件时,为所述目标数据库文件在所述目标进程中映射第二虚拟内存空间;其中,所述第二虚拟内存空间的长度大于所述第一虚拟内存空间的长度;将所述目标数据库文件的指针指向所述第二虚拟内存空间。2.根据权利要求1所述的方法,其特征在于,所述为所述目标数据库文件在所述目标进程中映射第二虚拟内存空间之前,还包括:当所述第一虚拟内存空间的剩余空间小于预设阈值时,在所述目标数据库文件的文件头部中增加预设标记;所述确定目标数据库文件的指针指向的目标进程的第一虚拟内存空间满足扩展条件,包括:当检测到所述目标数据库文件的文件头部存在所述预设标记时,确定所述目标数据库文件的指针指向的所述目标进程的所述第一虚拟内存空间满足扩展条件。3.根据权利要求1所述的方法,其特征在于,所述目标数据库文件的文件头部记录有所述目标数据库文件的长度;所述确定目标数据库文件的指针指向的目标进程的第一虚拟内存空间满足扩展条件,包括:当检测到所述目标数据库文件的长度与所述第一虚拟内存空间的长度不一致时,确定所述目标数据库文件的指针指向的所述目标进程的所述第一虚拟内存空间满足扩展条件。4.根据权利要求1所述的方法,其特征在于,所述将所述目标数据库文件的指针指向所述第二虚拟内存空间之后,还包括:当确定所述第一虚拟内存空间不存在访问者时,释放所述第一虚拟内存空间。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:当检测到所述目标进程调用对应所述第一虚拟内存空间的事务开始接口时,将所述第一虚拟内存空间对应的引用计数增加预设值;当检测到所述目标进程调用对应所述第一虚拟内存空间的事务提交接口时,将所述第一虚拟内存空间对应的引用计数减去所述预设值;所述确定所述第一虚拟内存空间不存在访问者,包括:当检测到所述第一虚拟内存空间对应的引用计数的值为初始值时,确定所述第一虚拟内存空间不存在访问者。6.一种闪电内存映射数据库LMDB扩展装置,其特征在于,包括:确定单元,用于确定目标数据库文件的指针指向的目标进程的第一虚拟内存空间是否满足扩展条件;映射单元,用于当确定目标数据库文件的指针指向的目标进程的第一虚拟内存空间满足扩展条件时,为所述目标数据库文件在所述目标进程中映射第二虚拟内存空间;其中,所述第二虚拟内存空间的长度大于所述第一虚拟内存空间的长度;控制单元,用于将所述目标数据库文件的指针指向所述第二虚拟内存空间。7.根据权利要求6所述的装置,其特征在于,所述装置还包括:添加单元,用于当所述第一虚拟内存空间的剩余空间小于预设阈值时,在所述目标数据库文件的文件头部中增加预设标记;所述确定单元,具体用于当检测到所述目标数据库文件的文件头部存在所述预设标记时,确定所述目标数据库文件的指针指向的所述目标进程的所述第一虚拟内存空间满足扩展条件。8.根据权利要求6所述的装置,其特征在于,所述目标数据库文件的文件头部记录有所述目标数据库文件的长度;所述确定单元,具体用于当检测到所述目标数据库文件的长度与所述第一虚拟内存空间的长度不一致时,确定所述目标数据库文件的指针指向的所述目标进程的所述第一虚拟内存空间满足扩展条件。9.根据权利要求6所述的装置,其特征在于,所述控制单元,还用于当确定所述第一虚拟内存空间不存在访问者时,释放所述第一虚拟内存空间。10.根据权利要求9所述的装置,其特征在于,所述控制单元,具体用于当检测到所述目标进程调用对应所述第一虚拟内存空间的事务开始接口时,将所述第一虚拟内存空间对应的引用计数增加预设值;当检测到所述目标进程调用对应所述第一虚拟内存空间的事务提交接口时,将所述第一虚拟内存空间对应的引用计数减去所述预设值;所述控制单元,还具体用于当检测到所述第一虚拟内存空间对应的引用计数的值为初始值时,确定所述第一虚拟内存空间不存在访问者。

百度查询: 新华三技术有限公司 一种LMDB扩展方法及装置

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。

相关技术
相关技术
相关技术