System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及数据库,具体地说是一种基于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实现缓冲池...
【专利技术属性】
技术研发人员:时振宇,魏可伟,刘旺,徐元慧,朱德润,
申请(专利权)人:山东浪潮数据库技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。