一种数据库内存管理系统及方法与流程

专利查询2023-10-8  141



1.本发明涉及数据库的技术领域,尤其涉及一种数据库内存管理系统及方法。


背景技术:

2.目前,数据库系统有自己的内存管理和调度,在内存中完成用户数据地处理和维护;系统的整个内存空间在启动时分配,依据存放数据和功能的不同,被划分为多个部分,每个部分分别使用单独的页表进行请求调页管理、请求淘汰换页管理。一个数据库系统可以使用多个页尺寸读取磁盘中的数据。
3.数据库系统的内存包括两部分:sga和pga。sga即systemglobalarea系统全局区。一个数据库实例对应一个sga,sga在数据库实例启动的时候被分配。sga作为数据库实例的基本组成,是一个非常大的内存空间,甚至可以占据物理内存的80%。pga即programglobalarea程序全局区。一个服务进程启动的时候就会分配一个pga。在oracleinstance中pga可能会很多,例如启动10个serverprocess就有10个pga。
4.如何对数据库系统内的缓冲区的数据堆积进行处理,对于数据库系统的运行效率来说是一个至关重要的问题。


技术实现要素:

5.本发明提供了一种数据库内存管理系统及方法,用于解决如何对数据库系统内的缓冲区的数据堆积进行处理的技术问题。
6.本发明提供的一种数据库内存管理系统,包括:
7.静态缓冲区,其用于存储符合第一预置规则的数据,所述第一预置规则包括在第一预置时间内未发生更新;
8.动态缓冲区,其用于存储未符合第一预置规则的数据;
9.日志缓冲区,其用于赋予所述动态缓冲区内根据第一预置规则进行处理的数据,并生成日志存储于日志缓冲区内;
10.控制模块,其用于获取处理请求时,根据所述处理请求,遍历所述动态缓冲区,当所述处理请求未在所述动态缓冲区查询到对应的数据时,则在所述动态缓冲区生成与所述请求对应的第一缓冲区,将所述静态缓冲区内与所述处理请求对应的数据分别写入所述第一缓冲区,并对所述静态缓冲区执行检查点。
11.在一些实施例中,所述控制模块还用于将所述静态缓冲区内与所述处理请求对应的数据分别写入所述第一缓冲区,并对所述静态缓冲区内与所述处理请求对应的数据执行检查点的过程形成日志并赋予标记存储于所述日志缓冲区内。
12.在一些实施例中,还包括:
13.写入模块,其用于获取写入请求时,判断所述动态缓冲区是否具有空闲的缓冲区,若无,则判断所述静态缓冲区是否具有空闲的缓冲区,若无,则基于lru缓存算法对所述静态缓冲区执行检查好点,在所述静态缓冲区内生成空闲的第三缓冲区;基于lru缓存算法对
所述动态缓冲区内进行选择,将所述动态缓冲区内的部分数据写入所述第三缓冲区内,在所述动态缓冲区生成空闲的第四缓冲区,写入请求内的数据写入所述第四缓冲区内。
14.在一些实施例中,还包括:
15.字典缓冲区,其用于保存数据字典信息;
16.解析模块,其用于当获取sql语句,判断所述sql语句转化为数字码,将所述数字码传递给一个hash函数,并返回一个hash值,在动态缓存区中查找是否存在相同的hash值,若是,则直接根据的hash值对应的数据执行;若无,则对sql语句通过所述字典缓冲区内的数据字典信息进行语法分析,生成编译代码;并将所述sql语句、所述hash值以及所述编译代码缓存在所述动态缓冲区及所述字典缓冲区中。
17.在一些实施例中所述解析模块中的对sql语句通过所述字典缓冲区内的数据字典信息进行语法分析为:通过所述数据字典信息检查sql语法的正确性,若正确,则对sql语句中涉及的对象进行解析,并对照数据字典信息检查所述对象的名称以及相关结构,根据数据字典信息中是否存在相应对象的统计数据以及是否使用了存储大纲,生成一个执行计划,根据执行计划生成编译代码。
18.在一些实施例中,所述字典缓冲区中的所述对象包括表、索引和视图。
19.在一些实施例中,所述解析模块中的根据执行计划生成编译代码为:根据执行计划和数据字典信息核对sql语句对相应对象的执行权限,生成编译代码。
20.在一些实施例中,所述控制模块还用于将所述解析模块对所述sql语句的解析过程生成日志存储于所述日志缓冲区内。
21.在一些实施例中,还包括:
22.更新模块,其用于当获取更新请求时,遍历所述动态缓冲区,在所述动态缓冲区内查询到与该请求对应的原始数据,将该请求对应的数据更新到所述动态缓冲区内,将所述原始数据写入所述静态缓冲区内,并将该过程生成日志存储与所述日志缓冲区。
23.在一些实施例中,还包括:
24.删除模块,其用于当获取删除请求时,遍历所述动态缓冲区,若在所述动态缓冲区查询到所述删除请求对应的数据时,则直接执行删除,同时对该数据执行检查点。
25.本技术的实施例还提供了一种数据库内存管理方法,获取处理请求;
26.根据所述处理请求,遍历所述动态缓冲区;
27.当所述处理请求未在所述动态缓冲区查询到对应的数据时,则在所述动态缓冲区生成与所述请求对应的第一缓冲区;
28.根据所述第一缓冲区,将所述静态缓冲区内与所述处理请求对应的数据分别写入所述第一缓冲区,以及对所述静态缓冲区内与所述处理请求对应的数据执行检查点;
29.其中,静态缓冲区用于存储符合第一预置规则的数据,所述第一预置规则包括在第一预置时间内未发生更新;
30.动态缓冲区用于存储未符合第一预置规则的数据;
31.日志缓冲区用于赋予所述动态缓冲区内根据第一预置规则进行处理的数据,并生成日志存储于日志缓冲区内。
32.从以上技术方案可以看出,本发明实施例具有以下优点:
33.本发明实施例提供了一种数据库内存管理系统及方法,所述静态缓冲区能够存储
在第一预置时间内未发生更新的数据,所述动态缓冲区能够存储在第一预置时间内发生更新过的数据,能够自动的对数据进行分类缓存,而且该缓存过程自动记录在所述日志缓冲区中;通过控制模块在获取到处理请求时,先对所述动态缓冲区进行遍历,若直接获取到与所述处理请求数据相对应的数据时,则直接进行处理,能够快速的对数据进行处理,当所述处理请求未在所述动态缓冲区查询到对应的数据时,则在所述动态缓冲区生成与所述请求对应的第一缓冲区,将所述静态缓冲区内与所述处理请求对应的数据分别写入所述第一缓冲区,并对所述静态缓冲区内与所述处理请求对应的数据执行检查点,从而一方面使得所述将所述静态缓冲区内的数据能够读取到所述动态缓冲区内,另一方面也将该数据通过执行检查点的方式写入磁盘,并更新控制文件和数据文件,从而对原始的数据形成有效地保存,能够避免原始的数据的丢失同时也能够对数据进行更新,避免了数据库内存内的数据不断的堆积,导致无空闲的缓冲区可以分配接收数据,进而有效地解决了如何对数据库系统内的缓冲区的数据堆积进行处理的技术问题。
附图说明
34.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
35.图1为本发明实施例提供的一种数据库内存管理系统的系统框架图;
36.图2为本发明实施例提供的一种数据库内存管理方法的流程图。
37.其中:
38.100、动态缓冲区;200、静态缓冲区;300、日志缓冲区;400、字典缓冲区;500、控制模块;600、写入模块;700、解析模块;800、更新模块;900、删除模块。
具体实施方式
39.为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
40.除非另有定义,本发明实施例所使用的所有的技术和科学术语与属于本发明实施例的技术领域的技术人员通常理解的含义相同。本发明中所使用的术语只是为了描述具体的实施例的目的,不是旨在限制本发明。
41.在对本发明实施例进行进一步详细说明之前,先对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
42.请参阅图1,图1为本发明实施例提供的一种数据库内存管理系统的系统框架图。
43.如图1所示,本实施例提供了一种数据库内存管理系统,包括:
44.静态缓冲区200,其用于存储符合第一预置规则的数据,所述第一预置规则包括在第一预置时间内未发生更新;
45.动态缓冲区100,其用于存储未符合第一预置规则的数据;
46.日志缓冲区300,其用于赋予所述动态缓冲区100内根据第一预置规则进行处理的数据,并生成日志存储于日志缓冲区300内;
47.控制模块500,其用于获取处理请求时,根据所述处理请求,遍历所述动态缓冲区100,当所述处理请求未在所述动态缓冲区100查询到对应的数据时,则在所述动态缓冲区100生成与所述请求对应的第一缓冲区,将所述静态缓冲区200内与所述处理请求对应的数据分别写入所述第一缓冲区,并对所述静态缓冲区200执行检查点。
48.本发明实施例提供了一种数据库内存管理系统,所述静态缓冲区200能够存储在第一预置时间内未发生更新的数据,所述动态缓冲区100能够存储在第一预置时间内发生更新过的数据,能够自动的对数据进行分类缓存,而且该缓存过程自动记录在所述日志缓冲区300中;通过控制模块500在获取到处理请求时,先对所述动态缓冲区100进行遍历,若直接获取到与所述处理请求数据相对应的数据时,则直接进行处理,能够快速的对数据进行处理,当所述处理请求未在所述动态缓冲区100查询到对应的数据时,则在所述动态缓冲区100生成与所述请求对应的第一缓冲区,将所述静态缓冲区200内与所述处理请求对应的数据分别写入所述第一缓冲区,并对所述静态缓冲区200内与所述处理请求对应的数据执行检查点,从而一方面使得所述将所述静态缓冲区200内的数据能够读取到所述动态缓冲区100内,另一方面也将该数据通过执行检查点的方式写入磁盘,并更新控制文件和数据文件,从而对原始的数据形成有效地保存,能够避免原始的数据的丢失同时也能够对数据进行更新,避免了数据库内存内的数据不断的堆积,导致无空闲的缓冲区可以分配接收数据。
49.所述检查点是一个数据库事件,它把修改数据从高速缓存写入磁盘,并更新控制文件和数据文件。
50.数据库内存管理系统的数据缓冲区(数据库管理系统实例的系统全局区(sga:systemglobalarea)控制结构)是至少包括静态缓冲区200、动态缓冲区100、日志缓冲区300和字典缓冲区400。
51.在本实施例中,为了能够避免所述数据库内存的堆积,在所述静态缓冲区200内的数据满足预置时间内未发生处理时,则可将这些数据自动存储到磁盘中,从而能够进行自动的降低占用数据库内存的数据。
52.所述处理请求包括写入新的数据、更新数据、删除数据以及
53.在一些实施例中,所述控制模块500还用于将所述静态缓冲区200内与所述处理请求对应的数据分别写入所述第一缓冲区,并对所述静态缓冲区200内与所述处理请求对应的数据执行检查点的过程形成日志并赋予标记存储于所述日志缓冲区300内。
54.所述控制模块500能够在所述数据库内存管理系统内发生的所有的事项进行记录并生成对应的日志,在日志上赋予时间戳以及编号等标记,从而能够便于后续查找数据的日志。
55.在一些实施例中,还包括:
56.写入模块600,其用于获取写入请求时,判断所述动态缓冲区100是否具有空闲的缓冲区,若无,则判断所述静态缓冲区200是否具有空闲的缓冲区,若无,则基于lru缓存算法对所述静态缓冲区200执行检查好点,在所述静态缓冲区200内生成空闲的第三缓冲区;基于lru缓存算法对所述动态缓冲区100内进行选择,将所述动态缓冲区100内的部分数据
写入所述第三缓冲区内,在所述动态缓冲区100生成空闲的第四缓冲区,写入请求内的数据写入所述第四缓冲区内。
57.所述写入模块600你能够根据写入请求,对所述动态缓冲区100进行优先判断,因为通常有新的数据进入进行处理都是通过动态缓冲区100,动态缓冲区100是最为活跃的工作区,新写入的请求也是在第一预置时间内处理的请求数据,其在动态缓冲区100内先进行判断,是否具有空闲的缓冲区,也可以说是否为干净的缓冲区,如有则直接再次进行处理即可,若没有,则对所述静态缓冲区200进行判断,若静态缓冲区200有空闲的缓冲区,则将通过lru缓存算法对所述动态缓冲区100进行选择,将动态缓冲区100的部分数据写入到所述静态缓冲区200内,将写入请求的数据对应在缓存在动态缓冲区100内;若所述静态缓冲区200内也没有对应的空闲的缓冲区,因为有些数据可能会连续堆积,没有达到上述第一预置规则使得所述静态缓冲区200执行检查点,因此,在所述静态缓冲区200内也没有对应的空闲的缓冲区时,基于lru缓存算法对所述静态缓冲区200执行检查点,在所述静态缓冲区200内生成空闲的第三缓冲区,从而使得原数据能够的得到保存的同时,也能够在所述静态缓冲区200生成空闲的第三缓冲区,在通过lru缓存算法对所述动态缓冲区100进行选择,将动态缓冲区100的部分数据写入到所述第三缓冲区内,将写入请求的数据对应在缓存在动态缓冲区100内,使得写入请求的数据能够缓存在动态缓冲区100内,而又能够保存原数据,避免原数据的丢失。
58.在一些实施例中,还包括:
59.字典缓冲区400,其用于保存数据字典信息;
60.解析模块700,其用于当获取sql语句,判断所述sql语句转化为数字码,将所述数字码传递给一个hash函数,并返回一个hash值,在动态缓存区中查找是否存在相同的hash值,若是,则直接根据的hash值对应的数据执行;若无,则对sql语句通过所述字典缓冲区400内的数据字典信息进行语法分析,生成编译代码;并将所述sql语句、所述hash值以及所述编译代码缓存在所述动态缓冲区100及所述字典缓冲区400中。
61.所述解析模块700中,所述sql语句的字符转化为ascii等效数字码,接着这个ascii码被传递给一个hash函数,并返回一个hash值,然后将到动态缓冲区100中去查找是否存在相同的hash值,如果存在,则将使用这条语句已在高速缓存在动态缓冲区100中的已分析过的执行计划版本来执行,从而能够提高sql语句的解析效率。
62.其中,所述解析模块700中的对sql语句通过所述字典缓冲区400内的数据字典信息进行语法分析为:通过所述数据字典信息检查sql语法的正确性,若正确,则对sql语句中涉及的对象进行解析,并对照数据字典信息检查所述对象的名称以及相关结构,根据数据字典信息中是否存在相应对象的统计数据以及是否使用了存储大纲,生成一个执行计划,根据执行计划生成编译代码。
63.如果动态缓冲区100中去查找没有存在相同的hash值,在sql分析阶段将用到字典缓冲区400从数据字典中核对表、视图等结构的时候,需要将数据字典从磁盘读入字典缓冲区400,因此,在读入之前也要使用字典缓冲区400锁存器(library cache pin,library cache lock)来申请用于缓存数据字典。到现在为止,这个sql语句已经被编译成可执行的代码了。
64.其中,所述字典缓冲区400中的所述对象包括表、索引和视图。
65.所述解析模块700中的根据执行计划生成编译代码为:根据执行计划和数据字典信息核对sql语句对相应对象的执行权限,生成编译代码。
66.在一些实施例中,所述控制模块500还用于将所述解析模块700对所述sql语句的解析过程生成日志存储于所述日志缓冲区300内。
67.对于上述解析模块700内执行的过程,通过控制模块500对其进行记录,并生成日志存储于日志缓冲区300内,以便通过日志缓冲区300对其进行记录管理,以便后续查询。
68.在一些实施例中,还包括:
69.更新模块800,其用于当获取更新请求时,遍历所述动态缓冲区100,在所述动态缓冲区100内查询到与该请求对应的原始数据,将该请求对应的数据更新到所述动态缓冲区100内,将所述原始数据写入所述静态缓冲区200内,并将该过程生成日志存储与所述日志缓冲区300。
70.其中,所述更新模块能够在接收到更新请求后,对所述动态缓冲区内对应的数据进行更新,然后再将该数据的原始数据写入所述静态缓冲区内,从而能够将原始数据保存到静态缓冲区内,以便后续调用,同时通过将该过程生成日志缓存到日志缓冲区内。
71.在一些实施例中,还包括:
72.删除模块900,其用于当获取删除请求时,遍历所述动态缓冲区100,若在所述动态缓冲区100查询到所述删除请求对应的数据时,则直接执行删除,同时对该数据执行检查点。
73.所述删除模块接收到删除请求时,其能够直接对该数据进行删除,而且再删除的同时对将该数据存储至磁盘中,避免误删除时,以及在重复缓冲区无法进行恢复的情况下,通过磁盘能够将其进行恢复,避免误删除导致数据丢失。
74.如图2所示,本技术的实施例还提供了一种数据库内存管理方法,包括:
75.s1:获取处理请求;
76.s2:根据所述处理请求,遍历所述动态缓冲区;
77.s3:当所述处理请求未在所述动态缓冲区查询到对应的数据时,则在所述动态缓冲区生成与所述请求对应的第一缓冲区;
78.s4:根据所述第一缓冲区,将所述静态缓冲区内与所述处理请求对应的数据分别写入所述第一缓冲区,以及对所述静态缓冲区内与所述处理请求对应的数据执行检查点;
79.其中,静态缓冲区用于存储符合第一预置规则的数据,所述第一预置规则包括在第一预置时间内未发生更新;
80.动态缓冲区用于存储未符合第一预置规则的数据;
81.日志缓冲区用于赋予所述动态缓冲区内根据第一预置规则进行处理的数据,并生成日志存储于日志缓冲区内。
82.其能够实现所述静态缓冲区能够存储在第一预置时间内未发生更新的数据,所述动态缓冲区能够存储在第一预置时间内发生更新过的数据,能够自动的对数据进行分类缓存,而且该缓存过程自动记录在所述日志缓冲区中;通过控制模块在获取到处理请求时,先对所述动态缓冲区进行遍历,若直接获取到与所述处理请求数据相对应的数据时,则直接进行处理,能够快速的对数据进行处理,当所述处理请求未在所述动态缓冲区查询到对应的数据时,则在所述动态缓冲区生成与所述请求对应的第一缓冲区,将所述静态缓冲区内
与所述处理请求对应的数据分别写入所述第一缓冲区,并对所述静态缓冲区内与所述处理请求对应的数据执行检查点,从而一方面使得所述将所述静态缓冲区内的数据能够读取到所述动态缓冲区内,另一方面也将该数据通过执行检查点的方式写入磁盘,并更新控制文件和数据文件,从而对原始的数据形成有效地保存,能够避免原始的数据的丢失同时也能够对数据进行更新,避免了数据库内存内的数据不断的堆积,导致无空闲的缓冲区可以分配接收数据,进而有效地解决了如何对数据库系统内的缓冲区的数据堆积进行处理的技术问题。
83.所述检查点是一个数据库事件,它把修改数据从高速缓存写入磁盘,并更新控制文件和数据文件。
84.数据库内存管理系统的数据缓冲区(数据库管理系统实例的系统全局区(sga:systemglobalarea)控制结构)是至少包括静态缓冲区200、动态缓冲区100、日志缓冲区300和字典缓冲区400。
85.在本实施例中,为了能够避免所述数据库内存的堆积,在所述静态缓冲区200内的数据满足预置时间内未发生处理时,则可将这些数据自动存储到磁盘中,从而能够进行自动的降低占用数据库内存的数据。
86.所述处理请求包括写入新的数据、更新数据、删除数据以及
87.在一些实施例中,将所述静态缓冲区200内与所述处理请求对应的数据分别写入所述第一缓冲区,并对所述静态缓冲区200内与所述处理请求对应的数据执行检查点的过程形成日志并赋予标记存储于所述日志缓冲区300内。
88.在所述数据库内存管理系统内发生的所有的事项进行记录并生成对应的日志,在日志上赋予时间戳以及编号等标记,从而能够便于后续查找数据的日志。
89.在一些实施例中,还包括:
90.获取写入请求时,判断所述动态缓冲区100是否具有空闲的缓冲区,若无,则判断所述静态缓冲区200是否具有空闲的缓冲区,若无,则基于lru缓存算法对所述静态缓冲区200执行检查好点,在所述静态缓冲区200内生成空闲的第三缓冲区;基于lru缓存算法对所述动态缓冲区100内进行选择,将所述动态缓冲区100内的部分数据写入所述第三缓冲区内,在所述动态缓冲区100生成空闲的第四缓冲区,写入请求内的数据写入所述第四缓冲区内。
91.根据写入请求,对所述动态缓冲区100进行优先判断,因为通常有新的数据进入进行处理都是通过动态缓冲区100,动态缓冲区100是最为活跃的工作区,新写入的请求也是在第一预置时间内处理的请求数据,其在动态缓冲区100内先进行判断,是否具有空闲的缓冲区,也可以说是否为干净的缓冲区,如有则直接再次进行处理即可,若没有,则对所述静态缓冲区200进行判断,若静态缓冲区200有空闲的缓冲区,则将通过lru缓存算法对所述动态缓冲区100进行选择,将动态缓冲区100的部分数据写入到所述静态缓冲区200内,将写入请求的数据对应在缓存在动态缓冲区100内;若所述静态缓冲区200内也没有对应的空闲的缓冲区,因为有些数据可能会连续堆积,没有达到上述第一预置规则使得所述静态缓冲区200执行检查点,因此,在所述静态缓冲区200内也没有对应的空闲的缓冲区时,基于lru缓存算法对所述静态缓冲区200执行检查点,在所述静态缓冲区200内生成空闲的第三缓冲区,从而使得原数据能够的得到保存的同时,也能够在所述静态缓冲区200生成空闲的第三
缓冲区,在通过lru缓存算法对所述动态缓冲区100进行选择,将动态缓冲区100的部分数据写入到所述第三缓冲区内,将写入请求的数据对应在缓存在动态缓冲区100内,使得写入请求的数据能够缓存在动态缓冲区100内,而又能够保存原数据,避免原数据的丢失。
92.在一些实施例中,还包括:
93.字典缓冲区400,其用于保存数据字典信息;
94.当获取sql语句,判断所述sql语句转化为数字码,将所述数字码传递给一个hash函数,并返回一个hash值,在动态缓存区中查找是否存在相同的hash值,若是,则直接根据的hash值对应的数据执行;若无,则对sql语句通过所述字典缓冲区400内的数据字典信息进行语法分析,生成编译代码;并将所述sql语句、所述hash值以及所述编译代码缓存在所述动态缓冲区100及所述字典缓冲区400中。
95.其中,所述sql语句的字符转化为ascii等效数字码,接着这个ascii码被传递给一个hash函数,并返回一个hash值,然后将到动态缓冲区100中去查找是否存在相同的hash值,如果存在,则将使用这条语句已在高速缓存在动态缓冲区100中的已分析过的执行计划版本来执行,从而能够提高sql语句的解析效率。
96.其中,对sql语句通过所述字典缓冲区400内的数据字典信息进行语法分析为:通过所述数据字典信息检查sql语法的正确性,若正确,则对sql语句中涉及的对象进行解析,并对照数据字典信息检查所述对象的名称以及相关结构,根据数据字典信息中是否存在相应对象的统计数据以及是否使用了存储大纲,生成一个执行计划,根据执行计划生成编译代码。
97.如果动态缓冲区100中去查找没有存在相同的hash值,在sql分析阶段将用到字典缓冲区400从数据字典中核对表、视图等结构的时候,需要将数据字典从磁盘读入字典缓冲区400,因此,在读入之前也要使用字典缓冲区400锁存器(library cache pin,library cache lock)来申请用于缓存数据字典。到现在为止,这个sql语句已经被编译成可执行的代码了。
98.其中,所述字典缓冲区400中的所述对象包括表、索引和视图。
99.根据执行计划生成编译代码为:根据执行计划和数据字典信息核对sql语句对相应对象的执行权限,生成编译代码。
100.在一些实施例中,将所述解析模块700对所述sql语句的解析过程生成日志存储于所述日志缓冲区300内。
101.通过控制模块500对其进行记录,并生成日志存储于日志缓冲区300内,以便通过日志缓冲区300对其进行记录管理,以便后续查询。
102.在一些实施例中,还包括:
103.获取更新请求时,遍历所述动态缓冲区100,在所述动态缓冲区100内查询到与该请求对应的原始数据,将该请求对应的数据更新到所述动态缓冲区100内,将所述原始数据写入所述静态缓冲区200内,并将该过程生成日志存储与所述日志缓冲区300。
104.其中,在接收到更新请求后,对所述动态缓冲区内对应的数据进行更新,然后再将该数据的原始数据写入所述静态缓冲区内,从而能够将原始数据保存到静态缓冲区内,以便后续调用,同时通过将该过程生成日志缓存到日志缓冲区内。
105.在一些实施例中,还包括:
106.获取删除请求时,遍历所述动态缓冲区100,若在所述动态缓冲区100查询到所述删除请求对应的数据时,则直接执行删除,同时对该数据执行检查点。
107.接收到删除请求时,其能够直接对该数据进行删除,而且再删除的同时对将该数据存储至磁盘中,避免误删除时,以及在重复缓冲区无法进行恢复的情况下,通过磁盘能够将其进行恢复,避免误删除导致数据丢失。
108.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述系统实施例中的对应过程,在此不再赘述。
109.在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
110.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
111.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
112.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。
113.本发明实施例通过客户端向标注平台服务端发送获取标注任务图片的请求;标注平台服务端接收到请求后,分布式缓冲区向协调模块进行注册服务;
114.完成注册服务后,协调模块读写索引库中带时间戳的图片索引信息,将图片索引信息发送至分布式缓冲区;分布式缓冲区向协调模块反馈并发访问量;
115.协调模块根据并发访问量,调节和分配图片索引信息至分布式缓冲区;客户端读取分布式缓冲区的图片索引信息,根据图片索引信息下载标注任务图片;
116.客户端向标注平台服务端提交标注信息,标注平台服务端更新标注任务图片的索引信息的标注状态。本发明实施例在大数据分布式存储下,利用增加内存缓冲区来解决高并发读写问题,提供了一种高吞吐量并发的标注服务方法,解决了现有技术在进行数据标注时没有提供一个高并发读写锁的策略,导致数据标注服务出现高并发读写的技术问题。
117.以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前
述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

技术特征:
1.一种数据库内存管理系统,其特征在于,包括:静态缓冲区,其用于存储符合第一预置规则的数据,所述第一预置规则包括在第一预置时间内未发生更新;动态缓冲区,其用于存储未符合第一预置规则的数据;日志缓冲区,其用于赋予所述动态缓冲区内根据第一预置规则进行处理的数据,并生成日志存储于日志缓冲区内;控制模块,其用于获取处理请求时,根据所述处理请求,遍历所述动态缓冲区,当所述处理请求未在所述动态缓冲区查询到对应的数据时,则在所述动态缓冲区生成与所述请求对应的第一缓冲区,将所述静态缓冲区内与所述处理请求对应的数据分别写入所述第一缓冲区,并对所述静态缓冲区内与所述处理请求对应的数据执行检查点。2.根据权利要求1所述的数据库内存管理系统,其特征在于,所述控制模块还用于将所述静态缓冲区内与所述处理请求对应的数据分别写入所述第一缓冲区,并对所述静态缓冲区内与所述处理请求对应的数据执行检查点的过程形成日志并赋予标记存储于所述日志缓冲区内。3.根据权利要求2所述的数据库内存管理系统,其特征在于,还包括:写入模块,其用于获取写入请求时,判断所述动态缓冲区是否具有空闲的缓冲区,若无,则判断所述静态缓冲区是否具有空闲的缓冲区,若无,则基于lru缓存算法对所述静态缓冲区执行检查点,在所述静态缓冲区内生成空闲的第三缓冲区;基于lru缓存算法对所述动态缓冲区内进行选择,将所述动态缓冲区内的部分数据写入所述第三缓冲区内,在所述动态缓冲区生成空闲的第四缓冲区,写入请求内的数据写入所述第四缓冲区内。4.根据权利要求1所述的数据库内存管理系统,其特征在于,还包括:字典缓冲区,其用于保存数据字典信息;解析模块,其用于当获取sql语句,判断所述sql语句转化为数字码,将所述数字码传递给一个hash函数,并返回一个hash值,在动态缓存区中查找是否存在相同的hash值,若是,则直接根据的hash值对应的数据执行;若无,则对sql语句通过所述字典缓冲区内的数据字典信息进行语法分析,生成编译代码;并将所述sql语句、所述hash值以及所述编译代码缓存在所述动态缓冲区及所述字典缓冲区中。5.根据权利要求4所述的数据库内存管理系统,其特征在于,所述解析模块中的对sql语句通过所述字典缓冲区内的数据字典信息进行语法分析为:通过所述数据字典信息检查sql语法的正确性,若正确,则对sql语句中涉及的对象进行解析,并对照数据字典信息检查所述对象的名称以及相关结构,根据数据字典信息中是否存在相应对象的统计数据以及是否使用了存储大纲,生成一个执行计划,根据执行计划生成编译代码。6.根据权利要求5所述的数据库内存管理系统,其特征在于,所述解析模块中的根据执行计划生成编译代码为:根据执行计划和数据字典信息核对sql语句对相应对象的执行权限,生成编译代码。7.根据权利要求6所述的数据库内存管理系统,其特征在于,所述控制模块还用于将所述解析模块对所述sql语句的解析过程生成日志存储于所述日志缓冲区内。8.根据权利要求1所述的数据库内存管理系统,其特征在于,还包括:更新模块,其用于当获取更新请求时,遍历所述动态缓冲区,在所述动态缓冲区内查询
到与该请求对应的原始数据,将该请求对应的数据更新到所述动态缓冲区内,将所述原始数据写入所述静态缓冲区内,并将该过程生成日志存储与所述日志缓冲区。9.根据权利要求1所述的数据库内存管理系统,其特征在于,还包括:删除模块,其用于当获取删除请求时,遍历所述动态缓冲区,若在所述动态缓冲区查询到所述删除请求对应的数据时,则直接执行删除,同时对该数据执行检查点。10.一种数据库内存管理方法,其特征在于,包括:获取处理请求;根据所述处理请求,遍历所述动态缓冲区;当所述处理请求未在所述动态缓冲区查询到对应的数据时,则在所述动态缓冲区生成与所述请求对应的第一缓冲区;根据所述第一缓冲区,将所述静态缓冲区内与所述处理请求对应的数据分别写入所述第一缓冲区,以及对所述静态缓冲区内与所述处理请求对应的数据执行检查点;其中,静态缓冲区用于存储符合第一预置规则的数据,所述第一预置规则包括在第一预置时间内未发生更新;动态缓冲区用于存储未符合第一预置规则的数据;日志缓冲区用于赋予所述动态缓冲区内根据第一预置规则进行处理的数据,并生成日志存储于日志缓冲区内。

技术总结
本发明实施例提供了一种数据库内存管理系统及方法,包括:静态缓冲区,其用于存储符合第一预置规则的数据,所述第一预置规则包括在第一预置时间内未发生更新;动态缓冲区,其用于存储未符合第一预置规则的数据;日志缓冲区,其用于赋予所述动态缓冲区内根据第一预置规则进行处理的数据,并生成日志存储于日志缓冲区内;控制模块,其用于获取处理请求时,根据所述处理请求,遍历所述动态缓冲区,当所述处理请求未在所述动态缓冲区查询到对应的数据时,则在所述动态缓冲区生成与所述请求对应的第一缓冲区,将所述静态缓冲区内与所述处理请求对应的数据分别写入所述第一缓冲区,并对所述静态缓冲区执行检查点。述静态缓冲区执行检查点。述静态缓冲区执行检查点。


技术研发人员:宋洪彬
受保护的技术使用者:广州辰创科技发展有限公司
技术研发日:2021.10.13
技术公布日:2022/3/8

最新回复(0)