多嵌入式数据库缓冲区大小协调优化方法及系统

未命名 10-09 阅读:117 评论:0


1.本发明涉及数据库技术领域,具体为多嵌入式数据库缓冲区大小协调优化方法及系统。


背景技术:

2.针对数据库的运行的优化算法从数据库诞生开始就已经被广泛研究。但是,针对嵌入式数据库的优化算法的研究仍然称不上充分。由于嵌入式数据库本身存在的诸多限制,针对其优化的方式主要是对查询和读写进行优化,例如基数估计优化、查询计划树优化等,这些技术是延续自关系型数据库,将嵌入式数据库假定为小型的关系型数据库。另一方面,有一些研究旨在将机器学习技术融入到嵌入式数据库中以对数据库进行优化,如利用深度学习算法对嵌入式数据库的多种配置进行自动调节使其达到最佳的配置状态。嵌入式数据库的特点提高了对其优化的难度。
3.现有的嵌入式数据库如sqlite、h2等数据库往往很少存在针对其性能的优化。这是由于嵌入式数据库存在多种特性所决定的。轻量级的,与服务器端的数据库如mysql不同,嵌入式数据库的目的不在于其性能高低,而是针对程序、系统服务等使它们便捷地存储数据。它嵌入到程序中并发挥弱于常规数据库的作用。这就要求嵌入式数据库的大小要足够轻量、不冗余。但是这同样也限制了对其进行优化。另一方面,为了实现其轻量级的特点,嵌入式数据库去除了一部分功能,如它们的并发性能通常很差、不支持多个用户操作等。
4.正如上文所示,嵌入式数据库嵌入到程序中,在同一个设备中可能运行着多种程序或者系统服务,每个程序或者服务都有自己的数据库,这就意味着同一个设备上同时运行着多个嵌入式数据库。另一方面,嵌入式数据库不可能占据整个设备的所有运算资源,它们必须与其他的程序协作运行,这就不同于服务器端的数据库可以独占整个设备的所有资源。因此,在对嵌入式数据库进行优化时,同样不可能假设使用设备的全部资源,只能在有限的资源中尽可能地优化。
5.而现有方法对嵌入式数据库优化时,往往是逐个进行优化,这一过程在同一个系统中重复执行多次,不但浪费时间且使每一个数据库的缓存大幅增长,导致其他程序运行时,由于内存不足,使得其他程序无法运行。


技术实现要素:

6.本发明的目的是:针对现有技术中对嵌入式数据库优化时,往往是逐个进行优化,这一过程在同一个系统中重复执行多次,不但浪费时间且使每一个数据库的缓存大幅增长,导致其他程序运行时,由于内存不足,使得其他程序无法运行的问题,提出多嵌入式数据库缓冲区大小协调优化方法及系统。
7.本发明为了解决上述技术问题采取的技术方案是:
8.多嵌入式数据库缓冲区大小协调优化方法,包括以下步骤:
9.步骤一:连接嵌入式数据库,并在已连接的嵌入式数据库中监听嵌入式数据库发
送的事务状态信号,所述事务状态包括活跃的嵌入式数据库和不活跃的嵌入式数据库,活跃的嵌入式数据库信号指存在读或写事务正在进行的嵌入式数据库、读或写事务尚未完成的嵌入式数据库,不活跃的嵌入式数据库信号指当前无事务正在进行的嵌入式数据库;
10.步骤二:在收集到所有的嵌入式数据库发送的事务状态信号后,根据事务状态,将活跃的嵌入式数据库输入到增大子函数中,将不活跃的嵌入式数据库输入到缩小子函数中,并执行步骤五,所述增大子函数和缩小子函数分别用于嵌入式数据库的缓冲区增大和缓冲区缩小;
11.在增大子函数中,首先判断当前内存使用率是否大于等于60%,若是,则停止对活跃的嵌入式数据库的缓冲区增大,并将活跃的嵌入式数据库输入到缩小子函数中,并执行步骤五,否则,继续进行活跃嵌入式数据库的缓冲区增大操作;
12.若继续进行增大操作,则首先计算出当前内存使用率与60%之间的差值,并根据实际内存大小,结合差值,得到允许使用的最大的增大缓冲区的内存大小,在允许范围内,根据嵌入式数据库输入到增大子函数的顺序,针对每一个嵌入式数据库执行如下步骤:
13.逐渐增加嵌入式数据库缓冲区中内存的大小,并记录嵌入式数据库运行过程中的吞吐率,若吞吐率随着缓冲区中内存大小单调增大,则此时缓冲区大小为局部最佳记录,之后继续增加缓冲区中内存的大小,并更新局部最佳记录,若吞吐率不随缓冲区中内存大小单调增大,则此时缓冲区大小为全局最佳记录;
14.若存在全局最佳记录,则选取全局最佳记录对应的缓冲区的内存大小作为最终缓冲区大小,若不存在全局最佳记录,则选取最新的局部最佳记录对应的缓冲区的内存大小作为最终缓冲区大小;
15.步骤三:将所有嵌入式数据库对应的最终缓冲区大小加上当前内存使用值后,进而得到内存的使用率,然后判断内存使用率是否超过了60%,若未超过60%,则应用所有的嵌入式数据库最终缓冲区大小,若超过了60%,则将步骤二中得到的嵌入式数据库的最终缓冲区大小,以内存大小为条件进行排序,之后根据排序,由大到小将嵌入式数据库的最终缓冲区大小依次进行恢复,直至内存使用率不超过60%,此时,应用未恢复的嵌入式数据库最终缓冲区大小;
16.步骤四;设置间隔时间,并在每次到达间隔时间时,将所有嵌入式数据库输入到缩小子函数中,并执行步骤五;
17.步骤五:在缩小子函数中,将输入的嵌入式数据库,按缓冲区大小由大到小进行排序,并根据排序由大到小,按顺序将嵌入式数据库的缓冲区恢复到默认大小,每次恢复后,再次判断内存使用率大小,当内存使用率大小回到60%以下后,停止缓冲区的恢复,当所有嵌入式数据库的缓冲区均恢复到默认大小时,系统的内存使用率仍然未能回到60%以下,则结束缩小子函数。
18.进一步的,所述步骤一的具体步骤为:
19.判断当前是否连接嵌入式数据库,若当前未连接嵌入式数据库,则对所有的嵌入式数据库发送消息进行连接,若嵌入式数据库同意连接,则与其进行连接,并在后续通过心跳机制保持嵌入式数据库的连接;
20.若当前已连接嵌入式数据库,则对未连接的嵌入式数据库重新发送消息进行连接,若嵌入式数据库同意连接,则与其进行连接,并在后续通过心跳机制保持嵌入式数据库
的连接。
21.进一步的,当缓冲区大小为全局最佳记录时,采用ε-greedy模式继续进行探索。
22.进一步的,所述在差值范围内,逐渐增加内存大小中,每次增加的内存大小为20mb。
23.进一步的,所述间隔时间为10分钟。
24.多嵌入式数据库缓冲区大小协调优化系统,包括嵌入式数据库连接模块、缓冲区调整模块、增大子函数模块、缓冲区恢复模块以及缩小子函数模块;
25.所述嵌入式数据库连接模块用于连接嵌入式数据库,并在已连接的嵌入式数据库中监听嵌入式数据库发送的事务状态信号,所述事务状态包括活跃的嵌入式数据库和不活跃的嵌入式数据库,活跃的嵌入式数据库信号指存在读或写事务正在进行的嵌入式数据库、读或写事务尚未完成的嵌入式数据库,不活跃的嵌入式数据库信号指当前无事务正在进行的嵌入式数据库;
26.所述缓冲区调整模块用于在收集到所有的嵌入式数据库发送的事务状态信号后,根据事务状态,将活跃的嵌入式数据库输入到增大子函数模块,将不活跃的嵌入式数据库输入到缩小子函数模块,所述增大子函数模块和缩小子函数模块分别用于嵌入式数据库的缓冲区增大和缓冲区缩小;
27.所述增大子函数模块用于判断当前内存使用率是否大于等于60%,若是,则停止对活跃的嵌入式数据库的缓冲区增大,并将活跃的嵌入式数据库输入到缩小子函数模块,否则,继续进行活跃嵌入式数据库的缓冲区增大操作;
28.若继续进行增大操作,则首先计算出当前内存使用率与60%之间的差值,并根据实际内存大小,结合差值,得到允许使用的最大的增大缓冲区的内存大小,在允许范围内,根据嵌入式数据库输入到增大子函数模块的顺序,针对每一个嵌入式数据库执行如下步骤:
29.逐渐增加嵌入式数据库缓冲区中内存的大小,并记录嵌入式数据库运行过程中的吞吐率,若吞吐率随着缓冲区中内存大小单调增大,则此时缓冲区大小为局部最佳记录,之后继续增加缓冲区中内存的大小,并更新局部最佳记录,若吞吐率不随缓冲区中内存大小单调增大,则此时缓冲区大小为全局最佳记录;
30.若存在全局最佳记录,则选取全局最佳记录对应的缓冲区的内存大小作为最终缓冲区大小,若不存在全局最佳记录,则选取最新的局部最佳记录对应的缓冲区的内存大小作为最终缓冲区大小;
31.所述缓冲区恢复模块用于将所有嵌入式数据库对应的最终缓冲区大小加上当前内存使用值后,进而得到内存的使用率,然后判断内存使用率是否超过了60%,若未超过60%,则应用所有的嵌入式数据库最终缓冲区大小,若超过了60%,则将得到的嵌入式数据库的最终缓冲区大小,以内存大小为条件进行排序,之后根据排序,由大到小将嵌入式数据库的最终缓冲区大小依次进行恢复,直至内存使用率不超过60%,此时,应用未恢复的嵌入式数据库最终缓冲区大小;
32.所述缩小子函数模块用于设置间隔时间,并在每次到达间隔时间时,将所有嵌入式数据库输入到缩小子函数模块;
33.所述缩小子函数模块用于将输入的嵌入式数据库,按缓冲区大小由大到小进行排
序,并根据排序由大到小,按顺序将嵌入式数据库的缓冲区恢复到默认大小,即2000kb,每次恢复后,再次判断内存使用率大小,当内存使用率大小回到60%以下后,停止缓冲区的恢复,当所有嵌入式数据库的缓冲区均恢复到默认大小时,系统的内存使用率仍然未能回到60%以下,则结束缩小子函数模块。
34.进一步的,所述嵌入式数据库连接模块的具体步骤为:
35.判断当前是否连接嵌入式数据库,若当前未连接嵌入式数据库,则对所有的嵌入式数据库发送消息进行连接,若嵌入式数据库同意连接,则与其进行连接,并在后续通过心跳机制保持嵌入式数据库的连接;
36.若当前已连接嵌入式数据库,则对未连接的嵌入式数据库重新发送消息进行连接,若嵌入式数据库同意连接,则与其进行连接,并在后续通过心跳机制保持嵌入式数据库的连接。
37.进一步的,当缓冲区大小为全局最佳记录时,采用ε-greedy模式继续进行探索。
38.进一步的,所述在差值范围内,逐渐增加内存大小中,每次增加的内存大小为20mb。
39.进一步的,所述间隔时间为10分钟。
40.本发明的有益效果是:
41.本技术针对嵌入式数据库轻量级的特点,对所有的嵌入式数据库进行统一的优化而不是每个数据库分别优化,提升了优化效率,避免了逐个优化导致的时间浪费。并且本技术通过缩小子函数,将缓冲区按排序恢复到默认大小,以此帮助系统渡过内存使用的高峰期,进而解决了数据库的缓存大幅增长,导致其他程序运行时,由于内存不足,使得其他程序无法运行的问题。本技术由优化器统一进行资源的管理,对不同的需求进行定点定位,在资源急缺时能做到吞吐量的最大化。
附图说明
42.图1为本技术整体流程图;
43.图2为增大子函数流程图;
44.图3为缩小子函数流程图。
具体实施方式
45.需要特别说明的是,在不冲突的情况下,本技术公开的各个实施方式之间可以相互组合。
46.具体实施方式一:参照图1具体说明本实施方式,本实施方式所述的多嵌入式数据库缓冲区大小协调优化方法,包括以下步骤:
47.步骤一:连接嵌入式数据库,并在已连接的嵌入式数据库中监听嵌入式数据库发送的事务状态信号,所述事务状态包括活跃的嵌入式数据库和不活跃的嵌入式数据库,活跃的嵌入式数据库信号指存在读或写事务正在进行的嵌入式数据库、读或写事务尚未完成的嵌入式数据库,不活跃的嵌入式数据库信号指当前无事务正在进行的嵌入式数据库;
48.步骤二:在收集到所有的嵌入式数据库发送的事务状态信号后,根据事务状态,将活跃的嵌入式数据库输入到增大子函数中,将不活跃的嵌入式数据库输入到缩小子函数
中,并执行步骤五,所述增大子函数和缩小子函数分别用于嵌入式数据库的缓冲区增大和缓冲区缩小;
49.在增大子函数中,首先判断当前内存使用率是否大于等于60%,若是,则停止对活跃的嵌入式数据库的缓冲区增大,并将活跃的嵌入式数据库输入到缩小子函数中,并执行步骤五,否则,继续进行活跃嵌入式数据库的缓冲区增大操作;
50.若继续进行增大操作,则首先计算出当前内存使用率与60%之间的差值,并根据实际内存大小,结合差值,得到允许使用的最大的增大缓冲区的内存大小,在允许范围内,根据嵌入式数据库输入到增大子函数的顺序,针对每一个嵌入式数据库执行如下步骤:
51.逐渐增加嵌入式数据库缓冲区中内存的大小,并记录嵌入式数据库运行过程中的吞吐率,若吞吐率随着缓冲区中内存大小单调增大,则此时缓冲区大小为局部最佳记录,之后继续增加缓冲区中内存的大小,并更新局部最佳记录,若吞吐率不随缓冲区中内存大小单调增大,则此时缓冲区大小为全局最佳记录;
52.若存在全局最佳记录,则选取全局最佳记录对应的缓冲区的内存大小作为最终缓冲区大小,若不存在全局最佳记录,则选取最新的局部最佳记录对应的缓冲区的内存大小作为最终缓冲区大小;
53.步骤三:将所有嵌入式数据库对应的最终缓冲区大小加上当前内存使用值后,进而得到内存的使用率,然后判断内存使用率是否超过了60%,若未超过60%,则应用所有的嵌入式数据库最终缓冲区大小,若超过了60%,则将步骤二中得到的嵌入式数据库的最终缓冲区大小,以内存大小为条件进行排序,之后根据排序,由大到小将嵌入式数据库的最终缓冲区大小依次进行恢复,直至内存使用率不超过60%,此时,应用未恢复的嵌入式数据库最终缓冲区大小;
54.步骤四;设置间隔时间,并在每次到达间隔时间时,将所有嵌入式数据库输入到缩小子函数中,并执行步骤五;
55.步骤五:在缩小子函数中,将输入的嵌入式数据库,按缓冲区大小由大到小进行排序,并根据排序由大到小,按顺序将嵌入式数据库的缓冲区恢复到默认大小,即2000kb,每次恢复后,再次判断内存使用率大小,当内存使用率大小回到60%以下后,停止缓冲区的恢复,当所有嵌入式数据库的缓冲区均恢复到默认大小时,系统的内存使用率仍然未能回到60%以下,则结束缩小子函数。
56.具体实施方式二:本实施方式是对具体实施方式一的进一步说明,本实施方式与具体实施方式一的区别是所述步骤一的具体步骤为:
57.判断当前是否连接嵌入式数据库,若当前未连接嵌入式数据库,则对所有的嵌入式数据库发送消息进行连接,若嵌入式数据库同意连接,则与其进行连接,并在后续通过心跳机制保持嵌入式数据库的连接;
58.若当前已连接嵌入式数据库,则对未连接的嵌入式数据库重新发送消息进行连接,若嵌入式数据库同意连接,则与其进行连接,并在后续通过心跳机制保持嵌入式数据库的连接。
59.具体实施方式三:本实施方式是对具体实施方式一的进一步说明,本实施方式与具体实施方式一的区别是当缓冲区大小为全局最佳记录时,采用ε-greedy模式继续进行探索。
60.具体实施方式四:本实施方式是对具体实施方式一的进一步说明,本实施方式与具体实施方式一的区别是所述在差值范围内,逐渐增加内存大小中,每次增加的内存大小为20mb。
61.具体实施方式五:本实施方式是对具体实施方式一的进一步说明,本实施方式与具体实施方式一的区别是所述间隔时间为10分钟。
62.具体实施方式六:本实施方式所述的多嵌入式数据库缓冲区大小协调优化系统,包括嵌入式数据库连接模块、缓冲区调整模块、增大子函数模块、缓冲区恢复模块以及缩小子函数模块;
63.所述嵌入式数据库连接模块用于连接嵌入式数据库,并在已连接的嵌入式数据库中监听嵌入式数据库发送的事务状态信号,所述事务状态包括活跃的嵌入式数据库和不活跃的嵌入式数据库,活跃的嵌入式数据库信号指存在读或写事务正在进行的嵌入式数据库、读或写事务尚未完成的嵌入式数据库,不活跃的嵌入式数据库信号指当前无事务正在进行的嵌入式数据库;
64.所述缓冲区调整模块用于在收集到所有的嵌入式数据库发送的事务状态信号后,根据事务状态,将活跃的嵌入式数据库输入到增大子函数模块,将不活跃的嵌入式数据库输入到缩小子函数模块,所述增大子函数模块和缩小子函数模块分别用于嵌入式数据库的缓冲区增大和缓冲区缩小;
65.所述增大子函数模块用于判断当前内存使用率是否大于等于60%,若是,则停止对活跃的嵌入式数据库的缓冲区增大,并将活跃的嵌入式数据库输入到缩小子函数模块,否则,继续进行活跃嵌入式数据库的缓冲区增大操作;
66.若继续进行增大操作,则首先计算出当前内存使用率与60%之间的差值,并根据实际内存大小,结合差值,得到允许使用的最大的增大缓冲区的内存大小,在允许范围内,根据嵌入式数据库输入到增大子函数模块的顺序,针对每一个嵌入式数据库执行如下步骤:
67.逐渐增加嵌入式数据库缓冲区中内存的大小,并记录嵌入式数据库运行过程中的吞吐率,若吞吐率随着缓冲区中内存大小单调增大,则此时缓冲区大小为局部最佳记录,之后继续增加缓冲区中内存的大小,并更新局部最佳记录,若吞吐率不随缓冲区中内存大小单调增大,则此时缓冲区大小为全局最佳记录;
68.若存在全局最佳记录,则选取全局最佳记录对应的缓冲区的内存大小作为最终缓冲区大小,若不存在全局最佳记录,则选取最新的局部最佳记录对应的缓冲区的内存大小作为最终缓冲区大小;
69.所述缓冲区恢复模块用于将所有嵌入式数据库对应的最终缓冲区大小加上当前内存使用值后,进而得到内存的使用率,然后判断内存使用率是否超过了60%,若未超过60%,则应用所有的嵌入式数据库最终缓冲区大小,若超过了60%,则将得到的嵌入式数据库的最终缓冲区大小,以内存大小为条件进行排序,之后根据排序,由大到小将嵌入式数据库的最终缓冲区大小依次进行恢复,直至内存使用率不超过60%,此时,应用未恢复的嵌入式数据库最终缓冲区大小;
70.所述缩小子函数模块用于设置间隔时间,并在每次到达间隔时间时,将所有嵌入式数据库输入到缩小子函数模块;
71.所述缩小子函数模块用于将输入的嵌入式数据库,按缓冲区大小由大到小进行排序,并根据排序由大到小,按顺序将嵌入式数据库的缓冲区恢复到默认大小,即2000kb,每次恢复后,再次判断内存使用率大小,当内存使用率大小回到60%以下后,停止缓冲区的恢复,当所有嵌入式数据库的缓冲区均恢复到默认大小时,系统的内存使用率仍然未能回到60%以下,则结束缩小子函数模块。
72.具体实施方式七:本实施方式是对具体实施方式六的进一步说明,本实施方式与具体实施方式六的区别是所述嵌入式数据库连接模块的具体步骤为:
73.判断当前是否连接嵌入式数据库,若当前未连接嵌入式数据库,则对所有的嵌入式数据库发送消息进行连接,若嵌入式数据库同意连接,则与其进行连接,并在后续通过心跳机制保持嵌入式数据库的连接;
74.若当前已连接嵌入式数据库,则对未连接的嵌入式数据库重新发送消息进行连接,若嵌入式数据库同意连接,则与其进行连接,并在后续通过心跳机制保持嵌入式数据库的连接。
75.具体实施方式八:本实施方式是对具体实施方式六的进一步说明,本实施方式与具体实施方式六的区别是当缓冲区大小为全局最佳记录时,采用ε-greedy模式继续进行探索。
76.具体实施方式九:本实施方式是对具体实施方式六的进一步说明,本实施方式与具体实施方式六的区别是所述在差值范围内,逐渐增加内存大小中,每次增加的内存大小为20mb。
77.具体实施方式十:本实施方式是对具体实施方式六的进一步说明,本实施方式与具体实施方式六的区别是所述间隔时间为10分钟。
78.实施例:
79.1.一种嵌入式数据库的缓冲区大小调整方法,其特征在于:
80.它包括以下步骤:
81.s1、若当前未连接嵌入式数据库,则对所有的嵌入式数据库发送消息进行连接,若嵌入式数据库同意连接,则与其进行连接并在后续通过心跳机制保持嵌入式数据库的连接;若当前已连接嵌入式数据库,则对未连接的嵌入式数据库重新发送消息进行连接。在对这些数据库连接后,在所有的已连接嵌入式数据库中监听数据库发送的事务状态的信号。信号分为活跃的和不活跃的,活跃的嵌入式数据库指存在读或写事务正在进行、尚未完成的嵌入式数据库,而不活跃的嵌入式数据库指当前无事务正在进行的嵌入式数据库。活跃的嵌入式数据库代表当前的嵌入式数据库正在进行事务,并在使用系统的计算资源如最主要的内存资源,为了将它们处理事务的速度加快,可以针对这部分的数据库,增加它们使用的资源量。另一方面,不活跃的数据库当前不进行事务处理,不需要过多的内存资源,因此需要从它们的缓冲区中回收系统的内存资源;
82.s2、在收集到所有的嵌入式数据库发送的信号后,将所有活跃的嵌入式数据库输入到增大子函数,而将所有不活跃的嵌入式数据库输入到缩小子函数中,增大子函数和缩小子函数分别管理嵌入式数据库的缓冲区增大和缓冲区缩小;
83.s3、在s2中的增大子函数中,首先判断系统中已经使用的内存是否大于等于60%,若超过,代表当前系统的总内存使用率已经过大,对系统的负担较大,此时不应对嵌入式数
据库的缓冲区进一步增大。因此此时停止对活跃嵌入式数据库的缓冲区增大,而将这些活跃的嵌入式数据库重新输入到缩小子函数中;若内存当前使用大小小于60%,则代表当前的系统比较空闲,有余力负担嵌入式数据库的缓冲区增大操作,从而使嵌入式数据库速度加快,因此继续进行这些活跃的嵌入式数据库的缓冲区增大操作;
84.s4、若继续进行增大操作,则算法首先计算出当前内存使用率与60%之间的差值,将这个差值作为允许使用的最大的增大缓冲区的内存大小。在这里引入一个新的结构:记录。记录的作用是将对某个嵌入式数据库的对应每个缓冲区大小记录的该数据库运行过程中的吞吐率高低,并将这些记录按照缓冲区大小排序。若吞吐率随着缓冲区大小单调增大,则当前的记录为局部最佳记录,局部最佳记录值取当前最高的吞吐率对应的缓冲区大小;若吞吐率不随缓冲区大小单调增大,则所有记录中吞吐率最高的记录为全局最佳记录。计算出差值后,对每一个嵌入式数据库查询之前的记录,分为两种情况:第一种是该记录是局部最佳记录而非全局最佳记录时,选择局部最佳记录的缓冲区大小,并继续增大缓冲区探索全局最佳记录;第二种是已经达到了全局最佳记录,此时采用ε-greedy模式,使其有10%的概率进行探索,即随机地生成一个缓冲区大小。一旦探索到吞吐率更高的情况,将全局最佳记录修改并在这个嵌入式数据库中使用对应的更高的缓冲区大小;
85.s5、在获取到记录后,判断这些记录中的缓冲区大小之和加上当前系统其他程序使用的内存使用值的使用率是否超过了60%,防止由于缓冲区大小的增加而使系统的状态恶化。若未超过,则对这些嵌入式数据库依次应用记录中的缓冲区大小,并持续地跟踪这些嵌入式数据库的运行,对后续的局部最佳和全局最佳的探索进行记录;若超过了60%,则代表对缓冲区的增大影响了系统的环境,需要将一部分的缓冲区重置回到原来的状态。具体做法是将这些记录值从大到小排序,并从缓冲区最大的嵌入式数据库开始,将这些数据库的缓冲区恢复到嵌入式数据库原本的缓冲区大小,直到未超过60%为止。在保证对系统的影响减少后,将这些未被恢复的缓冲区大小值对它们对应的嵌入式数据库实际应用,并持续地跟踪这些数据库的运行;
86.s6、在s2、s3和s5中将嵌入式数据库输入到缩小子函数,这些情况的目的是避免嵌入式数据库的缓冲区大小调整对系统的整体内存环境造成较大的影响从而拖慢其他进程的运行速度;而每隔10次运行算法会自动进入到缩小子函数中,这种情况是为了防止系统自身内存环境的变化导致的系统内存资源使用率高的问题,如系统中开始运行了一系列新的进程等导致嵌入式数据库的缓冲区大小不变的情况下,系统资源使用率高于了60%,此时需要对嵌入式数据库的缓冲区进行缩小以使这些进程运行正常。进入缩小子函数后,首先将当前所有输入的嵌入式数据库按照它们使用的缓冲区大小的从大到小排列。
87.s7、将s6中的嵌入式数据库排列的缓冲区从大到小,将这些嵌入式数据库的缓冲区恢复到它的默认大小2000kb,每将一个嵌入式数据库的缓冲区恢复到默认值,再次判断一次系统的内存使用率大小,当系统内存使用率重新回到60%以下后,停止缓冲区的恢复。或者,将所有嵌入式数据库的缓冲区均恢复到默认值时,系统的内存使用率仍然未能回到60%以下,此时选择结束缩小子函数,此时已经将嵌入式数据库的缓冲区的影响缩小到了最小值,以此帮助系统渡过内存使用的高峰期。
88.本技术在面临多嵌入式数据库环境时提供更高的数据库性能。
89.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序
产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本技术实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言java和直译式脚本语言javascript等。
90.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
91.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
92.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
93.尽管已描述了本技术的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本技术范围的所有变更和修改。
94.需要注意的是,具体实施方式仅仅是对本发明技术方案的解释和说明,不能以此限定权利保护范围。凡根据本发明权利要求书和说明书所做的仅仅是局部改变的,仍应落入本发明的保护范围内。

技术特征:
1.多嵌入式数据库缓冲区大小协调优化方法,其特征在于包括以下步骤:步骤一:连接嵌入式数据库,并在已连接的嵌入式数据库中监听嵌入式数据库发送的事务状态信号,所述事务状态包括活跃的嵌入式数据库和不活跃的嵌入式数据库,活跃的嵌入式数据库信号指存在读或写事务正在进行的嵌入式数据库、读或写事务尚未完成的嵌入式数据库,不活跃的嵌入式数据库信号指当前无事务正在进行的嵌入式数据库;步骤二:在收集到所有的嵌入式数据库发送的事务状态信号后,根据事务状态,将活跃的嵌入式数据库输入到增大子函数中,将不活跃的嵌入式数据库输入到缩小子函数中,并执行步骤五,所述增大子函数和缩小子函数分别用于嵌入式数据库的缓冲区增大和缓冲区缩小;在增大子函数中,首先判断当前内存使用率是否大于等于60%,若是,则停止对活跃的嵌入式数据库的缓冲区增大,并将活跃的嵌入式数据库输入到缩小子函数中,并执行步骤五,否则,继续进行活跃嵌入式数据库的缓冲区增大操作;若继续进行增大操作,则首先计算出当前内存使用率与60%之间的差值,并根据实际内存大小,结合差值,得到允许使用的最大的增大缓冲区的内存大小,在允许范围内,根据嵌入式数据库输入到增大子函数的顺序,针对每一个嵌入式数据库执行如下步骤:逐渐增加嵌入式数据库缓冲区中内存的大小,并记录嵌入式数据库运行过程中的吞吐率,若吞吐率随着缓冲区中内存大小单调增大,则此时缓冲区大小为局部最佳记录,之后继续增加缓冲区中内存的大小,并更新局部最佳记录,若吞吐率不随缓冲区中内存大小单调增大,则此时缓冲区大小为全局最佳记录;若存在全局最佳记录,则选取全局最佳记录对应的缓冲区的内存大小作为最终缓冲区大小,若不存在全局最佳记录,则选取最新的局部最佳记录对应的缓冲区的内存大小作为最终缓冲区大小;步骤三:将所有嵌入式数据库对应的最终缓冲区大小加上当前内存使用值后,进而得到内存的使用率,然后判断内存使用率是否超过了60%,若未超过60%,则应用所有的嵌入式数据库最终缓冲区大小,若超过了60%,则将步骤二中得到的嵌入式数据库的最终缓冲区大小,以内存大小为条件进行排序,之后根据排序,由大到小将嵌入式数据库的最终缓冲区大小依次进行恢复,直至内存使用率不超过60%,此时,应用未恢复的嵌入式数据库最终缓冲区大小;步骤四;设置间隔时间,并在每次到达间隔时间时,将所有嵌入式数据库输入到缩小子函数中,并执行步骤五;步骤五:在缩小子函数中,将输入的嵌入式数据库,按缓冲区大小由大到小进行排序,并根据排序由大到小,按顺序将嵌入式数据库的缓冲区恢复到默认大小,每次恢复后,再次判断内存使用率大小,当内存使用率大小回到60%以下后,停止缓冲区的恢复,当所有嵌入式数据库的缓冲区均恢复到默认大小时,系统的内存使用率仍然未能回到60%以下,则结束缩小子函数。2.根据权利要求1所述的多嵌入式数据库缓冲区大小协调优化方法,其特征在于所述步骤一的具体步骤为:判断当前是否连接嵌入式数据库,若当前未连接嵌入式数据库,则对所有的嵌入式数据库发送消息进行连接,若嵌入式数据库同意连接,则与其进行连接,并在后续通过心跳机
制保持嵌入式数据库的连接;若当前已连接嵌入式数据库,则对未连接的嵌入式数据库重新发送消息进行连接,若嵌入式数据库同意连接,则与其进行连接,并在后续通过心跳机制保持嵌入式数据库的连接。3.根据权利要求1所述的多嵌入式数据库缓冲区大小协调优化方法,其特征在于当缓冲区大小为全局最佳记录时,采用ε-greedy模式继续进行探索。4.根据权利要求1所述的多嵌入式数据库缓冲区大小协调优化方法,其特征在于所述在差值范围内,逐渐增加内存大小中,每次增加的内存大小为20mb。5.根据权利要求1所述的多嵌入式数据库缓冲区大小协调优化方法,其特征在于所述间隔时间为10分钟。6.多嵌入式数据库缓冲区大小协调优化系统,其特征在于包括嵌入式数据库连接模块、缓冲区调整模块、增大子函数模块、缓冲区恢复模块以及缩小子函数模块;所述嵌入式数据库连接模块用于连接嵌入式数据库,并在已连接的嵌入式数据库中监听嵌入式数据库发送的事务状态信号,所述事务状态包括活跃的嵌入式数据库和不活跃的嵌入式数据库,活跃的嵌入式数据库信号指存在读或写事务正在进行的嵌入式数据库、读或写事务尚未完成的嵌入式数据库,不活跃的嵌入式数据库信号指当前无事务正在进行的嵌入式数据库;所述缓冲区调整模块用于在收集到所有的嵌入式数据库发送的事务状态信号后,根据事务状态,将活跃的嵌入式数据库输入到增大子函数模块,将不活跃的嵌入式数据库输入到缩小子函数模块,所述增大子函数模块和缩小子函数模块分别用于嵌入式数据库的缓冲区增大和缓冲区缩小;所述增大子函数模块用于判断当前内存使用率是否大于等于60%,若是,则停止对活跃的嵌入式数据库的缓冲区增大,并将活跃的嵌入式数据库输入到缩小子函数模块,否则,继续进行活跃嵌入式数据库的缓冲区增大操作;若继续进行增大操作,则首先计算出当前内存使用率与60%之间的差值,并根据实际内存大小,结合差值,得到允许使用的最大的增大缓冲区的内存大小,在允许范围内,根据嵌入式数据库输入到增大子函数模块的顺序,针对每一个嵌入式数据库执行如下步骤:逐渐增加嵌入式数据库缓冲区中内存的大小,并记录嵌入式数据库运行过程中的吞吐率,若吞吐率随着缓冲区中内存大小单调增大,则此时缓冲区大小为局部最佳记录,之后继续增加缓冲区中内存的大小,并更新局部最佳记录,若吞吐率不随缓冲区中内存大小单调增大,则此时缓冲区大小为全局最佳记录;若存在全局最佳记录,则选取全局最佳记录对应的缓冲区的内存大小作为最终缓冲区大小,若不存在全局最佳记录,则选取最新的局部最佳记录对应的缓冲区的内存大小作为最终缓冲区大小;所述缓冲区恢复模块用于将所有嵌入式数据库对应的最终缓冲区大小加上当前内存使用值后,进而得到内存的使用率,然后判断内存使用率是否超过了60%,若未超过60%,则应用所有的嵌入式数据库最终缓冲区大小,若超过了60%,则将得到的嵌入式数据库的最终缓冲区大小,以内存大小为条件进行排序,之后根据排序,由大到小将嵌入式数据库的最终缓冲区大小依次进行恢复,直至内存使用率不超过60%,此时,应用未恢复的嵌入式数
据库最终缓冲区大小;所述缩小子函数模块用于设置间隔时间,并在每次到达间隔时间时,将所有嵌入式数据库输入到缩小子函数模块;所述缩小子函数模块用于将输入的嵌入式数据库,按缓冲区大小由大到小进行排序,并根据排序由大到小,按顺序将嵌入式数据库的缓冲区恢复到默认大小,即2000kb,每次恢复后,再次判断内存使用率大小,当内存使用率大小回到60%以下后,停止缓冲区的恢复,当所有嵌入式数据库的缓冲区均恢复到默认大小时,系统的内存使用率仍然未能回到60%以下,则结束缩小子函数模块。7.根据权利要求6所述的多嵌入式数据库缓冲区大小协调优化系统,其特征在于所述嵌入式数据库连接模块的具体步骤为:判断当前是否连接嵌入式数据库,若当前未连接嵌入式数据库,则对所有的嵌入式数据库发送消息进行连接,若嵌入式数据库同意连接,则与其进行连接,并在后续通过心跳机制保持嵌入式数据库的连接;若当前已连接嵌入式数据库,则对未连接的嵌入式数据库重新发送消息进行连接,若嵌入式数据库同意连接,则与其进行连接,并在后续通过心跳机制保持嵌入式数据库的连接。8.根据权利要求6所述的多嵌入式数据库缓冲区大小协调优化系统,其特征在于当缓冲区大小为全局最佳记录时,采用ε-greedy模式继续进行探索。9.根据权利要求6所述的多嵌入式数据库缓冲区大小协调优化系统,其特征在于所述在差值范围内,逐渐增加内存大小中,每次增加的内存大小为20mb。10.根据权利要求6所述的多嵌入式数据库缓冲区大小协调优化系统,其特征在于所述间隔时间为10分钟。

技术总结
多嵌入式数据库缓冲区大小协调优化方法及系统,涉及数据库技术领域,针对现有技术中对嵌入式数据库优化时,往往是逐个进行优化,这一过程在同一个系统中重复执行多次,不但浪费时间且使每一个数据库的缓存大幅增长,导致其他程序运行时,由于内存不足,使得其他程序无法运行的问题,本申请针对嵌入式数据库轻量级的特点,对所有的嵌入式数据库进行统一的优化而不是每个数据库分别优化,提升了优化效率,避免了逐个优化导致的时间浪费。并且本申请通过缩小子函数,将缓冲区按排序恢复到默认大小,以此帮助系统渡过内存使用的高峰期,进而解决了数据库的缓存大幅增长,导致其他程序运行时,由于内存不足,使得其他程序无法运行的问题。的问题。的问题。


技术研发人员:张昊然 王宏志 丁小欧 杨东华 左德承
受保护的技术使用者:哈尔滨工业大学
技术研发日:2023.07.07
技术公布日:2023/10/6
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐