CN106897123A - 数据库操作方法及装置 - Google Patents
数据库操作方法及装置 Download PDFInfo
- Publication number
- CN106897123A CN106897123A CN201510960860.4A CN201510960860A CN106897123A CN 106897123 A CN106897123 A CN 106897123A CN 201510960860 A CN201510960860 A CN 201510960860A CN 106897123 A CN106897123 A CN 106897123A
- Authority
- CN
- China
- Prior art keywords
- database
- target transaction
- cutting condition
- prediction
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 89
- 238000005520 cutting process Methods 0.000 claims abstract description 96
- 238000011022 operating instruction Methods 0.000 claims description 54
- 230000008569 process Effects 0.000 claims description 11
- 230000008859 change Effects 0.000 claims description 9
- 230000004048 modification Effects 0.000 claims description 7
- 238000012986 modification Methods 0.000 claims description 7
- 238000013499 data model Methods 0.000 claims description 5
- 238000004088 simulation Methods 0.000 claims description 5
- 238000003860 storage Methods 0.000 description 7
- 238000002360 preparation method Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013480 data collection Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 239000012141 concentrate Substances 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000005096 rolling process Methods 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 241000196324 Embryophyta Species 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24549—Run-time optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
- G06F9/528—Mutual exclusion algorithms by using speculative mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据库操作方法及装置。方法包括:根据用户指示执行目标事物的触发指令,获取由目标事务封装成的业务逻辑代码;根据业务逻辑代码对目标事务进行预测执行,并记录预测执行过程中获得的目标事务的切分条件和涉及的数据范围;当预测执行成功时,根据业务逻辑代码以及预测执行过程中获得的目标事务的切分条件和涉及的数据范围,控制切分条件指向的数据库实际执行目标事务。本申请可以提高事务执行效率并增大事务吞吐量。
Description
【技术领域】
本申请涉及数据库技术领域,尤其涉及一种数据库操作方法及装置。
【背景技术】
数据库事务(Database Transaction),是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。一个事务由一系列数据库操作指令构成,例如结构化查询语言(Structured Query Language,SQL)语句,这些数据库操作指令之间存在切分条件以及跳转等逻辑,意味着在一次执行过程中该事务中可能有部分数据库操作指令被跳过不执行。但在现有技术中,由于无法预先获知事务的切分条件或者跳转逻辑等信息,因此只能按照执行逻辑边执行边判断,依次执行事务中的语句,以实现对数据库的操作。这种事务执行方式效率较低,事务吞吐量较低。
【发明内容】
本申请的多个方面提供一种数据库操作方法及装置,用以提高事务执行效率并增大事务吞吐量。
本申请的一方面,提供一种数据库操作方法,包括:
根据用户指示执行目标事物的触发指令,获取由所述目标事务封装成的业务逻辑代码;
根据所述业务逻辑代码对所述目标事务进行预测执行,并记录所述预测执行过程中获得的所述目标事务的切分条件和涉及的数据范围;
当预测执行成功时,根据所述业务逻辑代码以及所述预测执行过程中获得的所述目标事务的切分条件和涉及的数据范围,控制所述切分条件指向的数据库实际执行所述目标事务。
本申请的另一方面,提供一种数据库操作装置,包括:
获取模块,用于根据用户指示执行目标事物的触发指令,获取所述目标事务封装成的业务逻辑代码;
预测执行模块,用于根据所述业务逻辑代码对所述目标事务进行预测执行,并记录所述预测执行过程中获得的所述目标事务的切分条件和涉及的数据范围;
控制执行模块,用于当预测执行成功时,根据所述业务逻辑代码以及所述预测执行过程中获得的所述目标事务的切分条件和涉及的数据范围,控制所述切分条件指向的数据库实际执行所述目标事务。
在本申请中,数据库操作装置根据用户的触发指令,获取由目标事务封装成的业务逻辑代码,根据业务逻辑代码对目标事务进行预测执行,并预测出目标事务的切分条件和涉及的数据范围,在预测执行成功时,根据业务逻辑代码和预测执行过程中获得的目标事务的切分条件和涉及的数据范围,控制切分条件指向的数据库实际执行该目标事务。其中,通过预测执行可以获得目标事务的切分条件,可以确定目标事务应该在哪个或哪些数据库上执行,即保证数据库消费的确定性,一方面可以预先确定目标事务是单机事务还是分布式事务,另一方面可以预先进行数据准备,有利于提高事务执行效率,进而增大事务吞吐量。
【附图说明】
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中数据库应用系统的部署图;
图2为本申请一实施例提供的数据库应用系统的部署图;
图3为本申请一实施例提供的数据库操作方法的流程示意图;
图4为本申请一实施例提供的数据库操作装置的结构示意图。
【具体实施方式】
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为现有技术中数据库应用系统的部署图。如图1所示,该系统包括:应用服务器10和数据库20。其中,应用服务器10可以为一个,也可以为多个。数据库20可以为一个,也可以为多个。图1中仅示例性的示出一个应用服务器10和一个数据库20。当需要以事务方式对数据库20进行访问时,应用服务器10执行事务逻辑,依次将事务中的数据库操作指令作用于数据库20上。这种事务执行方式的效率较低,事务吞吐量较低。
针对现有技术存在的缺陷,本申请提供一种新的数据库应用系统,如图2所示。该系统在应用服务器10和数据库20之间增加数据库操作装置30。数据库操作装置30用以执行本申请提供的数据库操作方法,实现一种新的事务执行逻辑,即基于目标事务封装成的业务逻辑代码,实现对目标事务的预测执行,再根据目标事务封装成的业务逻辑代码以及预测执行过程中获得的目标事务的切分条件和涉及的数据范围,控制数据库20实际执行目标事务。
其中,本申请通过预测执行可以获得目标事务的切分条件,可以确定目标事务应该在哪个或哪些数据库上执行,即保证数据库消费的确定性,一方面可以预先确定事务是单机还是分布式的,另一方面可以预先进行数据准备,因此有利于提高事务执行效率,进而增大事务吞吐量。另外,本申请将预测执行与业务逻辑代码相结合,业务逻辑代码中包含目标事务的执行逻辑,所以数据库不用担心共享数据集(即数据库内的数据)发生变化,只要确保目标事务的切分条件和涉及的数据范围没有发生变化,就可以保证事务能够串行且正确的执行,从而可以降低事务的回滚概率。其中,事务吞吐量是指单位时间内处理事务的数量。
值得说明的是,数据库操作装置30实际上是一种逻辑处理装置,其可以单独部署,位于应用服务器10和数据库20之间,也可以部署于应用服务器10一端实现,或者也可以部署于数据库20一端实现。
下面实施例将具体说明本申请技术方案的方法流程。
图3为本申请一实施例提供的数据库操作方法的流程示意图。如图3所示,该方法包括:
301、根据用户指示执行目标事务的触发指令,获取由该目标事务封装成的业务逻辑代码。
302、根据上述业务逻辑代码对目标事务进行预测执行,并记录预测执行过程中获得的目标事务的切分条件和涉及的数据范围。
303、当预测执行成功时,根据业务逻辑代码以及预测执行过程中获得的目标事务的切分条件和涉及的数据范围,控制切分条件指向的数据库实际执行目标事务。
首先说明,为便于描述,本实施例将用户需要执行的事务称为目标事务。目标事务主要包括用于对数据库进行操作的操作指令,除数据库操作指令之外还包括一些用于控制目标事务执行状态的控制指令,例如事务开始指令、事务提交指令、事务回滚指令等。这些指令实际上是由数据库语言编写的语句。根据数据库语言的不同,这些指令可以是不同语言编写的语句。举例说明,若采用SQL,则上述数据库操作指令和控制指令实际上是一系列的SQL语句。
在本实施例中,需要将目标事务封装成业务逻辑代码,该业务逻辑代码中封装有目标事务中的数据库操作指令以及数据库操作指令之间的跳转条件和逻辑等信息。这意味着在预测执行过程中和实际执行过程中,分别由数据库操作装置和数据库控制整个目标事务的执行逻辑。
其中,业务逻辑代码需要预先部署在数据库操作装置及各数据库上,并预先经过编译。在实际使用该业务逻辑代码时,只需提供该业务逻辑代码的名称且仅需提供一次即可,与不停传输数据库操作指令相比,有利于减轻网络流量,节约网络资源。可选的,若业务逻辑代码还需要输入参数,则除了提供业务逻辑代码的名称之外,还可以提供所需的输入参数。例如,用户可以通过触发指令,向数据库操作装置提供业务逻辑代码的名称,数据库操作装置根据该名称获取业务逻辑代码。
可选的,该业务逻辑代码可以是一存储过程(procedure),或者也可以是其他类型的实现方式。若该业务逻辑代码是一存储过程,则考虑到存储过程中的语句都是编译过的,所以执行速度更快,另外,在使用时,只需传输存储过程的名称和必要的入参,消耗的网络流量相对较少。
下面以减库存事务为例,则减库存事务的SQL代码如下,括号内的文字为注释:
begin transaction(开始事务)
select*from inventory where itemId=?for update(用商品id查看当前库存,并锁定)
if(item.inventory>0)
item.inventory--;
update inventory set item.inventory=$item.inventory where itemId=?
commit;
else
rollback;(如果当前库存大于0,则减少、更新商品库存并提交,否则回滚)
其中,可以将上述减库存事务封装成一个procedure,并把该procedure命名为buySth(long itemId),该procedure返回真/假(true/false)表示减库存事务是否成功。其中,该procedure的伪码如下:
procedure:
boolean buySth(long itemId){
Item item=executeQuery(“select*from inventory where itemId=?for update”);
if(item.inventory>0){
item.inventory--;
executeUpdate(update inventory set item.inventory=$item.inventorywhere itemId=?)
commit();
return true;
}else{
rollback();
return false;
}
由此可见,在上述减库存事务封装成的存储过程中,包括了减库存事务中的数据库操作指令,还包括一些存储过程自身的指令,同时也包括减库存事务的业务逻辑。
具体的,当用户需要执行目标事务时,可以发出触发指令,以指示执行目标事务;数据库操作装置根据用户的触发指令,获取由目标事务封装成的业务逻辑代码。可选的,该触发指令可以包括业务逻辑代码的名称,或者该触发指令与业务逻辑代码的名称存在映射关系,总之数据库操作装置可以根据该触发指令获取由目标事务封装成的业务逻辑代码。
在获取业务逻辑代码之后,数据库操作装置可以根据该业务逻辑代码对目标事务进行预测执行,并记录预测执行过程中获得目标事务的切分条件和涉及的数据范围。其中,目标事务的切分条件用于指示目标事务涉及到哪个或哪些数据库。例如,目标事务的切分条件可由分区键(PartitionKey)这一信息来表示,这意味着确定了目标事务预测执行过程中的PartitionKey列表相当于确定了目标事务的切分条件。目标事务涉及的数据范围用于指示目标事务具体涉及上述切分条件指向的数据库上的哪个或哪些数据。例如,目标事务涉及的数据可以由数据的主键(PrimaryKeys)这一信息来表示,这意味着确定了目标事务预测执行过程中的PrimaryKeys列表相当于确定了目标事务涉及的数据范围。
其中,数据库操作装置根据业务逻辑代码对目标事务进行预测执行的过程实际上是:运行业务逻辑代码中的指令,当该指令为封装在业务逻辑代码中的目标事务中的数据库操作指令时,对数据库操作指令进行预测执行,以实现对目标事务的预测执行。其中,数据库操作装置在对运行到的目标事务中的数据库操作指令进行预测执行的过程中,可以根据预测执行结果确定下一个需要执行的数据库操作指令。
其中,数据库操作指令对数据库的操作主要是访问数据库中的数据,因此可以模拟数据库操作指令的数据环境,基于所模拟的数据环境对数据库操作指令进行预测执行。基于此,一种对数据库操作指令进行预测执行的方式可以是:在本地创建的内存库中模拟数据库操作指令所需的数据环境,基于所模拟的数据环境对数据库操作指令进行预测执行。
进一步,一种在本地创建的内存库中模拟数据库操作指令的数据环境,基于所模拟的数据环境对数据库操作指令进行预测执行的实施方式包括:
将获取到的数据库操作指令拆分为一个读指令和一个写指令,将读指令运行于真正的数据库上,即在数据库中执行该读指令以获取读数据集(ReadSet),将读数据集存入本地内存库中,以模拟数据库操作指令所需的数据环境。然后,将写指令作用于内存库上,以实现对数据库操作指令的预测执行,即在内存库中执行写指令以修改读数据集,例如对读数据集中的有关数据进行更新或查询处理等。其中,执行写指令以修改读数据集可以产生结果数据集(affectRowInMemdb)。
在上述预测执行过程中,数据库操作装置每预测执行一条数据库操作指令,就在本地记录该数据库操作指令读取的读数据集中的PrimaryKeys和PartitionKey。可选的,数据库操作装置也可以记录主键对应的版本号信息等整个读数据集以及结果数据集,但不限于此。
其中,读数据集中的PrimaryKeys反映了该目标事务涉及的数据范围,而读数据集中的PartitionKey反映了目标事务涉及的数据分布在哪个或哪些数据库上,即可以作为目标事务的切分条件。
数据库操作装置继续运行业务逻辑代码,当运行到该业务逻辑代码中包含的目标事务中的事务提交指令(如上述commit())时,则可以返回真(true),意味着预测执行成功,反之,若运行到该业务逻辑代码中包含的目标事务中的事务回滚指令(如上述rollback())时,则可以返回假(false),意味着预测执行失败。
当预测执行成功时,数据库操作装置可以根据业务逻辑代码以及预测执行过程中获得的目标事务的切分条件和涉及的数据范围,控制预测执行过程中获取的目标事务的切分条件所指向的数据库实际执行目标事务。
在一具体实现方式中,数据库操作装置可以向数据库下发业务逻辑代码的名称,以指示数据库运行业务逻辑代码以实际执行目标事务,并接收数据库返回的实际执行过程中获得的目标事务的切分条件和涉及的数据范围;若实际执行过程中获得目标事务的切分条件和涉及的数据范围均与预测执行中获得的目标事务的切分条件和涉及的数据范围相同,向数据库下发事务提交指令,以供数据库提交目标事务;若实际执行过程中获得目标事务的切分条件和涉及的数据范围均与预测执行中获得的目标事务的切分条件和涉及的数据范围中至少一者不相同,向数据库下发事务回滚指令,以供数据库回滚目标事务。
在另一具体实现方式中,数据库操作装置可以向数据库下发业务逻辑代码的名称以及预测执行过程中获得的目标事务的切分条件和涉及的数据范围,以指示数据库运行业务逻辑代码以实际执行目标事务,并在实际执行过程中获得目标事务的切分条件和涉及的数据范围均与预测执行中获得的目标事务的切分条件和涉及的数据范围相同时,提交目标事务,或者在实际执行过程中获得目标事务的切分条件和涉及的数据范围均与预测执行中获得的目标事务的切分条件和涉及的数据范围中至少一者不相同时,回滚目标事务。
可选的,为了减少数据库操作装置与数据库之间的交互次数,节约网络资源,可以将业务逻辑代码的名称以及预测执行过程中获得的目标事务的切分条件和涉及的数据范围同时(一并)下发给数据库。
与单纯的procedure方案相比,本申请加入了预测执行过程,可以提前获得目标事务的切分条件和涉及的数据范围,可以确定目标事务应该在哪个或哪些数据库上执行。
一方面,基于预测出的目标事务的切分条件,可以预先确定目标事务是单机事务还是分布式事务,若确定目标事务为单机事务,则可以以单机事务处理逻辑控制数据库实际执行目标事务;若确定目标事务为分布式事务,则可以以分布式事务处理逻辑控制数据库实际执行目标事务。由于分布式事务的处理逻辑和单机事务的处理逻辑有所不同,单机事务的处理逻辑相对简单,例如不涉及读写加锁等问题,所以所消耗的资源也相对较少。基于此,本实施例通过识别目标事务是否为单机事务,在识别为单机事务时采用单机事务的处理逻辑进行处理,有利于提高处理效率,增大事务吞吐量,节约处理成本。
另一方面,基于预测出的目标事务的切分条件和涉及的数据范围,可以预先进行数据准备,例如从其他数据库或本地数据库的“下层磁盘存储”中提前加载所有跨节点数据,有利于提高事务执行效率,进而增大事务吞吐量。
另外,本申请提供一种单纯的预测执行方案,主要是指由应用服务器控制目标事务执行逻辑的预测执行方案。在该方案中,在应用服务器执行目标事务的过程中,依次获取应用服务器执行到的目标事务中的数据库操作指令;对数据库操作指令进行预测执行,将预测执行结果返回给应用服务器以供应用服务器确定下一个需要执行的数据库操作指令,并在本地记录数据库操作指令以及预测执行产生的预测执行数据;当获取到目标事务中的事务提交指令时,根据本地记录的数据库操作指令以及预测执行数据,控制应用服务器对应的数据库实际执行目标事务。其中,控制应用服务器对应的数据库实际执行目标事务的方式包括:向数据库下发本地记录的数据库操作指令,以指示数据库执行数据库操作指令,若实际执行结果与预测执行结果相同,提交所述目标事务;若实际执行结果与预测执行结果不相同,回滚目标事务。
其中,事务在预测执行过程中是并行的,但在数据库中实际执行时却是按照顺序串行执行的,因此两个对相同数据进行操作的事务,在预测执行阶段可能是正确的,但到了实际执行阶段,无论是哪个先执行,另一个会因为事务会因为数据发生变化导致预测执行结果与实际执行结果不同而发生回滚,回滚概率较高。
举例说明,假设有两个事务,事务1和事务2,两个事务均是读取key的值,并将其赋值给id;若id=0,则将id+1并作为key的新值。在预测执行过程中,由于并不修改数据库中的数值,所以两个事务均能读取到key=0并赋值给id,且由于id=0,故均能成功执行第二条语句,即将id+1并赋值给key,即两个事务的预测执行结果均为key=1。但在实际执行过程中,两个事务需要串行执行,假设先事务1,再事务2,则事务1能读取到id=0,并将id+1并赋值给key,此时key=1;当事务2执行时,读取key=1并赋值给id,此时id=1,再将id+1并赋值给key,此时key=2,将两个事务的实际执行结果与预测执行结果进行比较,可以发现事务2的两个结果不同,故事务2需要回滚。但实际上,若数据库能够看到事务2的业务逻辑,当id>0时就不用执行第二条语句,即不用执行将id+1并赋值给key的操作,此时获得的执行结果仍为key=1,这样事务2就不用回滚。
与单纯的预测执行方案相比,本申请加入了procedure方案,充分发挥procedure方案的优势,数据库在实际执行过程中能够看到并根据目标事务的业务逻辑进行执行,所以数据库不用担心共享数据集(即数据库内的数据)发生变化,只要确保目标事务的切分条件和涉及的数据范围没有发生变化,就可以保证事务能够串行且正确的执行,一定程度上可以解决单纯的预测执行方案中出现的回滚现象,有利于降低回滚概率,提高事务执行效率。
下面仍以上面减库存事务为例,详细说明本申请技术方案的工作流程。
减库存事务的SQL代码如前面所述,由该减库存事务封装成的procedure的伪代码也如前面所述。
在实际执行过程中,数据库操作装置(或者也可称为执行服务器)根据用户的触发指令,去获取上述procedure,然后运行该procedure。
首先,数据库操作装置在本地创建内存库;
当数据库操作装置运行到select*from inventory where itemId=?forupdate这条SQL语句时,将这条SQL语句直接在数据库中进行查找,并在本地内存库中记录下这次查询结果(即查询到的待处理数据,也就是当前库存量),同时记录该次查询涉及的PrimaryKeys和PartitionKey。
值得说明的是,由于该SQL语句是一条查询语句,所以对该语句进行拆分与否其结果都相同,为了简化操作可以不对查询语句进行拆分。
数据库操作装置判断查询结果是否大于0,若判断结果为是,则将当前库存量减少,并执行更新语句,即update inventory set item.inventory=$item.inventory where itemId=?;若判断结果为否,则执行回滚语句。
若数据库操作装置执行到rollback语句,则清空本地内存库。在这种情况下,因为事务并没有在数据库中执行,所以无需数据库执行回滚操作。
若数据库操作装置执行到更新语句,即update inventory setitem.inventory=?where itemId=?,则将这条SQL语句拆解为一个读数据库指令,即select*from inventory where itemId=?和一个写数据库指令,即update inventory set item.inventory=?where itemId=?;接着,将select*from inventory where itemId=?这个语句下发到数据库中,获得读数据集,将读数据集中的数据写入本地内存库中;再根据update inventory setitem.inventory=?where itemId=?这个语句在本地内存库中进行更新操作,以获得结果数据集,同时记录读结果集中的PrimaryKeys及其对应的版本号信息,并记录PartitionKey。
当数据库操作装置执行到commit指令后,返回真值,并将之前执行的这一切,在下层数据库中,带着事务全部执行一次(这次执行是真实执行)。
数据库操作装置执行完上述流程之后,会得到如下执行事务的模板:
调用的procedure:
boolean buySth(long itemId)
对应的参数:itemId=xxx
对应的PartitionKey的列表=xxx。
进一步,在上述执行procedure的过程中,还可以记录ReadSet中的PrimaryKeys及其对应的版本号信息,这有助于在下层数据库执行之前,提前从其他“下层数据库”和本地数据库的“下层磁盘存储”中提前按照记录的PrimaryKeys加载所有跨节点数据,这种提前加载跨节点数据的方式,可以批量的将慢速设备中的数据加载到内存中,对于顺序执行的procedure来说起到了至关重要的作用,能够极大的提升执行效率。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
图4为本申请一实施例提供的数据库操作装置的结构示意图。如图4所示,该装置包括:获取模块41、预测执行模块42和控制执行模块43。
获取模块41,用于根据用户指示执行目标事物的触发指令,获取目标事务封装成的业务逻辑代码。
预测执行模块42,用于根据获取模块41获取的业务逻辑代码对目标事务进行预测执行,并记录预测执行过程中获得的目标事务的切分条件和涉及的数据范围。
控制执行模块43,用于当预测执行模块42预测执行成功时,根据业务逻辑代码以及预测执行过程中获得的目标事务的切分条件和涉及的数据范围,控制切分条件指向的数据库实际执行目标事务。
在一可选实施方式中,上述预测执行模块42具体用于:
运行业务逻辑代码中的指令;
当指令为封装在业务逻辑代码中的目标事务中的数据库操作指令时,对数据库操作指令进行预测执行。
进一步,预测执行模块42在对运行到的数据库操作指令进行预测执行时,具体用于:
若数据库操作指令属于修改数据库类指令,在本地创建的内存库中模拟数据库操作指令的数据环境,基于模拟的数据环境对数据库操作指令进行预测执行;
若数据库操作指令不属于修改数据库类指令,在数据库中执行数据库操作指令,以对数据库操作指令进行预测执行。
更进一步,预测执行模块42在在本地创建的内存库中模拟数据库操作指令的数据环境,基于模拟的数据环境对数据库操作指令进行预测执行时,具体用于:
将数据库操作指令拆分为读指令和写指令;
在数据库中执行读指令以获取读数据集,将读数据集存入内存库中以模拟数据库操作指令的数据环境;
在内存库中执行写指令以修改读数据集。
在一可选实施方式中,控制执行模块43具体可用于:
向数据库下发业务逻辑代码的名称,以指示数据库运行业务逻辑代码以实际执行目标事务,并接收数据库返回的实际执行过程中获得的目标事务的切分条件和涉及的数据范围;
若实际执行过程中获得目标事务的切分条件和涉及的数据范围均与预测执行中获得的目标事务的切分条件和涉及的数据范围相同,向数据库下发事务提交指令,以供数据库提交目标事务;
若实际执行过程中获得目标事务的切分条件和涉及的数据范围均与预测执行中获得的目标事务的切分条件和涉及的数据范围中至少一者不相同,向数据库下发事务回滚指令,以供数据库回滚目标事务。
在另一可选实施方式中,控制执行模块43具体可用于:
向数据库下发业务逻辑代码的名称以及预测执行过程中获得的目标事务的切分条件和涉及的数据范围,以指示数据库运行业务逻辑代码以实际执行目标事务,并在实际执行过程中获得目标事务的切分条件和涉及的数据范围均与预测执行中获得的目标事务的切分条件和涉及的数据范围相同时,提交目标事务,或者在实际执行过程中获得目标事务的切分条件和涉及的数据范围均与预测执行中获得的目标事务的切分条件和涉及的数据范围中至少一者不相同时,回滚目标事务。
进一步,控制执行模块43具体可用于:
将业务逻辑代码的名称以及预测执行过程中获得的目标事务的切分条件和涉及的数据范围同时下发给数据库。
可选的,上述业务逻辑代码可以为一存储过程,但不限于此。该存储过程可以使用各类语言实现,例如可以是mysql或Java等语言来实现。
本实施例提供的数据库操作装置,实际上是一种逻辑处理装置,其可以单独部署,位于应用服务器和数据库之间,也可以部署于应用服务器一端实现,或者也可以部署于数据库一端实现。
本实施例提供的数据库操作装置,根据用户的触发指令,获取由目标事务封装成的业务逻辑代码,根据业务逻辑代码对目标事务进行预测执行,并预测出目标事务的切分条件和涉及的数据范围,在预测执行成功时,根据业务逻辑代码和预测执行过程中获得的目标事务的切分条件和涉及的数据范围,控制切分条件指向的数据库实际执行该目标事务。其中,通过预测执行可以获得目标事务的切分条件,可以确定目标事务应该在哪个或哪些数据库上执行,即保证数据库消费的确定性,一方面可以预先确定目标事务是单机事务还是分布式事务,另一方面可以预先进行数据准备,有利于提高事务执行效率,进而增大事务吞吐量。
另外,本实施例的数据库操作装置,实现了预测执行与procedure的结合,与单纯的预测执行方案相比,能够充分发挥procedure方案的优势,数据库在实际执行过程中能够看到并根据目标事务的业务逻辑进行执行,所以数据库不用担心共享数据集(即数据库内的数据)发生变化,只要确保目标事务的切分条件和涉及的数据范围没有发生变化,就可以保证事务能够串行且正确的执行,一定程度上可以解决单纯的预测执行方案中出现的回滚现象,有利于降低回滚概率,提高事务执行效率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (16)
1.一种数据库操作方法,其特征在于,包括:
根据用户指示执行目标事物的触发指令,获取由所述目标事务封装成的业务逻辑代码;
根据所述业务逻辑代码对所述目标事务进行预测执行,并记录所述预测执行过程中获得的所述目标事务的切分条件和涉及的数据范围;
当预测执行成功时,根据所述业务逻辑代码以及所述预测执行过程中获得的所述目标事务的切分条件和涉及的数据范围,控制所述切分条件指向的数据库实际执行所述目标事务。
2.根据权利要求1所述的方法,其特征在于,所述根据所述业务逻辑代码对所述目标事务进行预测执行,包括:
运行所述业务逻辑代码中的指令;
当所述指令为封装在所述业务逻辑代码中的所述目标事务中的数据库操作指令时,对所述数据库操作指令进行预测执行。
3.根据权利要求2所述的方法,其特征在于,所述对所述数据库操作指令进行预测执行,包括:
若所述数据库操作指令属于修改数据库类指令,在本地创建的内存库中模拟所述数据库操作指令的数据环境,基于所述模拟的数据环境对所述数据库操作指令进行预测执行;
若所述数据库操作指令不属于修改数据库类指令,在所述数据库中执行所述数据库操作指令,以对所述数据库操作指令进行预测执行。
4.根据权利要求3所述的方法,其特征在于,所述在本地创建的内存库中模拟所述数据库操作指令所需的数据环境,基于所述模拟的数据环境对所述数据库操作指令进行预测执行,包括:
将所述数据库操作指令拆分为读指令和写指令;
在所述数据库中执行所述读指令以获取读数据集,将所述读数据集存入所述内存库中以模拟所述数据库操作指令的数据环境;
在所述内存库中执行所述写指令以修改所述读数据集。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述根据所述业务逻辑代码以及所述预测执行过程中获得的所述目标事务的切分条件和涉及的数据范围,控制所述切分条件指向的数据库实际执行所述目标事务,包括:
向所述数据库下发所述业务逻辑代码的名称,以指示所述数据库运行所述业务逻辑代码以实际执行所述目标事务,并接收所述数据库返回的所述实际执行过程中获得的所述目标事务的切分条件和涉及的数据范围;
若所述实际执行过程中获得所述目标事务的切分条件和涉及的数据范围均与所述预测执行中获得的所述目标事务的切分条件和涉及的数据范围相同,向所述数据库下发所述事务提交指令,以供所述数据库提交所述目标事务;
若所述实际执行过程中获得所述目标事务的切分条件和涉及的数据范围均与所述预测执行中获得的所述目标事务的切分条件和涉及的数据范围中至少一者不相同,向所述数据库下发事务回滚指令,以供所述数据库回滚所述目标事务。
6.根据权利要求1-4任一项所述的方法,其特征在于,所述根据所述业务逻辑代码以及所述预测执行过程中获得的所述目标事务的切分条件和涉及的数据范围,控制所述切分条件指向的数据库实际执行所述目标事务,包括:
向所述数据库下发所述业务逻辑代码的名称以及所述预测执行过程中获得的所述目标事务的切分条件和涉及的数据范围,以指示所述数据库运行所述业务逻辑代码以实际执行所述目标事务,并在所述实际执行过程中获得所述目标事务的切分条件和涉及的数据范围均与所述预测执行中获得的所述目标事务的切分条件和涉及的数据范围相同时,提交所述目标事务,或者在所述实际执行过程中获得所述目标事务的切分条件和涉及的数据范围均与所述预测执行中获得的所述目标事务的切分条件和涉及的数据范围中至少一者不相同时,回滚所述目标事务。
7.根据权利要求6所述的方法,其特征在于,所述向所述数据库下发所述业务逻辑代码的名称以及所述预测执行过程中获得的所述目标事务的切分条件和涉及的数据范围,包括:
将所述业务逻辑代码的名称以及所述预测执行过程中获得的所述目标事务的切分条件和涉及的数据范围同时下发给所述数据库。
8.根据权利要求1-4任一项所述的方法,其特征在于,所述业务逻辑代码为一存储过程。
9.一种数据库操作装置,其特征在于,包括:
获取模块,用于根据用户指示执行目标事物的触发指令,获取所述目标事务封装成的业务逻辑代码;
预测执行模块,用于根据所述业务逻辑代码对所述目标事务进行预测执行,并记录所述预测执行过程中获得的所述目标事务的切分条件和涉及的数据范围;
控制执行模块,用于当预测执行成功时,根据所述业务逻辑代码以及所述预测执行过程中获得的所述目标事务的切分条件和涉及的数据范围,控制所述切分条件指向的数据库实际执行所述目标事务。
10.根据权利要求9所述的装置,其特征在于,所述预测执行模块具体用于:
运行所述业务逻辑代码中的指令;
当所述指令为封装在所述业务逻辑代码中的所述目标事务中的数据库操作指令时,对所述数据库操作指令进行预测执行。
11.根据权利要求10所述的装置,其特征在于,所述预测执行模块具体用于:
若所述数据库操作指令属于修改数据库类指令,在本地创建的内存库中模拟所述数据库操作指令的数据环境,基于所述模拟的数据环境对所述数据库操作指令进行预测执行;
若所述数据库操作指令不属于修改数据库类指令,在所述数据库中执行所述数据库操作指令,以对所述数据库操作指令进行预测执行。
12.根据权利要求11所述的装置,其特征在于,所述预测执行模块具体用于:
将所述数据库操作指令拆分为读指令和写指令;
在所述数据库中执行所述读指令以获取读数据集,将所述读数据集存入所述内存库中以模拟所述数据库操作指令的数据环境;
在所述内存库中执行所述写指令以修改所述读数据集。
13.根据权利要求9-12任一项所述的装置,其特征在于,所述控制执行模块具体用于:
向所述数据库下发所述业务逻辑代码的名称,以指示所述数据库运行所述业务逻辑代码以实际执行所述目标事务,并接收所述数据库返回的所述实际执行过程中获得的所述目标事务的切分条件和涉及的数据范围;
若所述实际执行过程中获得所述目标事务的切分条件和涉及的数据范围均与所述预测执行中获得的所述目标事务的切分条件和涉及的数据范围相同,向所述数据库下发所述事务提交指令,以供所述数据库提交所述目标事务;
若所述实际执行过程中获得所述目标事务的切分条件和涉及的数据范围均与所述预测执行中获得的所述目标事务的切分条件和涉及的数据范围中至少一者不相同,向所述数据库下发事务回滚指令,以供所述数据库回滚所述目标事务。
14.根据权利要求9-12任一项所述的装置,其特征在于,所述控制执行模块具体用于:
向所述数据库下发所述业务逻辑代码的名称以及所述预测执行过程中获得的所述目标事务的切分条件和涉及的数据范围,以指示所述数据库运行所述业务逻辑代码以实际执行所述目标事务,并在所述实际执行过程中获得所述目标事务的切分条件和涉及的数据范围均与所述预测执行中获得的所述目标事务的切分条件和涉及的数据范围相同时,提交所述目标事务,或者在所述实际执行过程中获得所述目标事务的切分条件和涉及的数据范围均与所述预测执行中获得的所述目标事务的切分条件和涉及的数据范围中至少一者不相同时,回滚所述目标事务。
15.根据权利要求14所述的装置,其特征在于,所述控制执行模块具体用于:
将所述业务逻辑代码的名称以及所述预测执行过程中获得的所述目标事务的切分条件和涉及的数据范围同时下发给所述数据库。
16.根据权利要求9-12任一项所述的装置,其特征在于,所述业务逻辑代码为一存储过程。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510960860.4A CN106897123B (zh) | 2015-12-21 | 2015-12-21 | 数据库操作方法及装置 |
JP2018532418A JP6937759B2 (ja) | 2015-12-21 | 2016-12-13 | データベース操作方法及び装置 |
EP16877621.9A EP3396542B1 (en) | 2015-12-21 | 2016-12-13 | Database operating method and device |
PCT/CN2016/109653 WO2017107810A1 (zh) | 2015-12-21 | 2016-12-13 | 数据库操作方法及装置 |
US16/013,812 US20180300146A1 (en) | 2015-12-21 | 2018-06-20 | Database operating method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510960860.4A CN106897123B (zh) | 2015-12-21 | 2015-12-21 | 数据库操作方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106897123A true CN106897123A (zh) | 2017-06-27 |
CN106897123B CN106897123B (zh) | 2021-07-16 |
Family
ID=59089152
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510960860.4A Active CN106897123B (zh) | 2015-12-21 | 2015-12-21 | 数据库操作方法及装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20180300146A1 (zh) |
EP (1) | EP3396542B1 (zh) |
JP (1) | JP6937759B2 (zh) |
CN (1) | CN106897123B (zh) |
WO (1) | WO2017107810A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109284331A (zh) * | 2018-08-16 | 2019-01-29 | 中国平安人寿保险股份有限公司 | 基于业务数据资源的制证信息获取方法、终端设备及介质 |
CN110019131A (zh) * | 2017-12-08 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 一种复盘业务的方法和装置 |
CN110515707A (zh) * | 2019-08-22 | 2019-11-29 | 上海交通大学 | 基于预先事务处理的确定性并发控制方法及系统 |
CN112380195A (zh) * | 2020-10-20 | 2021-02-19 | 国网电力科学研究院有限公司 | 一种基于事务时序有向图的sql交互数据预处理方法与装置 |
CN117827284A (zh) * | 2024-03-04 | 2024-04-05 | 芯来智融半导体科技(上海)有限公司 | 向量处理器访存指令处理方法、系统、设备及存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113297320B (zh) * | 2020-07-24 | 2024-05-14 | 阿里巴巴集团控股有限公司 | 分布式数据库系统及数据处理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101587447A (zh) * | 2008-05-23 | 2009-11-25 | 国际商业机器公司 | 支持事务存储的系统及基于预测的事务执行方法 |
CN102508834A (zh) * | 2011-09-22 | 2012-06-20 | 用友软件股份有限公司 | 基于消息的大型事务应用装置和方法 |
US20150149725A1 (en) * | 2013-11-25 | 2015-05-28 | Ashish Mathur | Multi-threaded system for performing atomic binary translations |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05233397A (ja) * | 1992-02-21 | 1993-09-10 | Toshiba Corp | 適用プログラム実行管理方法 |
US6816873B2 (en) * | 2001-05-15 | 2004-11-09 | International Business Machines Corporation | Method for managing distributed savepoints across multiple DBMS's within a distributed transaction |
CN102207883A (zh) * | 2011-06-01 | 2011-10-05 | 华中科技大学 | 异构分布式实时系统的事务调度方法 |
CN103810196B (zh) * | 2012-11-09 | 2017-09-22 | 阿里巴巴集团控股有限公司 | 基于业务模型进行数据库性能测试的方法 |
US20150277914A1 (en) * | 2014-03-27 | 2015-10-01 | John H. Kelm | Lock elision with binary translation based processors |
-
2015
- 2015-12-21 CN CN201510960860.4A patent/CN106897123B/zh active Active
-
2016
- 2016-12-13 EP EP16877621.9A patent/EP3396542B1/en active Active
- 2016-12-13 JP JP2018532418A patent/JP6937759B2/ja active Active
- 2016-12-13 WO PCT/CN2016/109653 patent/WO2017107810A1/zh active Application Filing
-
2018
- 2018-06-20 US US16/013,812 patent/US20180300146A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101587447A (zh) * | 2008-05-23 | 2009-11-25 | 国际商业机器公司 | 支持事务存储的系统及基于预测的事务执行方法 |
CN102508834A (zh) * | 2011-09-22 | 2012-06-20 | 用友软件股份有限公司 | 基于消息的大型事务应用装置和方法 |
US20150149725A1 (en) * | 2013-11-25 | 2015-05-28 | Ashish Mathur | Multi-threaded system for performing atomic binary translations |
Non-Patent Citations (1)
Title |
---|
ANDREW PAVLO等: "On Predictive Modeling for Optimizing Transaction Execution in Parallel OLTP Systems", 《CORNELL UNIVERSITY LIBRARY》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019131A (zh) * | 2017-12-08 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 一种复盘业务的方法和装置 |
CN109284331A (zh) * | 2018-08-16 | 2019-01-29 | 中国平安人寿保险股份有限公司 | 基于业务数据资源的制证信息获取方法、终端设备及介质 |
CN109284331B (zh) * | 2018-08-16 | 2024-04-02 | 中国平安人寿保险股份有限公司 | 基于业务数据资源的制证信息获取方法、终端设备及介质 |
CN110515707A (zh) * | 2019-08-22 | 2019-11-29 | 上海交通大学 | 基于预先事务处理的确定性并发控制方法及系统 |
CN110515707B (zh) * | 2019-08-22 | 2022-02-25 | 上海交通大学 | 基于预先事务处理的确定性并发控制方法及系统 |
CN112380195A (zh) * | 2020-10-20 | 2021-02-19 | 国网电力科学研究院有限公司 | 一种基于事务时序有向图的sql交互数据预处理方法与装置 |
CN112380195B (zh) * | 2020-10-20 | 2022-10-04 | 国网电力科学研究院有限公司 | 一种基于事务时序有向图的sql交互数据预处理方法与装置 |
CN117827284A (zh) * | 2024-03-04 | 2024-04-05 | 芯来智融半导体科技(上海)有限公司 | 向量处理器访存指令处理方法、系统、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3396542B1 (en) | 2023-09-13 |
JP2019503534A (ja) | 2019-02-07 |
EP3396542A4 (en) | 2019-06-19 |
US20180300146A1 (en) | 2018-10-18 |
CN106897123B (zh) | 2021-07-16 |
EP3396542A1 (en) | 2018-10-31 |
JP6937759B2 (ja) | 2021-09-22 |
WO2017107810A1 (zh) | 2017-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106897123A (zh) | 数据库操作方法及装置 | |
CN104915450B (zh) | 一种基于HBase的大数据存储与检索方法及系统 | |
CN110287097A (zh) | 批量测试方法、装置及计算机可读存储介质 | |
CN106503007A (zh) | 数据库操作方法及装置 | |
CN106897306B (zh) | 数据库操作方法及装置 | |
CN108037919A (zh) | 一种基于web的可视化大数据工作流配置方法及系统 | |
CN105787058B (zh) | 一种用户标签系统及基于用户标签系统的数据推送系统 | |
CN109445928A (zh) | 一种访问请求处理方法、装置、设备及可读存储介质 | |
EP2965492B1 (en) | Selection of data storage settings for an application | |
CN116910335A (zh) | 一种基于网页标签分析的数据采集方法及系统 | |
CN104662564A (zh) | 数据分析装置以及程序 | |
CN112970011B (zh) | 记录查询优化中的谱系 | |
CN106855858A (zh) | 数据库操作方法及装置 | |
CN103984554B (zh) | 软件设计文档的生成方法及装置 | |
CN109657803A (zh) | 机器学习模型的构建 | |
Mota et al. | A compact timed state space approach for the analysis of manufacturing systems: key algorithmic improvements | |
CN106503027A (zh) | 数据库操作方法及装置 | |
CN107577802A (zh) | 一种数据库管理方法及装置 | |
CN110348669A (zh) | 智能规则生成方法、装置、计算机设备及存储介质 | |
CN109976905A (zh) | 内存管理方法、装置和电子设备 | |
CN108256694A (zh) | 基于重复遗传算法的模糊时间序列预测系统、方法及装置 | |
CN111061853B (zh) | 一种快速获取faq模型训练语料的方法 | |
CN115169578A (zh) | 一种基于元宇宙数据标记的ai模型生产方法及系统 | |
CN110442555B (zh) | 一种选择性预留空间的减少碎片的方法及系统 | |
CN107025110A (zh) | 一种基于软件开发要素及其联系的时态建模方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |