一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据库事务的处理方法及装置

2022-07-10 03:21:33 来源:中国专利 TAG:


1.本技术涉及数据库领域,尤其涉及一种数据库事务的处理方法及装置。


背景技术:

2.数据库事务的处理可以通过处理器实现。随着计算机体系结构和处理器制造工艺的发展,处理器的处理能力快速增长,主要表现在处理器的处理器核和硬件线程的数量增长。显然,处理器处理数据库事务的能力也越来越强。
3.然而,目前数据库管理系统处理数据库事务时,常出现性能瓶颈。虽然处理器提供了较强的处理能力,却难以充分利用。因此,目前处理器的利用率较低是一个亟待解决的问题。


技术实现要素:

4.本技术提供一种数据库事务的处理方法及装置,用于提升处理器的利用率。
5.第一方面,本技术提供一种数据库事务的处理方法,该方法可以由本技术提供的数据库事务的处理装置执行,该数据库事务的处理装置可以为本技术提供的电子设备,该方法包括:
6.获取待处理的数据库事务;对所述待处理的数据库事务进行编译,得到所述待处理的数据库事务的编译结果,所述编译结果包括可执行的代码或中间代码,所述中间代码用于编译为所述可执行的代码;执行所述待处理的数据库事务的编译结果。
7.上述方式下,可以首先基于对所述待处理的数据库事务进行编译,得到所述待处理的数据库事务的编译结果,而所述编译结果包括可执行的代码或中间代码,所述中间代码用于编译为所述可执行的代码,从而可以将待处理的数据库事务进行预先编译,不需要与数据库事务的执行紧密耦合,在执行所述待处理事务时,直接对所述待处理事务的编译结果进行执行,从而可以提升数据库管理系统对于事务的处理效率,进而提升了处理器的利用率。
8.一种可能的设计中,所述执行所述待处理的数据库事务的编译结果,包括:
9.基于数据库管理系统的事务编译引擎(比如主存oltp引擎),执行所述待处理的数据库事务的编译结果。
10.一种可能的设计中,若所述待处理的数据库事务的预估执行时长大于预设时长,和\或所述待处理的数据库事务相同类型的数据库事务已被编译的频率大于预设频率,则所述待处理的数据库事务的编译结果为所述可执行的代码;否则,所述待处理的数据库事务的编译结果为所述中间代码。
11.一种可能的设计中,所述对待处理的数据库事务进行编译,包括:
12.对多个待处理的数据库事务并行编译,所述多个待处理的数据库事务被编译为可执行的代码,或者被编译为中间代码,或者所述多个待处理的数据库事务中的部分数据库事务被编译为可执行的代码、部分数据库事务被编译为中间代码。
13.上述方式下,对于多个待处理的数据库事务,可以均编译为可执行的代码,或者均被编译为中间代码,也可以部分数据库事务被编译为可执行的代码、部分数据库事务被编译为中间代码,从而增加了多个数据库事务编译的灵活性。
14.一种可能的设计中,所述多个待处理的数据库事务中包括第一数据库事务和第二数据库事务,所述第一数据库事务和所述第二数据库事务编译所需访问的数据访问信息相同,所述方法还包括:
15.将所述第一数据库事务和所述第二数据库事务编译所需访问的数据访问信息复制为两份,得到第一数据访问信息和第二数据访问信息;
16.所述对多个待处理的数据库事务并行编译,包括:
17.根据所述第一数据访问信息对所述第一数据库事务进行编译,且并行根据所述第二数据访问信息对所述第二数据库事务进行编译。
18.上述方式下,通过将所述第一数据库事务和所述第二数据库事务编译所需访问的数据访问信息复制为两份,再分别根据两份数据访问信息对两个数据库事务进行编译,从而避免了数据访问信息的访问冲突,也不需要数据锁等复杂操作。
19.一种可能的设计中,所述对待处理的数据库事务进行编译,包括:基于第一计算资源,对所述待处理的数据库事务进行编译;所述执行所述待处理的数据库事务的编译结果,包括:基于第二计算资源,执行所述待处理的数据库事务的编译结果;其中,所述第一计算资源和所述第二计算资源分别包括至少一个处理器核,所述第一计算资源和所述第二计算资源包括的处理器核属于同一处理器。
20.上述方式下,通过为事务编译阶段和事务执行阶段分别分配计算资源,可以实现计算资源的动态利用,从而可以在事务编译和事务执行分离的情况下,分别独立地利用计算资源。
21.一种可能的设计中,对编译的操作进行统计,得到事务编译统计信息;根据所述事务编译统计信息,调整所述第一计算资源和/或所述第二计算资源中包括的处理器核数量;或者对执行的操作进行统计,得到事务执行统计信息;根据所述事务执行统计信息,调整所述第一计算资源和/或所述第二计算资源中包括的处理器核数量;或者对所述编译的操作进行统计,得到事务编译统计信息,对所述执行的操作进行统计,得到事务执行统计信息;根据所述事务编译统计信息和所述事务执行统计信息,调整所述第一计算资源和/或所述第二计算资源中包括的处理器核数量。
22.上述方式下,通过对编译的操作进行统计,得到事务编译统计信息,和\或,对执行的操作进行统计,得到事务执行统计信息,可以根据所述事务编译统计信息和\或所述事务执行统计信息,对第一计算资源和/或所述第二计算资源中包括的处理器核数量进行调整,从而可以使得第一计算资源与第二计算资源互相协调,更合理地运用处理器的处理核。
23.一种可能的设计中,所述事务编译统计信息包括所述编译的操作的编译频率,所述事务执行统计信息包括所述执行的操作发生冲突的频率;所述根据所述事务编译统计信息,调整所述第一计算资源和/或所述第二计算资源中包括的处理器核数量,包括:
24.若所述事务编译统计信息中所述编译的操作的编译频率大于第一阈值,则减少所述第一计算资源中的处理器核数量,和\或增加所述第二计算资源中的处理器核数量;
25.所述根据所述事务执行统计信息,调整所述第一计算资源和/或所述第二计算资
源中包括的处理器核数量,包括:
26.若所述事务执行统计信息中所述执行的操作发生冲突的频率大于第二阈值,则减少所述第一计算资源中的处理器核数量,和\或减少所述第二计算资源中的处理器核数量;
27.所述根据所述事务编译统计信息和所述事务执行统计信息,调整所述第一计算资源和/或所述第二计算资源中包括的处理器核数量,包括:
28.若所述事务编译统计信息中所述编译的操作的编译频率大于所述第一阈值,且所述事务执行统计信息中所述执行的操作发生冲突的频率小于所述第二阈值,则减少所述第一计算资源中的处理器核数量,和\或增加所述第二计算资源中的处理器核数量。
29.上述方式下,若所述事务编译统计信息中所述编译的操作的编译频率大于所述第一阈值,表示编译结果较多,可能会造成数据库事务的执行负载较大,而所述事务执行统计信息中所述执行的操作发生冲突的频率小于所述第二阈值,则表示编译结果较少,数据库事务执行的上限还未被充分运用,那么可以则减少所述第一计算资源中的处理器核数量,和\或增加所述第二计算资源中的处理器核数量,从而进一步更合理地维持计算资源的动态平衡。
30.一种可能的设计中,所述对所述待处理的数据库事务进行编译,得到所述待处理的数据库事务的编译结果之后,所述方法还包括:将所述待处理的数据库事务的编译结果存入缓存队列;
31.所述执行所述待处理的数据库事务的编译结果,包括:
32.从所述缓存队列中获取待处理的数据库事务的编译结果,执行获取到的所述待处理的数据库事务的编译结果。
33.上述方式下,将所述待处理的数据库事务的编译结果存入缓存队列,再从缓存队列中获取并执行所述待处理的数据库事务的编译结果,可以缓存多个待处理的数据库事务的编译结果,从而能够通过缓存队列使得多个待处理的数据库事务的编译结果统一等待被执行。
34.一种可能的设计中,所述方法还包括:
35.对所述缓存队列中数据库事务的编译结果的数量和/或等待时间进行统计,得到排队统计信息;根据所述排队统计信息,调整所述第一计算资源和/或所述第二计算资源中包括的处理器核数量。
36.上述方式下,由于排队统计信息可以表征数据库事务的编译结果的情形,那么从而基于排队统计信息,可以对第一计算资源和/或所述第二计算资源中包括的处理器核数量,使得计算资源之间保持动态平衡。
37.一种可能的设计中,所述根据所述排队统计信息,调整所述第一计算资源和/或所述第二计算资源中包括的处理器核数量,包括:
38.若所述缓存队列中数据库事务的编译结果的数量大于第三阈值,和\或所述缓存队列中数据库事务的等待时间大于第四阈值,则减少所述第一计算资源中包括的处理器核数量,和\或增加所述第二计算资源中包括的处理器核数量。
39.上述方式下,所述缓存队列中数据库事务的编译结果的数量大于第三阈值,和\或所述缓存队列中数据库事务的等待时间大于第四阈值,均意味着数据库事务的编译结果增加过快,所以可以通过减少所述第一计算资源中包括的处理器核数量,和\或增加所述第二
计算资源中包括的处理器核数量,使得第一计算资源和第二计算资源达到动态平衡。
40.一种可能的设计中,所述对待处理的数据库事务进行编译,包括:
41.根据所述待处理事务包括的结构化查询语言sql语句,获取与所述待处理的数据库事务匹配的编译模板;根据所述编译模板,对所述待处理的数据库事务进行编译。
42.上述方式下,通过为待处理事务预先设置编译模板,可以基于已有的编译模板对所述待处理的数据库事务进行编译,从而增加了对所述待处理的数据库事务的编译效率。
43.一种可能的设计中,所述根据所述待处理事务包括的结构化查询语言sql语句,获取与所述待处理的数据库事务匹配的编译模板,包括:
44.若所述待处理的数据库事务包括的所有sql语句的类型,与第一事务型模板对应的所有sql语句的类型相同,则将所述第一事务型模板确定为与所述待处理的数据库事务匹配的编译模板;否则,若所述待处理的数据库事务包括的第一sql语句的类型,与第一sql语句模板对应的sql语句类型相同,则将所述第一sql语句模板确定为与所述待处理的数据库事务匹配的编译模板;其中,所述第一sql语句为所述待处理的数据库事务包括的所有sql语句中的任意一个。
45.上述方式下,当待处理的数据库事务包括的所有sql语句的类型与第一事务型模板中sql语句的类型全部或部分相同时,则根据相同类型的sql语句模板对待处理的数据库事务进行编译,从而可以最大限度地降低数据库事务编译的成本,提升数据库事务的编译效率。
46.所述根据所述编译模板,对所述待处理的数据库事务进行编译,包括:
47.获取所述编译模板对应的可执行的代码,所述编译模板对应的可执行的代码中包括待替换的变量;获取所述待处理的数据库事务中包含的与所述变量匹配的参数,并用所述参数替换所述编译模板对应的可执行的代码中的所述变量。
48.上述方式下,将所述待处理的数据库事务中非通用语言元素的代码填充至所述编译模板对应的可执行的代码,形成所述待处理的数据库事务的编译结果,从而只需要对中非通用语言元素编译即可,避免了通用语言元素的代码的编译,从而提升了所述待处理的数据库事务的编译效率。
49.一种可能的设计中,将在设定时段内未匹配到数据库事务的编译模板释放;和\或,所述编译模板存储在处理器中,若所述处理器中编译模板占用的内存大于内存阈值,则释放所述处理器中的编译模板。
50.第二方面,本技术提供一种数据库事务的处理装置,包括:
51.编译模块,用于获取待处理的数据库事务;
52.所述编译模块,还用于对所述待处理的数据库事务进行编译,得到所述待处理的数据库事务的编译结果,所述编译结果包括可执行的代码或中间代码,所述中间代码用于编译为所述可执行的代码;
53.执行模块,用于执行所述待处理的数据库事务的编译结果。
54.一种可能的设计中,所述编译模块具体用于:
55.对多个待处理的数据库事务并行编译,所述多个待处理的数据库事务被编译为可执行的代码,或者被编译为中间代码,或者所述多个待处理的数据库事务中的部分数据库事务被编译为可执行的代码、部分数据库事务被编译为中间代码。
56.一种可能的设计中,所述多个待处理的数据库事务中包括第一数据库事务和第二数据库事务,所述第一数据库事务和所述第二数据库事务编译所需访问的数据访问信息相同,所述装置还包括调度模块,所述调度模块用于:
57.将所述第一数据库事务和所述第二数据库事务编译所需访问的数据访问信息复制为两份,得到第一数据访问信息和第二数据访问信息;
58.所述编译模块具体用于:
59.根据所述第一数据访问信息对所述第一数据库事务进行编译,且并行根据所述第二数据访问信息对所述第二数据库事务进行编译。
60.一种可能的设计中,所述编译模块具体用于:
61.基于第一计算资源,对所述待处理的数据库事务进行编译;
62.所述执行模块具体用于:
63.基于第二计算资源,执行所述待处理的数据库事务的编译结果;
64.其中,所述第一计算资源和所述第二计算资源分别包括至少一个处理器核,所述第一计算资源和所述第二计算资源包括的处理器核属于同一处理器。
65.一种可能的设计中,所述装置还包括调度模块,所述调度模块还用于:
66.对编译的操作进行统计,得到事务编译统计信息;根据所述事务编译统计信息,调整所述第一计算资源和/或所述第二计算资源中包括的处理器核数量;或者
67.对执行的操作进行统计,得到事务执行统计信息;根据所述事务执行统计信息,调整所述第一计算资源和/或所述第二计算资源中包括的处理器核数量;或者
68.对所述编译的操作进行统计,得到事务编译统计信息,对所述执行的操作进行统计,得到事务执行统计信息;根据所述事务编译统计信息和所述事务执行统计信息,调整所述第一计算资源和/或所述第二计算资源中包括的处理器核数量。
69.一种可能的设计中,所述事务编译统计信息包括所述编译的操作的编译频率,所述事务执行统计信息包括所述执行的操作发生冲突的频率;所述调度模块具体用于:
70.若所述事务编译统计信息中所述编译的操作的编译频率大于第一阈值,则减少所述第一计算资源中的处理器核数量,和\或增加所述第二计算资源中的处理器核数量;
71.若所述事务执行统计信息中所述执行的操作发生冲突的频率大于第二阈值,则减少所述第一计算资源中的处理器核数量,和\或减少所述第二计算资源中的处理器核数量;
72.若所述事务编译统计信息中所述编译的操作的编译频率大于所述第一阈值,且所述事务执行统计信息中所述执行的操作发生冲突的频率小于所述第二阈值,则减少所述第一计算资源中的处理器核数量,和\或增加所述第二计算资源中的处理器核数量。
73.一种可能的设计中,所述装置还包括调度模块,所述调度模块用于:
74.将所述待处理的数据库事务的编译结果存入缓存队列;
75.所述执行模块具体用于:
76.从所述缓存队列中获取待处理的数据库事务的编译结果,执行获取到的所述待处理的数据库事务的编译结果。
77.一种可能的设计中,所述调度模块还用于:
78.对所述缓存队列中数据库事务的编译结果的数量和/或等待时间进行统计,得到排队统计信息;根据所述排队统计信息,调整所述第一计算资源和/或所述第二计算资源中
包括的处理器核数量。
79.一种可能的设计中,所述调度模块具体用于:
80.若所述缓存队列中数据库事务的编译结果的数量大于第三阈值,和\或所述缓存队列中数据库事务的等待时间大于第四阈值,则减少所述第一计算资源中包括的处理器核数量,和\或增加所述第二计算资源中包括的处理器核数量。
81.一种可能的设计中,所述编译模块具体用于:
82.根据所述待处理事务包括的结构化查询语言sql语句,获取与所述待处理的数据库事务匹配的编译模板;根据所述编译模板,对所述待处理的数据库事务进行编译。
83.一种可能的设计中,所述编译模块具体用于:
84.若所述待处理的数据库事务包括的所有sql语句的类型,与第一事务型模板对应的所有sql语句的类型相同,则将所述第一事务型模板确定为与所述待处理的数据库事务匹配的编译模板;
85.否则,若所述待处理的数据库事务包括的第一sql语句的类型,与第一sql语句模板对应的sql语句类型相同,则将所述第一sql语句模板确定为与所述待处理的数据库事务匹配的编译模板;其中,所述第一sql语句为所述待处理的数据库事务包括的所有sql语句中的任意一个。
86.一种可能的设计中,所述编译模块具体用于:
87.获取所述编译模板对应的可执行的代码,所述编译模板对应的可执行的代码中包括待替换的变量;
88.获取所述待处理的数据库事务中包含的与所述变量匹配的参数,并用所述参数替换所述编译模板对应的可执行的代码中的所述变量。
89.第三方面,提供一种电子设备,所述电子设备包括:一个或多个处理器;一个或多个存储器;其中,所述一个或多个存储器存储有一个或多个计算机指令,当所述一个或多个计算机指令被所述一个或多个处理器执行时,使得所述电子设备执行如上述第一方面中任一项所述的方法。
90.第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质包括计算机指令,当计算机指令在计算机上运行时,使得所述计算机执行如上述第一方面中任一项所述的方法。
91.以上第二方面到第四方面的有益效果,请参见第一方面的有益效果,不重复赘述。
附图说明
92.图1为本技术实施例提供的一种数据库事务处理方法可以应用的单机数据库系统的架构示意图;
93.图2a-图2b为本技术实施例提供的一种数据库事务处理方法可应用的架构示意图;
94.图3为本技术实施例提供的一种数据库事务处理方法中执行计划的结构示意图;
95.图4为本技术实施例提供的一种数据库事务处理方法的流程示意图;
96.图5为本技术实施例提供的一种数据库事务处理装置的结构示意图;
97.图6为本技术实施例提供的一种电子设备结构示意图。
具体实施方式
98.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。
99.以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本技术的限制。如在本技术的说明书和所附权利要求书中所使用的那样,单数表达形式“一个”、“一种”、“所述”、“上述”、“该”和“这一”旨在也包括例如“一个或多个”这种表达形式,除非其上下文中明确地有相反指示。还应当理解,在本技术实施例中,“一个或多个”是指一个或两个以上(包含两个);“和/或”,描述关联对象的关联关系,表示可以存在三种关系;例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a、b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
100.在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
101.本技术实施例中的术语多个”是指两个或两个以上,鉴于此,本技术实施例中也可以将“多个”理解为“至少两个”。“至少一个”,可理解为一个或多个,例如理解为一个、两个或更多个。例如,包括至少一个,是指包括一个、两个或更多个,而且不限制包括的是哪几个。例如,包括a、b和c中的至少一个,那么包括的可以是a、b、c,a和b,a和c,b和c,或a和b和c。同理,对于“至少一种”等描述的理解,也是类似的。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
102.除非有相反的说明,本技术实施例提及“第一”、“第二”等序数词用于对多个对象进行区分,不用于限定多个对象的顺序、时序、优先级或者重要程度。
103.为了便于理解,对本技术实施例涉及的术语进行解释说明,该术语的解释说明也作为对本技术实施例发明内容的一部分。
104.应用场景
105.本技术实施例提供的一种数据库事务处理方法可以应用于单机数据库系统或者集群数据库系统。数据库系统(database system)是为适应数据处理的需要而发展起来的一种较为理想的数据处理系统。数据库系统一般由以下三部分组成:(1)数据库(database,db),指长期存储在计算机内的,有组织,可共享的数据的集合。数据库中的数据按一定的数学模型组织、描述和存储,具有较小的冗余,较高的数据独立性和易扩展性,并可为各种用户共享。(2)硬件,包括存储数据所需的数据存储器,例如内存和/或磁盘。(3)软件,包括数据库管理系统(database management system,dbms),dbms是数据库系统的核心软件,是用于科学地组织和存储数据,以及高效获取和维护数据的系统软件,而数据库引擎是dbms的核心内容。
106.具体地,以单机数据库系统为例介绍,如图1所示,单机数据库系统包括一个dbms和数据存储器(data store),该dbms用于提供数据库的查询和修改等服务,该dbms将数据
存储到数据存储器中。在单机数据库系统中,dbms和数据存储器通常位于单一数据库服务器上,数据库服务器包括一个或多个处理器。举例来说,数据库服务器可以为一台对称多处理器(symmetric multi-processor,smp)服务器。该smp服务器包括多个处理器,所有的处理器共享资源,如总线,内存和i/o系统等。数据库管理系统的功能可由一个或多个处理器执行内存中的程序来实现。dbms和数据存储器也可以位于单处理器(uniprocessor)服务器上。dbms的功能可仅由一个处理器执行内存中的程序来实现。需要说明的是,用于实现dbms功能的处理器既可以是单核处理器(the single core processor),也可以是多核处理器(multi-core processor),举例来说,多核处理器可以为众核处理器(many-core processor)。多核处理器包括多个核心(core),处理器的核心在本技术中可以称为处理器核。
107.在本技术的实施例中,数据库系统的数据存储器包括但不限于固态硬盘(ssd)、磁盘阵列或其他类型的非瞬态计算机可读介质。图1中虽未示出数据库,应理解,数据库存储在数据存储器中。本领域技术人员可以理解一个数据库系统可能包括比图1中所示的部件更少或更多的组件,或者包括与图1中所示组件不同的组件,图1仅仅示出了与本发明实施例所公开的实现方式更加相关的组件。
108.为了便于理解和描述,作为示例而非限定,下面以单机数据库系统的数据库服务器为例说明本发明实施例的方案。本领域技术人员根据本技术实施例可以很清楚地理解,本发明实施例的方法同样可以应用于集群数据库系统,以及任何类型的关系型数据库系统。
109.如图2a所示,本技术实施例提供的一种数据库事务处理方法可应用的架构示意图,该架构包括数据库客户端10、数据库服务器20和数据存储器30,具体可以如下:
110.数据库客户端10用于生成数据库事务,以及发送数据库事务至数据库管理系统23,并获得数据库管理系统23返回的数据库事务的处理结果。数据库客户端10可以包括被配置成与数据库服务器20交互的任何类型的设备或应用程序。在一些示例中,数据库客户端10包括一个或多个应用服务器。
111.数据库服务器20可以包括:至少一个处理器21、存储可执行代码的非瞬态计算机可读介质(non-transitory computer-readable medium)22和数据库管理系统23。可执行代码在被至少一个处理器21执行时被配置为实现数据库管理系统23的组件和功能。非瞬态计算机可读介质22可以包括一个或多个非易失性存储器,作为示例,非易失性存储器可以包括半导体存储器设备,例如可擦可编程只读存储器(erasable programmable read only memory,eprom),电可擦只读存储器(electrically erasable programmable read only memory,eeprom)和闪存(flash memory);非易失性存储器可以包括磁盘,例如内部硬盘(internal hard disk)或可移动磁盘(removable disk),磁光盘(magneto optical disk),以及cd rom和dvd-rom。此外,非瞬态计算机可读介质22还可以包括被配置为主存储器(main memory)的任何设备。至少一个处理器21可以包括任何类型的通用计算电路或专用逻辑电路,例如现场可编程门阵列(fpga)或专用集成电路(asic)。至少一个处理器21可以是耦合到一个或多个半导体基板的一个或多个处理器,例如中央处理器(central processing unit,cpu)。需要说明的是,至少一个处理器21均有核心(core),核心(core)也可以称为处理器核,这些处理器核可以形成处理器核集合,为数据库管理系统23处理数据
库事务提供计算资源。
112.数据库管理系统23可以是关系型数据库管理系统(relational database management system,rdbms),且数据库管理系统23的数据处理类型可以为联机事务处理(on-line transaction processing,oltp)。数据库管理系统23支持结构化查询语言(structured query language,sql),数据库管理系统23所处理的数据库事务可以包括sql语句,如可以包括一个sql语句,也可以包括多个sql语句。通常,sql是指专门用于管理关系型数据库中保存的数据的专用编程语言。sql可以指代各种类型的数据相关语言,包括例如数据定义语言和数据操纵语言,其中sql的范围可以包括数据插入,查询,更新和删除,模式创建和修改以及数据访问控制。以sql查询为例,在一些示例中,sql可以包括与各种语言元素相关的描述,比如语言元素可以为子句(clause),表达式(expression),谓词(predicate),查询(query)和语句(statement)。例如,子句可以指语句和查询的各种组成部分,并且在一些情况下,子句可以被认为是可选的。此外,表达式可以被配置为产生包括数据列和/或行的标量值(scalar value)和/或表。另外,谓词可经配置以指定条件,以用于调节语句和查询的效果。
113.以数据库事务为sql查询语句为例,查询(query)是请求查看、访问和/或操纵存储在数据库中的数据。数据库管理系统23可以从数据库客户端10接收sql格式的查询(称为sql查询语句)。通常,数据库管理系统23通过从数据库访问相关数据并操纵相关数据以生成查询所对应的查询结果,并将查询结果返回到数据库客户端10。数据库是按一定的数学模型组织、描述和存储的数据集合,数据库可以包括一个或多个数据库结构或格式,例如行存储和列存储。数据库可以存储于数据存储器中,比如图2a中外部的数据存储器30,或者非瞬态计算机可读介质22。当数据库存储于非瞬态计算机可读介质22时,数据库管理系统23为内存数据库管理系统。
114.数据库管理系统23包括事务编译引擎231、缓存队列232、事务执行引擎233、存储引擎234和核心调度器235。事务编译引擎231的类型可以为主存oltp引擎。
115.事务编译引擎231具体可以包括解析器2311、优化器2312和编译器2313。
116.解析器2311用于执行对数据库事务进行语法、语义分析,获得可解释执行的操作树(以下简称操作树)。操作树描述了访问目标数据所需采用的算子、以及算子的执行顺序。优化器2312用于为解析器2311输出的操作树生成一组可能被使用的执行计划,可以估算出每个执行计划的代价,比较计划的代价,最终选择一个代价最小的执行计划。执行计划也是描述了访问目标数据所需采用的算子、以及算子的执行顺序,只是对解析器2311的操作树做了进一步地优化,执行计划可以是一个优化后的操作树。
117.无论是解析器2311输出的操作树,还是优化器2312输出的执行计划,针对其中任一种算子,该算子表征了对数据的一种处理方式。不同的数据库所支持的算子存在一定的区别,即便是实现相同功能的算子,算子的具体执行方式也会存在区别。例如,mysql和postgresql中均支持浏览(scan)算子,该浏览(scan)算子表示提取数据表中的部分或全部数据。但是在mysql中的scan算子在提取数据时,算子内部采用单线程的方式,也即只有一个线程在进行数据提取。postgresql中的scan算子在提取数据时,算子内部采用多线程的方式,也即由多个线性并行进行数据提取。
118.以执行计划为例,在描述所采用的算子时,可以描述该算子的名称、该算子所需处
理的数据、该算子处理数据的约束条件等。以mysql为例,当执行计划中包括过滤(filter)算子时,执行计划中描述该过滤算子时,标记该算子的名称为过滤算子,标记该算子需要对数据表a进行处理,还会记录该算子需要选择数据表a中行b的值大于10的数据,选择表中行b的值大于10的数据即可理解为该算子处理数据的约束条件。
119.举例来说,数据库事务指示数据库管理系统23需要从数据表a中对列a的数据、以及列b中值大于10的数据进行组合。如图3所示,为本技术实施例提供的一种执行计划的示意图,为了便于理解,此处的执行计划的形式以树状结构的操作树为例。
120.该执行计划分为两个分支,分支1中包括一个浏览算子1,浏览算子1用于从数据表a中提取列a。分支2中包括一个浏览算子2和一个过滤算子,浏览算子2用于从数据表a中提取列b,过滤算子用于从列b中过滤出值大于10的数据。这两个分支的汇合处为一个连接(join)算子。该连接算子用于对列a的数据、以及列b中值大于10的数据进行组合。
121.编译器2313用于对执行计划进行编译,得到中间代码或可执行的代码。编译器2313的编译过程是,先将执行计划编译为中间代码,再将ir代码编译为可执行的代码。举例来说,编译器2313具体可以为底层语言虚拟机(low level virtual machine,llvm)编译器。llvm编译器可以先将执行计划编译为中间表示(intermediate representation,ir)代码,再将ir代码编译为可执行的代码。因此,编译器2313可以直接将执行计划编译为中间代码后便输出,也可以将中间代码编译为可执行的代码后再输出。
122.显然,由于事务编译引擎231既可以将数据库事务编译为中间代码,也可以将数据库事务编译为可执行的代码,那么可以通过一定策略选择不同的编译结果,进一步优化数据库事务的执行。举例来说,若所述待处理的数据库事务的预估执行时长大于预设时长,预估执行时长可以为该数据库事务已被执行时长的平均值,和\或所述待处理的数据库事务相同类型的数据库事务已被编译的频率大于预设频率,则将待处理的数据库事务编译为所述可执行的代码;否则,将所述待处理的数据库事务编译为中间代码。在该方式下,可以使得已被编译频率较高类型的数据库事务以及执行时长较长的数据库事务降低在事务执行引擎233中的执行代价,从而明显地缩短了这类数据库事务的执行代价,而对于不能明显缩短执行代价的数据库事务,编译为中间代码即可,也可以编译更多的数据库事务。这样不会对数据库事务的执行时长造成较大影响,也节约了编译的计算资源,从而促进了编译结果的生成与执行的动态平衡。
123.编译器2313还可以用于将数据库事务的编译结果输出至缓存队列232,或者也可以用于直接将数据库事务的编译结果输出至事务执行引擎233。
124.需要说明的是,上述事务编译引擎231所示出的各模块仅是示例性描述,本技术实施例并不对事务编译引擎231的具体模块做限定。举例来说,事务编译引擎231也可以不包括优化器2312,解析器2311输出的操作树可以直接输入至编译器2313。
125.缓存队列232用于存放数据库事务的编译结果,缓存队列232中存放的数据库事务的编译结果可以用于事务执行引擎233执行。缓存队列232中的设置在此不做限定,如缓存队列232中可以有多个队列,并分别设置不同的优先级,也可以设置相同的优先级;缓存队列232中的排队规则可以为“先来先服务”等;缓存队列232中的数据库事务可以被事务执行引擎233并行执行,从而可以支持多个生产者和多个消费者的并发访问。
126.举例来说,对于oltp数据库,由于数据库事务的编译时长一般远大于执行时长,那
么并行执行数据库事务(也就是缓存队列232中被单次服务的最大数据库事务)的数目可以设置为小于队列数目。举例来说,缓存队列232中可以设置10个相同优先级的队列,排队规则为“先来先服务”,每次服务的数据库事务的数目可以为4个。
127.缓存队列232可以为至少一个处理器21上的缓存(cache),如cpu上的一级缓存(level1cache,l1cache)、二级缓存(level 2cache,l2cache)和三级缓存(level 3cache,l3cache);缓存队列232也可以为非瞬态计算机可读介质22的一块缓存,如一块主存。
128.事务执行引擎233用于获取来自事务编译引擎231的数据库事务的编译结果,显然,事务编译引擎233获取到的数据库事务的编译结果既可能是可执行的代码,也可能是中间代码。若是可执行代码,事务执行引擎233可以直接将可执行的代码加载运行,若是中间代码,事务执行引擎233也可以将中间代码编译为可执行的代码,再将可执行的代码加载运行。
129.存储引擎234用于在文件系统之上,管理表的数据、索引的实际内容,同时也会管理数据库管理系统23运行时的缓存、日志等数据。例如存储引擎234可以将事务执行引擎233的执行结果通过物理i/o写入数据存储器30。
130.显然,事务编译引擎231、缓存队列232、事务执行引擎233和存储引擎234在实现各自功能时,均需要一定的计算资源,计算资源可以为处理器的处理器核。而核心调度器235便用于为事务编译引擎231、缓存队列232、事务执行引擎233和存储引擎234分配处理器核,使得事务编译引擎231、缓存队列232、事务执行引擎233和存储引擎234实现各自功能,核心调度器235自身的实现也需要一定的计算资源。在核心调度器235的调度之下,事务编译引擎231、缓存队列232、事务执行引擎233和存储引擎234之间可以完成协作,举例来说,协作过程可以应用于图2b示出的架构,协作过程具体如下:
131.以查询(query)为例,事务编译引擎231根据数据库客户端10提交的数据库事务(sql查询语句),编译为可执行的代码,将可执行的代码发送至缓存队列232,事务执行引擎233从缓存队列232中获取可执行的代码,以产生查询结果,存储引擎234将查询结果的日志写入数据存储器30。
132.已有技术中,由于数据库事务的编译和执行均是在事务执行引擎233中进行,事务编译和事务执行过程紧密耦合,从数据库事务编译开始到数据库事务执行结束为止,一个处理器核(core)需要一直与这个数据库事务绑定,而后面的数据库事务只能等待签名的数据库事务处理完毕,那么虽然处理器的处理器核迭代较快,但处理器处理事务请求的能力受制于数据库管理系统处理本身。而本技术实施例中,通过核心调度器235对事务编译引擎231、缓存队列232、事务执行引擎233和存储引擎234的调度,可以将数据库事务的处理分为编译阶段和执行阶段。由于事务编译引擎231可以对数据库事务进行预先编译,事务执行引擎233便能专注于数据库事务的执行,即便并发执行,也不会因为数据库事务编译拖慢执行速率,那么单位时间内便可以处理更多的数据库事务,充分运用数据库管理系统23的处理能力。因此,可以使得更多的处理器核参与计算,提升了处理器的利用率。
133.下面结合图4,详细描述本技术实施例提供的一种数据库事务处理方法。图4示出的步骤可以通过图2a示出的架构实现。下面以图2a示出的架构为例,详细描述数据库事务处理方法的具体步骤:
134.步骤401:事务编译引擎231获取待处理的数据库事务。
135.步骤402:事务编译引擎231对所述待处理的数据库事务进行编译,得到所述待处理的数据库事务的编译结果。
136.其中,所述编译结果包括可执行的代码或中间代码,所述中间代码用于编译为所述可执行的代码。
137.步骤403:事务执行引擎233执行所述待处理的数据库事务的编译结果。
138.从数据库事务编译数量的层面考虑,步骤402中的数据库事务可以为一个也可以为多个,以多个数据库事务为例,步骤402的步骤可以为:
139.事务编译引擎231对多个待处理的数据库事务并行编译,所述多个待处理的数据库事务被编译为可执行的代码,或者被编译为中间代码,或者所述多个待处理的数据库事务中的部分数据库事务被编译为可执行的代码、部分数据库事务被编译为中间代码。
140.举例来说,多个待处理的数据库事务共有10个,分别为t1、t2
……
t10。其中t1~t3的预估执行时长大于预设时长,t4~t6均为指示按列值查找表a的数据记录,而按列值查找表a的数据记录类型的数据库事务已被编译的频率大于预设频率,那么t1~t6的编译结果便是可执行的代码,而t7~t10被编译为中间代码。
141.需要说明的是,事务编译引擎231在对数据库事务进行编译的过程中,可能需要访问数据访问信息,数据访问信息可以包括请求访问的数据记录的存储位置、数据库事务对应的用户访问权限、数据库连接个数等。对于多个数据库事务并行编译的情形,可能出现多个数据库事务所需访问的数据访问信息相同的情形。举例来说,所述多个待处理的数据库事务中包括第一数据库事务和第二数据库事务,所述第一数据库事务和所述第二数据库事务编译所需访问的数据访问信息相同,可以执行以下步骤:
142.将所述第一数据库事务和所述第二数据库事务编译所需访问的数据访问信息复制为两份,得到第一数据访问信息和第二数据访问信息;根据所述第一数据访问信息对所述第一数据库事务进行编译,且并行根据所述第二数据访问信息对所述第二数据库事务进行编译。
143.举例来说,第一数据库事务和第二数据库事务都需要访问数据表a的表信息,那么可以把数据表a的表信息复制为2份,即第一数据表信息和第二数据表信息,那么可以根据第一数据表信息对所述第一数据库事务进行编译,且并行根据所述第二数据表信息对所述第二数据库事务进行编译。
144.一种可能的实现方式中,步骤402的编译过程可以借助编译模板来完成,编译模板可以存储在至少一个处理器21中,步骤可以如下:
145.事务编译引擎231根据所述待处理事务包括的结构化查询语言sql语句,获取与所述待处理的数据库事务匹配的编译模板;根据所述编译模板,对所述待处理的数据库事务进行编译。
146.举例来说,待处理事务包括第一sql语句和第二sql语句。其中,
147.第一sql语句为:
148.select*from student where age=15,即从数据表student中查询年龄为15学生的数据记录。
149.第二sql语句为:
150.select*from exam_results where math》60,即从数据表exam_results中查询数
学大于60的数据记录。
151.编译模板可以为其中部分或者全部sql语句的模板,举例来说,编译模板可以为第一sql语句的模板,也可以为第一sql语句和第二sql语句的模板。
152.编译模板的具体确定方式可以如下:
153.若所述待处理的数据库事务包括的所有sql语句的类型,与第一事务型模板对应的所有sql语句的类型相同,则将所述第一事务型模板确定为与所述待处理的数据库事务匹配的编译模板;
154.否则,若所述待处理的数据库事务包括的第一sql语句的类型,与第一sql语句模板对应的sql语句类型相同,则将所述第一sql语句模板确定为与所述待处理的数据库事务匹配的编译模板;其中,所述第一sql语句为所述待处理的数据库事务包括的所有sql语句中的任意一个。
155.对于匹配到编译模板的数据库事务,其具体编译过程可以如下:
156.获取所述编译模板对应的可执行的代码,所述编译模板对应的可执行的代码中包括待替换的变量;获取所述待处理的数据库事务中包含的与所述变量匹配的参数,并用所述参数替换所述编译模板对应的可执行的代码中的所述变量。
157.举例来说,第一事务型模板对应的sql语句的类型包括:select*from student where age=x,以及select*from exam_results where math》y,第一事务型模板则为这两个sql语句对应的可执行代码,而其中的非通用语言元素“x”和“y”对应的可执行代码可以用特殊字符标记,待获取到数据库事务中具体的sql语句中语言元素(数据列和/或行的标量值,x=15,y=60),可以仅根据数据列和/或行的标量值生成非通用语言元素的代码,再用非通用语言元素的代码填充至所述编译模板对应的可执行的代码(即替换非通用语言元素“x”和“y”对应的可执行代码),形成所述待处理的数据库事务的编译结果。
158.需要说明的是,还可以对编译模板进行存储管理,如将在设定时段内未匹配到数据库事务的编译模板释放;和\或,所述编译模板存储在处理器中,若所述处理器中编译模板占用的内存大于内存阈值,则释放所述处理器中的编译模板。
159.显然,步骤402~403的执行需要基于计算资源,步骤402具体可以为:
160.基于第一计算资源,事务编译引擎231对所述待处理的数据库事务进行编译。
161.而步骤403具体可以为:
162.基于第二计算资源,事务执行引擎233执行所述待处理的数据库事务的编译结果。
163.其中,所述第一计算资源和所述第二计算资源分别包括至少一个处理器核,所述第一计算资源和所述第二计算资源包括的处理器核可以属于同一处理器,可以为至少一个处理器21中的处理器核。第一计算资源中包括的处理器核数量与第二计算资源中包括的处理器核数量之和既可以是固定的,也可以是变化的。第一计算资源中包括的处理器核数量与第二计算资源中包括的处理器核数量可以根据具体场景设计,举例来说,对于oltp数据库,由于数据库事务编译的时长远大于数据库事务执行的时长,可以设置第一计算资源包括的处理器核为第二计算资源包括的处理器核的10倍。
164.显然,核心调度器235通过对第一计算资源和第二计算资源合适的调整,可以使得数据库事务的编译与执行更加平衡,使得数据库事务的整体处理效率更高。核心调度器235可以按照以下方式调整:
165.第一种方式:核心调度器235对编译的操作进行统计,得到事务编译统计信息;根据所述事务编译统计信息,调整所述第一计算资源和/或所述第二计算资源中包括的处理器核数量。
166.举例来说,所述事务编译统计信息可以包括所述编译的操作的编译频率,具体调整过程可以如下:
167.若所述事务编译统计信息中所述编译的操作的编译频率大于第一阈值,则核心调度器235减少所述第一计算资源中的处理器核数量,和\或增加所述第二计算资源中的处理器核数量。
168.第二种方式:核心调度器235对执行的操作进行统计,得到事务执行统计信息;核心调度器235根据所述事务执行统计信息,调整所述第一计算资源和/或所述第二计算资源中包括的处理器核数量。
169.举例来说,所述事务执行统计信息可以包括所述执行的操作发生冲突的频率,具体调整过程可以如下:
170.若所述事务执行统计信息中所述执行的操作发生冲突的频率大于第二阈值,则核心调度器235减少所述第一计算资源中的处理器核数量,和\或减少所述第二计算资源中的处理器核数量。
171.第三种方式:
172.核心调度器235对所述编译的操作进行统计,得到事务编译统计信息,对所述执行的操作进行统计,得到事务执行统计信息;核心调度器235根据所述事务编译统计信息和所述事务执行统计信息,调整所述第一计算资源和/或所述第二计算资源中包括的处理器核数量。具体调整过程可以如下:
173.若所述事务编译统计信息中所述编译的操作的编译频率大于所述第一阈值,且所述事务执行统计信息中所述执行的操作发生冲突的频率小于所述第二阈值,则核心调度器235减少所述第一计算资源中的处理器核数量,和\或增加所述第二计算资源中的处理器核数量。
174.需要说明的是,步骤402之后,核心调度器235还可以将待处理的数据库事务的编译结果存入缓存队列232,该情形下步骤403可以为:
175.核心调度器235从所述缓存队列232中获取待处理的数据库事务的编译结果,执行获取到的所述待处理的数据库事务的编译结果。
176.那么可以按照以下过程对第一计算资源和/或所述第二计算资源中包括的处理器核数量进行调整:
177.核心调度器235对所述缓存队列232中数据库事务的编译结果的数量和/或等待时间进行统计,得到排队统计信息;核心调度器235根据所述排队统计信息,调整所述第一计算资源和/或所述第二计算资源中包括的处理器核数量。
178.具体来说,调整策略可以如下:
179.若所述缓存队列232中数据库事务的编译结果的数量大于第三阈值,和\或所述缓存队列232中数据库事务的等待时间大于第四阈值,则核心调度器235减少所述第一计算资源中包括的处理器核数量,和\或增加所述第二计算资源中包括的处理器核数量。
180.举例来说,第一计算资源中包括的处理器核数量为90,第二计算资源中包括的处
理器核数量为10,缓存队列232中数据库事务的编译结果的数量为1000,第三阈值为900,且缓存队列232中数据库事务的等待时间为10ms,第四阈值为8ms,那么可以将第一计算资源中包括的处理器核数量减少为80(如单次处理器核的减少量设置为10),将第二计算资源中包括的处理器核数量增加为9(如单次处理器核的增加量设置为1)。
181.如图5所示,为本技术提供一种数据库事务的处理装置,该装置包括:
182.编译模块501,用于获取待处理的数据库事务;
183.所述编译模块501,还用于对所述待处理的数据库事务进行编译,得到所述待处理的数据库事务的编译结果,所述编译结果包括可执行的代码或中间代码,所述中间代码用于编译为所述可执行的代码;
184.执行模块502,用于执行所述待处理的数据库事务的编译结果。
185.一种可能的设计中,所述编译模块501具体用于:
186.对多个待处理的数据库事务并行编译,所述多个待处理的数据库事务被编译为可执行的代码,或者被编译为中间代码,或者所述多个待处理的数据库事务中的部分数据库事务被编译为可执行的代码、部分数据库事务被编译为中间代码。
187.一种可能的设计中,所述多个待处理的数据库事务中包括第一数据库事务和第二数据库事务,所述第一数据库事务和所述第二数据库事务编译所需访问的数据访问信息相同,所述装置还包括调度模块503,所述调度模块503用于:
188.将所述第一数据库事务和所述第二数据库事务编译所需访问的数据访问信息复制为两份,得到第一数据访问信息和第二数据访问信息;
189.所述编译模块501具体用于:
190.根据所述第一数据访问信息对所述第一数据库事务进行编译,且并行根据所述第二数据访问信息对所述第二数据库事务进行编译。
191.一种可能的设计中,所述编译模块501具体用于:
192.基于第一计算资源,对所述待处理的数据库事务进行编译;
193.所述执行模块502具体用于:
194.基于第二计算资源,执行所述待处理的数据库事务的编译结果;
195.其中,所述第一计算资源和所述第二计算资源分别包括至少一个处理器核,所述第一计算资源和所述第二计算资源包括的处理器核属于同一处理器。
196.一种可能的设计中,所述装置还包括调度模块503,所述调度模块503还用于:
197.对编译的操作进行统计,得到事务编译统计信息;根据所述事务编译统计信息,调整所述第一计算资源和/或所述第二计算资源中包括的处理器核数量;或者
198.对执行的操作进行统计,得到事务执行统计信息;根据所述事务执行统计信息,调整所述第一计算资源和/或所述第二计算资源中包括的处理器核数量;或者
199.对所述编译的操作进行统计,得到事务编译统计信息,对所述执行的操作进行统计,得到事务执行统计信息;根据所述事务编译统计信息和所述事务执行统计信息,调整所述第一计算资源和/或所述第二计算资源中包括的处理器核数量。
200.一种可能的设计中,所述事务编译统计信息包括所述编译的操作的编译频率,所述事务执行统计信息包括所述执行的操作发生冲突的频率;所述调度模块503具体用于:
201.若所述事务编译统计信息中所述编译的操作的编译频率大于第一阈值,则减少所
述第一计算资源中的处理器核数量,和\或增加所述第二计算资源中的处理器核数量;
202.若所述事务执行统计信息中所述执行的操作发生冲突的频率大于第二阈值,则减少所述第一计算资源中的处理器核数量,和\或减少所述第二计算资源中的处理器核数量;
203.若所述事务编译统计信息中所述编译的操作的编译频率大于所述第一阈值,且所述事务执行统计信息中所述执行的操作发生冲突的频率小于所述第二阈值,则减少所述第一计算资源中的处理器核数量,和\或增加所述第二计算资源中的处理器核数量。
204.一种可能的设计中,所述装置还包括调度模块503,所述调度模块503用于:
205.将所述待处理的数据库事务的编译结果存入缓存队列;
206.所述执行模块502具体用于:
207.从所述缓存队列中获取待处理的数据库事务的编译结果,执行获取到的所述待处理的数据库事务的编译结果。
208.一种可能的设计中,所述调度模块503还用于:
209.对所述缓存队列中数据库事务的编译结果的数量和/或等待时间进行统计,得到排队统计信息;根据所述排队统计信息,调整所述第一计算资源和/或所述第二计算资源中包括的处理器核数量。
210.一种可能的设计中,所述调度模块503具体用于:
211.若所述缓存队列中数据库事务的编译结果的数量大于第三阈值,和\或所述缓存队列中数据库事务的等待时间大于第四阈值,则减少所述第一计算资源中包括的处理器核数量,和\或增加所述第二计算资源中包括的处理器核数量。
212.一种可能的设计中,所述编译模块501具体用于:
213.根据所述待处理事务包括的结构化查询语言sql语句,获取与所述待处理的数据库事务匹配的编译模板;根据所述编译模板,对所述待处理的数据库事务进行编译。
214.一种可能的设计中,所述编译模块501具体用于:
215.若所述待处理的数据库事务包括的所有sql语句的类型,与第一事务型模板对应的所有sql语句的类型相同,则将所述第一事务型模板确定为与所述待处理的数据库事务匹配的编译模板;
216.否则,若所述待处理的数据库事务包括的第一sql语句的类型,与第一sql语句模板对应的sql语句类型相同,则将所述第一sql语句模板确定为与所述待处理的数据库事务匹配的编译模板;其中,所述第一sql语句为所述待处理的数据库事务包括的所有sql语句中的任意一个。
217.一种可能的设计中,所述编译模块501具体用于:
218.获取所述编译模板对应的可执行的代码,所述编译模板对应的可执行的代码中包括待替换的变量;
219.获取所述待处理的数据库事务中包含的与所述变量匹配的参数,并用所述参数替换所述编译模板对应的可执行的代码中的所述变量。
220.本技术实施例还提供一种电子设备,该电子设备可以具有如图6所示的结构,该电子设备可以是计算机设备,也可以是能够支持计算机设备实现上述方法的芯片或芯片系统。
221.如图6所示的电子设备可以包括至少一个处理器601,所述至少一个处理器601用
于与存储器耦合,读取并执行所述存储器中的指令以实现本技术实施例提供的视频帧内插的步骤。可选的,该电子设备还可以包括通信接口602,用于支持该电子设备进行信令或者数据的接收或发送。电子设备中的通信接口602,可用于实现与其他电子设备的进行交互。处理器601可用于实现电子设备执行视频帧内插的步骤。可选的,该电子设备通还可以包括存储器603,其中存储有计算机指令,存储器603可以与处理器601和/或通信接口602耦合,用于支持处理器601调用存储器603中的计算机指令以实现视频帧内插的步骤;另外,存储器603还可以用于存储本技术方法实施例所涉及的数据,例如,用于存储支持通信接口602实现交互所必须的数据、指令,和/或,用于存储电子设备执行本技术实施例所述方法所必须的配置信息。
222.本技术实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机指令,这些计算机指令被计算机调用执行时,可以使得计算机完成上述方法实施例、方法实施例的任意一种可能的设计中所涉及的方法。本技术实施例中,对计算机可读存储介质不做限定,例如,可以是ram(random-access memory,随机存取存储器)、rom(read-only memory,只读存储器)等。
223.本技术还提供一种芯片,该芯片可以包括处理器以及接口电路,用于完成上述方法实施例、方法实施例的任意一种可能的实现方式中所涉及的方法,其中,“耦合”是指两个部件彼此直接或间接地结合,这种结合可以是固定的或可移动性的。
224.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机指令的形式实现。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
225.本技术实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件单元、或者这两者的结合。软件单元可以存储于ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可移动磁盘、cd-rom或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于asic中,asic可以设置于终端设备中。可选地,处理器和存储媒介也可以设置于终端设备中的不同的部件中。
226.这些计算机指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
227.尽管结合具体特征及其实施例对本发明进行了描述,显而易见的,在不脱离本发明的范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本发明的示例性说明,且视为已覆盖本发明范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献