预写日志的刷写方法和装置与流程

文档序号:29806923发布日期:2022-04-23 22:43阅读:136来源:国知局
预写日志的刷写方法和装置与流程

1.本技术属于计算机技术领域,具体涉及一种预写日志的刷写方法、装置。


背景技术:

2.相关技术中,在日志结构合并(log structured merge,lsm)型数据库服务器的预写日志(write-ahead log,wal)刷新缓冲区的过程中,存在多种的刷写策略。例如,当wal的数量大于相关阈值时,即触发刷写条件,此时会选取生成时间最久的wal文件进行刷写。但是,该方法并不能释放出最大的数据库服务器内存,无法达到缓解数据库服务器内存的压力的目的。


技术实现要素:

3.本技术实施例的目的是提供一种预写日志的刷写方法、装置,能够解决相关技术中不能释放出最大的数据库服务器内存的问题。
4.第一方面,本技术实施例提供了一种预写日志的刷写方法,该刷写方法包括:
5.获取数据库服务器中预设存储结构的使用内存信息;
6.在数据库服务器中生成的预写日志的数量大于或等于预设数量阈值的情况下,根据预设存储结构的使用内存信息,在预写日志中确定第一预写日志;
7.对第一预写日志进行刷写处理。
8.第二方面,本技术实施例提供了一种预写日志的刷写装置,该刷写装置包括:
9.获取模块,用于获取数据库服务器中预设存储结构的使用内存信息;
10.第一确定模块,用于在数据库服务器中生成的预写日志的数量大于或等于预设数量阈值的情况下,根据预设存储结构的使用内存信息,在预写日志中确定第一预写日志;
11.刷写模块,用于对第一预写日志进行刷写处理。
12.第三方面,本技术实施例提供了一种电子设备,该电子设备包括处理器和存储器,存储器存储可在处理器上运行的程序或指令,程序或指令被处理器执行时实现如第一方面的方法的步骤。
13.第四方面,本技术实施例提供了一种可读存储介质,可读存储介质上存储程序或指令,程序或指令被处理器执行时实现如第一方面的方法的步骤。
14.第五方面,本技术实施例提供了一种芯片,芯片包括处理器和通信接口,通信接口和处理器耦合,处理器用于运行程序或指令,实现如第一方面的方法。
15.第六方面,本技术实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如第一方面的方法。
16.在本技术实施例中,如果某个数据库服务器的wal的数量大于或等于预设数量阈值时,就会触发预写日志的刷写。具体地,统计数据库服务器中预设存储结构的使用内存信息,在判定数据库服务器的wal的数量大于或等于预设数量阈值时,根据预设存储结构的使用内存信息,确定第一预写日志,其中,第一预写日志为包含的预设存储结构的使用内存信
息的总和大于或等于预设内存阈值的预写日志。从而找到第一预写日志对应的数据库分区,然后对这些数据库分区进行刷写。本技术实施例,通过结合预设存储结构的使用内存实现了数据库服务器wal刷写均衡的方法,解决了相关技术中无法释放出有效的memstore的内存的问题,提高了数据库服务器中内存的释放效率,提高了数据库服务器的稳定性。
附图说明
17.图1是本技术实施例的预写日志的刷写方法的流程示意图;
18.图2是本技术实施例的预写日志的刷写装置的示意框图;
19.图3是本技术实施例的电子设备的示意框图之一;
20.图4是本技术实施例的电子设备的示意框图之二。
具体实施方式
21.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本技术保护的范围。
22.本技术的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
23.下面结合附图,通过具体的实施例及其应用场景对本技术实施例提供的预写日志的刷写方法、预写日志的刷写装置进行详细地说明。
24.本技术实施例提供一种预写日志的刷写方法,如图1所示,该刷写方法包括:
25.步骤102,获取数据库服务器中预设存储结构的使用内存信息;
26.步骤104,在数据库服务器中生成的预写日志的数量大于或等于预设数量阈值的情况下,根据预设存储结构的使用内存信息,在预写日志中确定第一预写日志;
27.步骤106,对第一预写日志进行刷写处理。
28.在该实施例中,wal能够用来解决宕机之后的操作恢复问题。数据到达数据库服务器的数据库分区(region)的时候是先写入wal,然后再被写入到内存里面的预设存储结构的。如果wal的数量越来越大,这就意味着预设存储结构中未持久化到磁盘的数据越来越多。当数据库服务器挂掉的时候,恢复时间将会变得越来越长,所以有必要在wal到达一定的数量时进行一次刷写操作。
29.因此,本技术实施例中,如果某个数据库服务器的wal的数量大于或等于预设数量阈值时,就会触发预写日志的刷写。具体地,统计数据库服务器中预设存储结构的使用内存信息,在判定数据库服务器的wal的数量大于或等于预设数量阈值时,根据预设存储结构的使用内存信息,确定第一预写日志,其中,第一预写日志为包含的预设存储结构的使用内存信息的总和大于或等于预设内存阈值的预写日志。从而找到第一预写日志对应的数据库分区,然后对这些数据库分区进行刷写。
30.需要说明的是,预设存储结构为key-value存储结构(memstore),数据库服务器为数据库处理数据的服务器(regionserver)。
31.本技术实施例,通过结合预设存储结构的使用内存实现了数据库服务器wal刷写均衡的方法,解决了相关技术中无法释放出有效的memstore的内存的问题,提高了数据库服务器中内存的释放效率,提高了数据库服务器的稳定性。
32.进一步地,在本技术的一个实施例中,根据预设存储结构的使用内存信息,在预写日志中确定第一预写日志,包括:根据预设存储结构的使用内存信息,确定n个目标存储结构,其中n为正整数;分别确定n个目标存储结构对应的第二预写日志;根据第二预写日志包括的预设存储结构的使用内存信息的总和,在第二预写日志中确定第一预写日志。
33.在该实施例中,当数据库服务器中生成的预写日志的数量大于或等于预设数量阈值时,首先按照使用内存从大到小的顺序,对此数据库服务器上的预设存储结构进行排序。然后就可以根据预存的预写日志与预设存储结构的对应关系表中,清楚的知道占用较大内存的预设存储结构(也即目标存储结构)所对应的预写日志(也即第二预写日志)的文件名称。最后把这些第二预写日志按照其包括的预设存储结构的使用内存信息的总和,进行降序排序,获取前1个或多个预写日志(也即第一预写日志)进行刷写处理。
34.示例性地,在数据库服务器上,当wal的数量大于或等于预设数量阈值时,对此数据库服务器上的预设存储结构按照使用内存从大到小的顺序,并挑选出排在前m个的预设存储结构id。遍历预存的wal文件名称与其包含的预设存储结构id的对应关系表,对应找出前m个的预设存储结构id相关的wal文件名称的集合。再从得到的wal文件名称的集合中,根据wal中包含的所有预设存储结构id的使用内存的总和进行降序排序,并从中选出使用内存的总和最大的wal。
35.例如,预设存储结构包括a、b、c、d、e、f、g,wal包括a、b、c、d,wal与预设存储结构的对应关系包括:a对应于a、b、c,b对应于d、g,c对应于f,d对应于e。预设存储结构按照使用内存从大到小的顺序为a、b、c、d、e、f、g,挑选出排在top5的预设存储结构,也即a、b、c、d、e。则根据对应关系,找出的wal文件名称的集合为a、b、d。a、b、c使用内存的总和大于d、g使用内存的总和,d、g使用内存的总和大于e的使用内存,则按照包括的预设存储结构的使用内存的总和降序排序为a、b、d,从而对使用内存的总和最大的a进行刷写处理。
36.本技术实施例,通过对预设存储结构内存使用情况的考虑,更有效地提高了数据库服务器的内存利用率,使得数据库服务器内存使用更加均衡,避免了数据库服务器在系统层面的java垃圾回收(garbage collection,gc),从而达到提升数据库服务器内存资源利用率效果,并且有效减少gc引起的数据库服务器宕机,提高了数据库服务器的稳定性和可靠性。
37.进一步地,在本技术的一个实施例中,该刷写方法还包括:在第二预写日志包括的预设存储结构的使用内存的总和相等的情况下,根据第二预写日志的日志生成时间,在第二预写日志中确定第一预写日志。
38.在该实施例中,对于使用内存的总和相同的wal,将日志生成时间较长的wal,也即生成最早的wal确定为第一预写日志。通过对预设存储结构内存使用情况和wal生成时间的综合考虑,更有效地提高了数据库服务器的内存利用率。
39.进一步地,在本技术的一个实施例中,获取数据库服务器中预设存储结构的使用
内存信息,包括:获取数据库服务器各个数据库分区的预设存储结构的使用内存信息。
40.在该实施例中,通过对数据库服务器的每个数据库分区中每个预设存储结构的使用内存情况进行统计,可以有效地分析出本次wal归档应该释放哪些更有效的预设存储结构,从而能够对数据库服务器的内存整体情况的分析更加全面可靠,为实现更加高效的预设存储结构的刷写机制和数据库服务器内存释放机制提供基础。
41.需要说明的是,在进行统计之后,可生成形式如数据库分区名称_预设存储结构id-使用内存大小的值的hashmap,并按照使用内存大小进行排序。
42.进一步地,在本技术的一个实施例中,在获取数据库服务器中预设存储结构的使用内存信息之后,还包括:确定预写日志包括的预设存储结构。
43.在该实施例中,针对每一个生成的未归档的wal,确定其包含的预设存储结构,并建立wal与其包含的预设存储结构的一对多的映射关系,生成形式如wal名称-{包含的预设存储结构id}的对应关系表。
44.本技术实施例,能够实现根据上述对应关系,准确地确定出需要进行刷写的预写日志,从而提高了数据库服务器中内存的释放效率,提高了数据库服务器的稳定性。
45.本技术实施例提供的预写日志的刷写方法,执行主体可以为预写日志的刷写装置。本技术实施例中以预写日志的刷写装置执行预写日志的刷写方法为例,说明本技术实施例提供的预写日志的刷写装置。
46.本技术实施例提供一种预写日志的刷写装置,如图2所示,该预写日志的刷写装置200包括:
47.获取模块202,用于获取数据库服务器中预设存储结构的使用内存信息;
48.第一确定模块204,用于在数据库服务器中生成的预写日志的数量大于或等于预设数量阈值的情况下,根据预设存储结构的使用内存信息,在预写日志中确定第一预写日志;
49.刷写模块206,用于对第一预写日志进行刷写处理。
50.在该实施例中,如果某个数据库服务器的wal的数量大于或等于预设数量阈值时,就会触发预写日志的刷写。具体地,统计数据库服务器中预设存储结构的使用内存信息,在判定数据库服务器的wal的数量大于或等于预设数量阈值时,根据预设存储结构的使用内存信息,确定第一预写日志,其中,第一预写日志为包含的预设存储结构的使用内存信息的总和大于或等于预设内存阈值的预写日志。从而找到第一预写日志对应的数据库分区,然后对这些数据库分区进行刷写。本技术实施例,通过结合预设存储结构的使用内存实现了数据库服务器wal刷写均衡的方法,解决了相关技术中无法释放出有效的memstore的内存的问题,提高了数据库服务器中内存的释放效率,提高了数据库服务器的稳定性。
51.进一步地,在本技术的一个实施例中,第一确定模块204,具体用于:根据预设存储结构的使用内存信息,确定n个目标存储结构,其中n为正整数;分别确定n个目标存储结构对应的第二预写日志;根据第二预写日志包括的预设存储结构的使用内存信息的总和,在第二预写日志中确定第一预写日志。
52.进一步地,在本技术的一个实施例中,第一确定模块204,还用于:在第二预写日志包括的预设存储结构的使用内存信息的总和相等的情况下,根据第二预写日志的日志生成时间,在第二预写日志中确定第一预写日志。
53.进一步地,在本技术的一个实施例中,获取模块202,具体用于获取数据库服务器各个数据库分区的预设存储结构的使用内存信息。
54.进一步地,在本技术的一个实施例中,该预写日志的刷写装置200还包括:第二确定模块,用于确定预写日志包括的预设存储结构。
55.本技术实施例中的预写日志的刷写装置200可以是电子设备,也可以是电子设备中的部件,例如集成电路或芯片。该电子设备可以是终端,也可以为除终端之外的其他设备。示例性的,电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、移动上网装置(mobile internet device,mid)、增强现实(augmented reality,ar)/虚拟现实(virtual reality,vr)设备、机器人、可穿戴设备、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本或者个人数字助理(personal digital assistant,pda)等,还可以为服务器、网络附属存储器(network attached storage,nas)、个人计算机(personal computer,pc)、电视机(television,tv)、柜员机或者自助机等,本技术实施例不作具体限定。
56.本技术实施例中的预写日志的刷写装置200可以为具有操作系统的装置。该操作系统可以为安卓(android)操作系统,可以为ios操作系统,还可以为其他可能的操作系统,本技术实施例不作具体限定。
57.本技术实施例提供的预写日志的刷写装置200能够实现图1的预写日志的刷写方法实施例实现的各个过程,为避免重复,这里不再赘述。
58.可选地,如图3所示,本技术实施例还提供一种电子设备300,包括处理器302和存储器304,存储器304上存储有可在处理器302上运行的程序或指令,该程序或指令被处理器302执行时实现上述预写日志的刷写方法实施例的各个步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
59.需要说明的是,本技术实施例中的电子设备包括上述的移动电子设备和非移动电子设备。
60.图4为实现本技术实施例的一种电子设备的硬件结构示意图。
61.该电子设备400包括但不限于:射频单元402、网络模块404、音频输出单元406、输入单元408、传感器410、显示单元412、用户输入单元414、接口单元416、存储器418、以及处理器420等部件。
62.本领域技术人员可以理解,电子设备400还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理系统与处理器420逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。图4中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。
63.其中,处理器420,用于获取数据库服务器中预设存储结构的使用内存信息,并在数据库服务器中生成的预写日志的数量大于或等于预设数量阈值的情况下,根据预设存储结构的使用内存信息,在预写日志中确定第一预写日志,以及对第一预写日志进行刷写处理。
64.在该实施例中,如果某个数据库服务器的wal的数量大于或等于预设数量阈值时,就会触发预写日志的刷写。具体地,统计数据库服务器中预设存储结构的使用内存信息,在
判定数据库服务器的wal的数量大于或等于预设数量阈值时,根据预设存储结构的使用内存信息,确定第一预写日志,其中,第一预写日志为包含的预设存储结构的使用内存信息的总和大于或等于预设内存阈值的预写日志。从而找到第一预写日志对应的数据库分区,然后对这些数据库分区进行刷写。本技术实施例,通过结合预设存储结构的使用内存实现了数据库服务器wal刷写均衡的方法,解决了相关技术中无法释放出有效的memstore的内存的问题,提高了数据库服务器中内存的释放效率,提高了数据库服务器的稳定性。
65.进一步地,在本技术的一个实施例中,处理器420,具体用于:根据预设存储结构的使用内存信息,确定n个目标存储结构,其中n为正整数;分别确定n个目标存储结构对应的第二预写日志;根据第二预写日志包括的预设存储结构的使用内存信息的总和,在第二预写日志中确定第一预写日志。
66.进一步地,在本技术的一个实施例中,处理器420,还用于:在第二预写日志包括的预设存储结构的使用内存信息的总和相等的情况下,根据第二预写日志的日志生成时间,在第二预写日志中确定第一预写日志。
67.进一步地,在本技术的一个实施例中,处理器420,具体用于获取数据库服务器各个数据库分区的预设存储结构的使用内存信息。
68.进一步地,在本技术的一个实施例中,处理器420,还用于确定预写日志包括的预设存储结构。
69.应理解的是,本技术实施例中,输入单元408可以包括图形处理器(graphics processing unit,gpu)4082和麦克风4084,图形处理器4082对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。显示单元412可包括显示面板4122,可以采用液晶显示器、有机发光二极管等形式来配置显示面板4122。用户输入单元414包括触控面板4142以及其他输入设备4144中的至少一种。触控面板4142,也称为触摸屏。触控面板4142可包括触摸检测装置和触摸控制器两个部分。其他输入设备4144可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
70.存储器418可用于存储软件程序以及各种数据。存储器418可主要包括存储程序或指令的第一存储区和存储数据的第二存储区,其中,第一存储区可存储操作系统、至少一个功能所需的应用程序或指令(比如声音播放功能、图像播放功能等)等。此外,存储器418可以包括易失性存储器或非易失性存储器,或者,存储器418可以包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddrsdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synch link dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,drram)。本技术实施例中的存储器418包括但不限于这些和任意其它适合类型的存储器。
71.处理器420可包括一个或多个处理单元;可选的,处理器420集成应用处理器和调
制解调处理器,其中,应用处理器主要处理涉及操作系统、用户界面和应用程序等的操作,调制解调处理器主要处理无线通信信号,如基带处理器。可以理解的是,上述调制解调处理器也可以不集成到处理器420中。
72.本技术实施例还提供一种可读存储介质,可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述预写日志的刷写方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
73.其中,处理器为上述实施例中的电子设备中的处理器。可读存储介质,包括计算机可读存储介质,如计算机只读存储器rom、随机存取存储器ram、磁碟或者光盘等。
74.本技术实施例另提供了一种芯片,芯片包括处理器和通信接口,通信接口和处理器耦合,处理器用于运行程序或指令,实现上述预写日志的刷写方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
75.应理解,本技术实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
76.本技术实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如上述预写日志的刷写方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
77.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本技术实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
78.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本技术各个实施例的方法。
79.上面结合附图对本技术的实施例进行了描述,但是本技术并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本技术的启示下,在不脱离本技术宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本技术的保护之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1