System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于MMAP实现缓冲池的方法及系统技术方案_技高网

基于MMAP实现缓冲池的方法及系统技术方案

技术编号:40409483 阅读:8 留言:0更新日期:2024-02-20 22:29
本发明专利技术公开了一种基于MMAP实现缓冲池的方法及系统,属于数据库技术领域,本发明专利技术要解决的技术问题为如何实现在保留MMAP机制带来的节省拷贝时间的优点的同时,也能像传统缓冲池一样淘汰内存中的过期数据,保证缓冲池不会占用过多的物理内存,采用的技术方案为:该方法是将数据文件的不同数据块通过MMAP机制映射到内存虚拟空间,查询或者写入在内存中快速操作;再操作系统将脏页数据写回文件数据块;具体如下:查找文件数据块;维护数据库链表及设定LRU淘汰机制;定时清理标记删除数据块及设定时间内未访问数据块;文件扩容及文件空间回收。该系统包括索引模块、MMAP管理模块、定时清理模块及文件管理模块。

【技术实现步骤摘要】

本专利技术涉及数据库,具体地说是一种基于mmap实现缓冲池的方法及系统。


技术介绍

1、部分数据库使用了mmap机制将数据文件映射到内存,在文件数据读取到操作系统的page cache后,不需要内核空间到用户空间的数据拷贝,节省了一次拷贝过程,加快了读写速度;同时操作系统负责将脏页数据写回磁盘,只要主机不断电就不会丢失数据,应用无需自己控制数据页的读取和刷盘;同时进程虚拟地址空间非常大,应用可以像读写内存一样直接读写磁盘文件,方便快捷。

2、但是mmap机制也存在如下问题:

3、①数据文件较大时,解除映射(munmap)是一个比较耗时的操作,因此频繁的建立/解除映射关系会严重影响查询/写入性能;

4、②如果mmap后不执行munmap,将无法释放已读数据占用的物理内存,直到物理内存不足时,操作系统才会把部分内存数据写回磁盘文件;

5、③mmap申请的地址空间写满后,需要扩容重新建立映射(mremap),可能引起虚拟空间地址的改变和拷贝开销。

6、故如何实现在保留mmap机制带来的节省拷贝时间的优点的同时,也能像传统缓冲池一样淘汰内存中的过期数据,保证缓冲池不会占用过多的物理内存是目前亟待解决的技术问题。


技术实现思路

1、本专利技术的技术任务是提供一种基于mmap实现缓冲池的方法及系统,来解决如何实现在保留mmap机制带来的节省拷贝时间的优点的同时,也能像传统缓冲池一样淘汰内存中的过期数据,保证缓冲池不会占用过多的物理内存的问题。

2、本专利技术的技术任务是按以下方式实现的,一种基于mmap实现缓冲池的方法,该方法是将数据文件的不同数据块(data block)通过mmap机制映射到内存虚拟空间,查询或者写入在内存中快速操作;再操作系统将脏页数据写回文件数据块;具体如下:

3、查找文件数据块;

4、维护数据库链表及设定lru淘汰机制;

5、定时清理标记删除数据块及设定时间内未访问数据块;

6、文件扩容及文件空间回收。

7、作为优选,查找文件数据块具体如下:

8、写入语句包括记录的主键列信息,在主键索引上查找;其中,主键索引的采用简单高效的稀疏索引模式,通过主键键值快速找到数据文件上的任一个或者多个数据块;

9、查询语句通过非主键进行查找过滤;其中,非主键列上的索引采用minmax模式,minmax模式索引的目的是快速滤掉不需要扫描的数据块;数据的物理存储在非主键上不保证有序,因此符合过滤条件的数据可能分布在多个不连续的数据块中。

10、作为优选,维护数据库链表及设定lru淘汰机制具体如下:

11、查看待扫描数据块是否已经在缓冲池中:

12、若待扫描数据块已经在缓冲池中,则更新数据块最新访问时间,并将该数据块移到lru(least recent used)链表的头部;

13、若待扫描数据块不在缓冲池中,则建立mmap映射后,加入lru链表的头部;每个数据块大小固定,因此内存映射不需要mremap操作;

14、记录缓冲池数据块总大小,若超出默认设置,则将lru链表尾部的数据块移除并解除映射(munmap)。

15、作为优选,定时清理标记删除数据块及设定时间内未访问数据块具体如下:

16、每隔15分钟启动一个周期任务;

17、检查lru链表上的数据块,若已经被标记为整体删除,则将该数据块从缓存列表移除并解除映射(munmap);

18、检查lru链表上数据块的最新访问时间,若(当前时间–最新访问时间)>2*周期任务间隔时间,则将该数据块从缓存列表移除并解除映射(munmap)。

19、更优地,文件扩容及文件空间回收具体如下:

20、记录文件数据块的使用率,当使用率超过90%时,提前对文件进行扩容操作,并初始化新增加的数据块;

21、记录被标记整体删除的文件数据块,当删除的数据块超过50%时,对文件进行重组(reorg)回收磁盘空间;具体如下:

22、暂停写入服务,此时仅允许查询服务;

23、创建新的数据文件,从原数据文件拷贝有效数据块到新文件;

24、创建新的索引文件;

25、数据块拷贝完成后切换数据和/或索引文件,清空缓冲池。

26、一种基于mmap实现缓冲池的系统,该系统包括:

27、索引模块,用于查询或写入操作索引文件,根据主键的稀疏索引或其他列的min和/或max索引找到需要扫描的数据块;

28、mmap管理模块,用于维护一个lru链表,待扫描数据块通过mmap机制映射后放入lru链表;若加载的数据块大于超过预设数据块大小,则淘汰末尾数据块;

29、定时清理模块,用于后台任务定期检查,将lru链表中规定时间内未访问的数据块淘汰;

30、文件管理模块,用于在文件数据库的使用率超过预设使用率阈值时,文件进行扩容操作;同时,若文件被标记为删除的数据块超过设定比例时,自动进行重组操作,回收空间。

31、作为优选,所述索引模块的工作过程具体如下:

32、(1)写入语句包括记录的主键列信息,在主键索引上查找;其中,主键索引的采用简单高效的稀疏索引模式,通过主键键值快速找到数据文件上的任一个或者多个数据块;

33、(2)查询语句通过非主键进行查找过滤;其中,非主键列上的索引采用minmax模式,minmax模式索引的目的是快速滤掉不需要扫描的数据块;数据的物理存储在非主键上不保证有序,因此符合过滤条件的数据可能分布在多个不连续的数据块中;

34、所述mmap管理模块的工作过程具体如下:

35、(1)查看待扫描数据块是否已经在缓冲池中:

36、①若待扫描数据块已经在缓冲池中,则更新数据块最新访问时间,并将该数据块移到lru(least recent used)链表的头部;

37、②若待扫描数据块不在缓冲池中,则建立mmap映射后,加入lru链表的头部;每个数据块大小固定,因此内存映射不需要mremap操作;

38、(2)记录缓冲池数据块总大小,若超出默认设置,则将lru链表尾部的数据块移除并解除映射(munmap)。

39、更优地,所述定时清理模块的工作过程具体如下:

40、(1)每隔15分钟启动一个周期任务;

41、(2)检查lru链表上的数据块,若已经被标记为整体删除,则将该数据块从缓存列表移除并解除映射(munmap);

42、(3)检查lru链表上数据块的最新访问时间,若(当前时间–最新访问时间)>2*周期任务间隔时间,则将该数据块从缓存列表移除并解除映射(munmap);

43、所述文件管理模块的工作过程具体如下:

44、(1)记录文件数据块的使用本文档来自技高网...

【技术保护点】

1.一种基于MMAP实现缓冲池的方法,其特征在于,该方法是将数据文件的不同数据块通过MMAP机制映射到内存虚拟空间,查询或者写入在内存中快速操作;再操作系统将脏页数据写回文件数据块;具体如下:

2.根据权利要求1所述的基于MMAP实现缓冲池的方法,其特征在于,查找文件数据块具体如下:

3.根据权利要求1所述的基于MMAP实现缓冲池的方法,其特征在于,维护数据库链表及设定LRU淘汰机制具体如下:

4.根据权利要求1所述的基于MMAP实现缓冲池的方法,其特征在于,定时清理标记删除数据块及设定时间内未访问数据块具体如下:

5.根据权利要求1-4中任一项所述的基于MMAP实现缓冲池的方法,其特征在于,文件扩容及文件空间回收具体如下:

6.一种基于MMAP实现缓冲池的系统,其特征在于,该系统包括:

7.根据权利要求6所述的基于MMAP实现缓冲池的系统,其特征在于,所述索引模块的工作过程具体如下:

8.根据权利要求6或7所述的基于MMAP实现缓冲池的系统,其特征在于,所述定时清理模块的工作过程具体如下:>

9.一种电子设备,其特征在于,包括:存储器和至少一个处理器;

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序可被处理器执行以实现如权利要求1至5中任一项所述的基于MMAP实现缓冲池的方法。

...

【技术特征摘要】

1.一种基于mmap实现缓冲池的方法,其特征在于,该方法是将数据文件的不同数据块通过mmap机制映射到内存虚拟空间,查询或者写入在内存中快速操作;再操作系统将脏页数据写回文件数据块;具体如下:

2.根据权利要求1所述的基于mmap实现缓冲池的方法,其特征在于,查找文件数据块具体如下:

3.根据权利要求1所述的基于mmap实现缓冲池的方法,其特征在于,维护数据库链表及设定lru淘汰机制具体如下:

4.根据权利要求1所述的基于mmap实现缓冲池的方法,其特征在于,定时清理标记删除数据块及设定时间内未访问数据块具体如下:

5.根据权利要求1-4中任一项所述的基于mmap实现缓冲池...

【专利技术属性】
技术研发人员:时振宇魏可伟刘旺徐元慧朱德润
申请(专利权)人:山东浪潮数据库技术有限公司
类型:发明
国别省市:

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

1