CN110019468A - 一种数据库系统及数据库访问方法 - Google Patents
一种数据库系统及数据库访问方法 Download PDFInfo
- Publication number
- CN110019468A CN110019468A CN201711271123.9A CN201711271123A CN110019468A CN 110019468 A CN110019468 A CN 110019468A CN 201711271123 A CN201711271123 A CN 201711271123A CN 110019468 A CN110019468 A CN 110019468A
- Authority
- CN
- China
- Prior art keywords
- data
- affairs
- segment
- temperature
- data segment
- 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
Classifications
-
- 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/25—Integrating or interfacing systems involving database management systems
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据库系统及数据库访问方法,该数据库系统包括:SQL引擎,用于接收第一事务,第一事务包括相对应的第一数据;切换单元,用于确定第一数据段的热度;第一数据段为在执行第一事务时第一数据所落入的数据库数据段,第一数据段的热度为第一数据段历史上单位时间内取消的事务数占所有操作的事务数;并发控制选择单元,当第一数据段的热度大于第一阈值时,选择第一并发控制单元;第一并发控制单元,用于确定是否存在第二事务,当不存在第二事务时,执行第一事务;其中,第一事务所读取数据为第二事务所写入数据,第二事务写入数据的时间晚于第一事务读取数据的时间。
Description
技术领域
本发明涉及数据库技术领域,尤其是涉及一种数据库系统及数据库访问方法。
背景技术
数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库,是长期储存在计算机内、有组织的、可共享的数据集合。事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit),它是恢复和并发控制的基本单位,且具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性,为了保证数据库ACID的属性,在事务并发执行过程中,就需要通过并发控制机制来保证事务的正确执行。而并发控制主要就是用来解决多个事务同时操作同一数据时,怎样保证数据的一致性。
但是,在多个事务同时操作同一数据的情况下,会使得系统的冲突率变高,就会导致大量的事务取消(abort),而且这其中的一部分abort是没有必要的,所以会导致系统中有大量的错误被abort的事务,进而影响系统性能。
发明内容
本发明实施例提供了一种数据库系统及数据库访问方法,目的是解决事务并发冲突高的情况下,大量的事务会错误取消(abort),导致系统吞吐量下降,整体可执行事务的个数/秒(transaction per second,tps)下降的问题。
第一方面,本发明实施例提供了一种数据库系统,该数据库系统可以包括:结构化查询语言(structured query language,SQL)引擎、自适应模块和事务管理模块;其中,自适应模块包括切换单元和并发控制选择单元;事务管理模块包括第一并发控制单元;SQL引擎,用于接收第一事务,第一事务包括相对应的第一数据;切换单元,用于确定第一数据段的热度;第一数据段为在执行第一事务时第一数据所落入的数据库数据段,第一数据段的热度为第一数据段历史上单位时间内取消的事务数占所有操作的事务数;并发控制选择单元,当第一数据段的热度大于第一阈值时,选择第一并发控制单元;第一并发控制单元,用于确定是否存在第二事务,当不存在第二事务时,执行第一事务;其中,第一事务所读取数据为第二事务所写入数据,第二事务写入数据的时间晚于第一事务读取数据的时间。
本发明实施例提供了一种数据库系统,该数据库系统通过自适应模块中的切换单元对操作事务的数据的热度进行计算,并根据热度选择对应的并行控制单元,进而解决取消率高导致整体可执行事务的tps下降的问题,与此同时不影响低并发、低冲突的吞吐量。
在一个示例中,第一并发控制单元,还用于:当存在第二事务,且不存在第三事务时,执行第一事务,其中,第一事务所读取数据为第三事务所写入数据,第二事务写入数据的时间早于第一事务读取数据的时间。当存在与第一事务反顺序依赖的第二事务,且存在与第一事务顺序依赖的第三事务时,采用第一并行控制单元执行第一事务。相比现有技术能,进一步减少abort。
在一个示例中,第一并发控制单元,还用于:当存在第二事务和第三事务时,取消第一事务,其中,第一事务所读取数据为第三事务所写入数据,第二事务写入数据的时间早于第一事务读取数据的时间。当存在与第一事务反顺序依赖的第二事务,且存在与第一事务顺序依赖的第三事务时,采用第一并行控制单元取消第一事务。
在一个示例中,事务管理模块还包括第二并发控制单元;并发控制选择单元还用于,当第一数据段的热度大于第二阈值时,选择第二并发控制单元;第二并发控制单元,采用乐观并发控制方法执行第一事务;其中,第二阈值小于或等于第一阈值。
在一个示例中,第一事务还包括与第一事务对应的第二数据,第二数据段为在执行第一事务时第二数据所落入的数据库数据段,第一数据段与第二数据段不同;切换单元,具体用于:确定第二数据段的热度。当第一事务操作多个数据时,且该多个数据对应的数据段是相互独立的,可以通过多个数据段中的某一数据段的热度来选择对应的并发控制单元,操作第一事务。
在一个示例中,第一事务还包括与第一事务对应的第三数据,第三数据段为在执行第一事务时第三数据所落入的数据库数据段;切换单元,具体用于:确定第一数据段和第三数据段整体的热度。选择各种并发控制,也可通过多个数据段的整体热度来进行选择。
在一个示例中,切换单元,还用于:更新第一数据段的热度。切换单元在第一事务继续执行或abort之后,将第一事务的状态及操作的数据传入自适应模块,并将这些信息添加进对应的数据段结构中,为后续数据库系统操作第一事务,选择何种并发控制,提供第一事务的热度。
在一个示例中,数据系统还包括自定义数据集模块:自定义数据集模块,用于确定第一数据是否落入预设第一数据集。
在一个示例中,自定义数据集模块,还用于:当第一数据未落入预设第一数据集,且预设第一数据段的热度大于第一阈值时,确定第一数据是否落入预设第二数据集。
第二方面,本发明实施例提供了一种数据库系统,该数据库系统可以包括:SQL引擎、自定义数据集模块和事务管理模块;其中,事务管理模块包括第一并发控制单元;SQL引擎,用于接收第一事务,第一事务包括第一数据;自定义数据集模块,用于确定第一数据是否落入预设第一数据集;当第一数据落入预设的第一数据集时,第一并发控制单元,用于确定是否存在第二事务,当不存在第二事务时,执行第一事务;其中,第一事务所读取数据为第二事务所写入数据,第二事务写入数据的时间晚于第一事务读取数据的时间。
本发明实施例提供了一种数据库系统,该数据库系统通过在自定义数据集模块中自定义热数据或冷数据,以用户自定义的数据为选择各种并发控制的依据,进而解决取消率高导致整体可执行事务的tps下降的问题,与此同时不影响低并发、低冲突的吞吐量。
在一个示例中,第一并发控制单元,还用于:当第一数据落入预设的第一数据集,且存在第二事务,不存在第三事务时,执行第一事务,其中,第一事务所读取数据为第三事务所写入数据,第二事务写入数据的时间早于第一事务读取数据的时间。
在一个示例中,第一并发控制单元,还用于:当第一数据落入预设的第一数据集,且存在第二事务和第三事务时,取消第一事务,其中,第一事务所读取数据为第三事务所写入数据,第二事务写入数据的时间早于第一事务读取数据的时间。
在一个示例中,事务管理模块还包括:第二并发控制单元;
第二并发控制单元,用于当第一数据未落入预设的第一数据集,采用乐观并发控制方法执行第一事务;其中,第二阈值小于或等于第一阈值。
第三方面,本发明实施例提供了一种数据库访问方法,该数据库访问方法可以包括:接收第一事务,第一事务包括第一数据;确定第一数据段的热度;第一数据段为在执行第一事务时第一数据所落入的数据库数据段,第一数据段的热度为第一数据段历史上单位时间内取消的事务数占所有操作的事务数;当第一数据段的热度大于第一阈值,确定是否存在第二事务,当不存在第二事务时,执行第一事务;其中,第一事务所读取数据为第二事务所写入数据,第二事务写入数据的时间晚于第一事务读取数据的时间。
本发明实施例提供了一种数据库访问方法,该数据库方法通过第一数据段的热度,该第一数据段为在执行第一事务时第一数据所落入的数据库数据段,选择各种并发控制操作第一事务,进而解决取消率高导致整体可执行事务的tps下降的问题,与此同时不影响低并发、低冲突的吞吐量。
在一个示例中,数据库访问方法还包括:当第一数据段的热度大于第一阈值,且存在第二事务,不存在第三事务时,执行第一事务,其中,第一事务所读取数据为第三事务所写入数据,第二事务写入数据的时间早于第一事务读取数据的时间。当存在与第一事务反顺序依赖的第二事务,且存在与第一事务顺序依赖的第三事务时,执行第一事务。相比现有技术能,进一步减少abort。
在一个示例中,数据库访问方法还包括:当第一数据段的热度大于第一阈值,且存在第二事务和第三事务时,取消第一事务,其中,第一事务所读取数据为第三事务所写入数据,第二事务写入数据的时间早于第一事务读取数据的时间。
在一个示例中,数据库访问方法还包括:当第一数据段的热度大于第二阈值时,采用乐观并发控制方法执行第一事务;其中,第二阈值小于或等于第一阈值。
在一个示例中,第一事务还包括与第一事务对应的第二数据,第二数据段为在执行第一事务时第二数据所落入的数据库数据段,第一数据段与第二数据段不同;确定第一数据段的热度,包括:确定第二数据段的热度。当第一事务操作多个数据时,且该多个数据对应的数据段是相互独立的,可以通过多个数据段中的某一数据段的热度来选择对应的并发控制单元,操作第一事务。
在一个示例中,第一事务还包括与第一事务对应的第三数据,第三数据段为在执行第一事务时第三数据所落入的数据库数据段;确定第一数据段的热度,包括:确定第一数据段和第三数据段整体的热度。选择各种并发控制,也可通过多个数据段的整体热度来进行选择。
在一个示例中,数据库访问方法还包括:更新第一数据段的热度。在第一事务继续执行或abort之后,将第一事务的状态及操作的数据传入自适应模块,并将这些信息添加进对应的数据段结构中,为后续数据库系统操作第一事务,选择何种并发控制,提供第一事务的热度的数据支持。
在一个示例中,在确定第一数据段的热度之前,数据库访问方法还包括:确定第一数据是否落入预设第一数据集。
在一个示例中,数据库访问方法还包括:当第一数据未落入预设第一数据集,且预设第一数据段的热度大于第一阈值时,确定第一数据是否落入预设第二数据集。
第四方面,本发明实施例提供了一种数据库访问方法,该数据库访问方法可以包括:接收第一事务,第一事务包括第一数据;确定第一数据是否落入预设第一数据集;当第一数据落入预设的第一数据集时,确定是否存在第二事务,当不存在第二事务时,执行第一事务;其中,第一事务所读取数据为第二事务所写入数据,第二事务写入数据的时间晚于第一事务读取数据的时间。
本发明实施例提供了一种数据库访问方法,该数据库方法通过用户自定义数据来判别选择各种并发控制操作第一事务,进而解决取消率高导致整体可执行事务的tps下降的问题,与此同时不影响低并发、低冲突的吞吐量。
在一个示例中,数据库访问方法还包括:当第一数据落入预设的第一数据集,且存在第二事务,不存在第三事务时,执行第一事务,其中,第一事务所读取数据为第三事务所写入数据,第二事务写入数据的时间早于第一事务读取数据的时间。
在一个示例中,数据库访问方法还包括:当第一数据落入预设的第一数据集,且存在第二事务和第三事务时,取消第一事务,其中,第一事务所读取数据为第三事务所写入数据,第二事务写入数据的时间早于第一事务读取数据的时间。
在一个示例中,数据库访问方法还包括:当第一数据未落入预设的第一数据集时,采用乐观并发控制方法执行第一事务;其中,第二阈值小于或等于第一阈值。
第五方面,本发明实施例提供了一种存储程序的计算机可读存储介质,程序包括指令,指令用于上述数据库访问方法。
第五方面,本发明实施例提供了一种计算机程序,程序包括指令,指令用于上述数据库访问方法。
本发明实施例提供了一种数据库系统及数据库访问方法,该数据库系统在现有的基础上配置有自适应模块,该自适应模块根据事务冲突率的高低,选择对应的并行控制方法执行操作当前事务,进而解决取消率高导致整体可执行事务的tps下降的问题,与此同时不影响低并发、低冲突的吞吐量。
附图说明
图1为现有的事务顺序与数据关系示意图;
图2为现有技术的数据库系统的结构示意图;
图3为本发明实施例提供了一种数据库系统的示意图一;
图4为本发明实施例提供了自适应模块的结构示意图;
图5为本发明实施例提供了数据段更新图;
图6为本发明实施例提供了数据段拆分/合并的示意图;
图7为本发明实施例提供了一种数据库访问方法的流程图一;
图8为本发明实施例提供了灵活乐观并行控制方法的流程图;
图9为顺序依赖示意图;
图10为反顺序依赖示意图;
图11为本发明实施例提供了事务状态更新、数据段切换的流程图;
图12为本发明实施例提供了一种数据库系统的示意图二;
图13为本发明实施例提供了一种数据库访问方法的流程图二;
图14为本发明实施例提供了一种数据库系统的示意图三;
图15为本发明实施例提供了一种数据库访问方法的流程图三;
图16为本发明实施例提供了一种数据库系统的示意图四;
图17为本发明实施例提供了一种数据库访问方法的流程图四;
图18为本发明实施例提供了一种数据库系统的示意图五;
图19为本发明实施例提供了一种数据库访问方法的流程图五。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
图2为现有技术的数据库系统的结构示意图,如图2所示,该数据库系统包括结构化查询语言(structured query language,SQL)引擎210、事务管理模块220、存储引擎230、日志管理240、缓冲区250和恢复管理模块260。
SQL引擎210,用于解析执行增、删、改、查等操作对应的SQL语句,SQL语句的语法分析、语义分析等都是在SQL引擎210中完成,最后会生成执行计划。
事务管理模块210,用于在执行计划的过程中,判断不同事务的冲突、ACID属性保证。
存储引擎230,用于存储用户数据信息。
日志管理240、缓冲区250和恢复管理模块260主要负责操作的一致性、提升效率、宕机重启恢复等功能。
下面通过简单举例“创建订单,库存减2操作”来描述整个数据库操作流程。
用户A、B、C为对数据库发起增、删、改、查操作的主体。用户A、B、C分别发起一个生成新订单的请求,数据库在接到该请求后,判断库存是否大于0,当库存大于0时,在新订单表中插入一条记录,然后库存进行减2操作。具体包括如下步骤:
第一步骤:用户执行启动事务;
第二步骤:用户下发生成新订单(生成新订单对应判断仓库余量、插入新订单和库存减2三个操作,该三个操作对应的SQL语句需要在SQL引擎220中完成解析)。
第三步骤:获取仓库余量是否大于0;
第四步骤:当仓库余量大于0时,在订单表中插入新记录;
第五步骤:库存进行减2操作;
事务管理模块220,用于判断上述3个操作是否符合事务的ACID属性要求;当上述3个操作符合事务的ACID属性要求时,则提交事务;当上述3个操作不符合事务的ACID属性要求时,则回滚事务;存储引擎230中存储的数据永久有效。
本发明实施例,在现有的数据库系统的基础上,提供了一种数据库系统及数据库访问方法,该数据库系统配置有自适应模块,该自适应模块根据事务冲突率的高低,选择对应的并行控制方法执行操作当前事务,进而解决取消率高导致整体可执行事务的个数/秒(transaction per second,tps)下降的问题,与此同时不影响低并发、低冲突的吞吐量。
下面以图3、12、14、16、18为例说明本发明实施例提供的数据库系统。
图3为本发明实施例提供的一种数据库系统示意图。如图3所示,该数据库系统可包括:SQL引擎310、自适应模块320、事务管理模块330和存储引擎330。
图3与图2不同之处在于,本发明实施例提供的数据库系统中包括自适应模块320。该事务管理模块330可包括多个并发控制单元,例如,第一并发控制单元和第二并发控制单元。自适应模块320,用于根据统计、汇总操作的数据和事务状态等信息,进而选择第一并发控制单元或第二并发控制单元该事务。
在图4中,自适应模块可以包括切换单元410和并发控制选择单元420。自适应模块在接收到事务之后,例如第一事务该第一事务可包括第一数据,例如,数据a;并发控制选择单元410。切换单元410,用于确定第一数据段的热度;并发控制选择单元420,用于根据热度选择第一并发控制单元或第二并发控制单元操作第一事务;其中,数据库系统执行第一事务时,第一数据与数据库中对应的数据段为第一数据段;热度为历史上单位时间内第一数据段取消的事务数与所有操作的事务数之比。
在一个示例中,切换单元410可通过某一数据对应的数据段的冲突率来判断热度。第一事务还包括与第一事务对应的第二数据,第二数据段为在执行第一事务时第二数据所落入的数据库数据段,第一数据段与第二数据段不同;确定所述第一数据段的热度,包括:确定所述第二数据段的热度。
例如,根据第一事务操作的第二数据找到对应的第二数据段DataSeg[j],通过per=DataSeg[j].abort/(DataSeg[j].abort+DataSeg[j].commit)计算出冲突率,当per大于thresholdA时,选择第一并发控制单元操作第一事务,当per小于或等于thresholdA时,选择第二并发控制单元操作第一事务。
在一个示例中,切换单元410可通过各数据段的整体冲突率来判断热度。第一事务还包括与第一事务对应的第三数据,第三数据段为在执行第一事务时第三数据所落入的数据库数据段;数据段热度确定单元,具体用于:确定第一数据段和第三数据段整体的热度。
例如,在第一事务操作多个数据时,获取所述数据对应的多个DataSeg(数据段)[M](0<M),例如,第一数据段和第三数据段。计算所有数据段冲突率per=(DataSeg[j].abort+…+DataSeg[z].abort)/(DataSeg[j].abort+DataSeg[j].commit+…+DataSeg[z].abort+DataSeg[z].commit)。判断所有数据段DataSeg[j]…DataSeg[z]中取消的事务占所有事务(包括取消和执行的事务)的比值per即为当前事务操作的数据的热度,当所有数据段冲突率per大于thresholdA时,则选择第一并发控制单元操作第一事务;当per小于或等于thresholdA时,则选择第二并发控制单元操作第一事务。
其中,thresholdA表示用户配置的采用何种并发控制的阀值。当数据段(DataSeg[j])的热度大于第一阈值时,判断数据段(DataSeg[j])为热数据段,并发控制选择单元420,用于采用第一并发控制单元操作第一事务;否则,当数据段(DataSeg[j])的热度小于或等于第一阈值时,判断数据段(DataSeg[j])为冷数据段,并发控制选择单元420,用于采用第二并发控制单元操作第一事务。其中,如果有任何一个数据判定为处于热数据段,那么整个事务将选择第一并发控制单元操作该事务。
上述的冷热数据段的区分是相对的,可以根据数据段的热度做更细致的区分;热度为第一数据段历史上单位时间内取消的事务数占所有操作的事务数。比如数据段的热度大约60%的阈值认定为热数据段;相应地,并发控制选择模块可以采用多个并发控制策略。下文依然以冷热的概念描述本发明各实施例。但是,本领域的技术人员意识到,各实施例可以自然而然地扩展到不同热度下的不同并发控制策略。
在一个示例中,当第一数据段的热度大于第一阈值时,并发控制选择单元420,选择第一并发控制单元;该第一并发控制单元用于确定是否存在与第一事务反顺序依赖的第二事务,当存在与第一事务反顺序依赖的第二事务时,用于执行第一事务;反顺序依赖为第一事务所读取的数据为第二事务所写入的数据,第二事务写入数据的时间晚于第一事务读取数据的时间。
在一个实施例中,当第一数据段的热度大于第一阈值时,并发控制选择单元420,选择第一并发控制单元;该第一并发控制单元,用于当存在与第一事务反顺序依赖的第二事务时,不存在与第一事务顺序依赖的第三事务时,执行第一事务;第一事务所读取的数据为第三事务所写入的数据,第三事务写入数据的时间早于第一事务读取数据的时间。
在一个实施例中,当第一数据段的热度大于第一阈值,并发控制选择单元420,选择第一并发控制单元;该第一并发控制单元,用于当存在与第一事务反顺序依赖的第二事务时,存在与第一事务顺序依赖的第三事务时,取消abort第一事务;第一事务所读取数据为第三事务所写入数据,第二事务写入数据的时间早于第一事务读取数据的时间。
下文中,为了方便叙述,以第一事务操作的某一数据对应的某一数据段的热度为例进行说明。
在一个示例中,切换单元410,还用于根据事务结束状态及操作的数据,后台动态进行冷热数据的切换。例如,切换单元410,用于根据第一事务结束状态及操作的第一数据,后台动态进行冷热数据的切换。第一事务在执行(commit)/abort后,将第一事务的状态及操作数据传入自适应模块,并将这些信息添加进对应的数据段结构中。
具体地,第一事务状态更新是指将该事务状态及操作数据传入自适应模块,并将这些信息添加进对应数据段结构中,更新第一数据段的热度,为下一次根据第一数据段的热度选择并发控制做基础。下面通过数据段结构对第一事务状态更新进行详细描述。在此仅以数据段结构对第一事务状态更新进行描述,其他更新第一事务状态的方式不在此赘述。
如上所示,start,end标记该数据段的开始、结束位置,所有数据段都是唯一的且不重叠的,且所有数据段连接起来就是[“”,FF),表示整个数据区间。abort表示在当前数据段上取消的事务计数。commit表示在当前数据段上取消的事务计数。Conflict[N]存在于数据段DataSeg结构体中,用于记录冲突的事务信息,Conflict[N]是按key排序的。key表示事务冲突的key值。abort表示从key0->keyN范围内冲突的事务计数。commit表示从key0->keyN范围内成功的事务计数。如图5所示,最后将第一事务结束状态及操作的数据集返回给数据段结构中,实现对事务状态,以及第一数据段的热度的更新。
一个示例中,在事务状态更新之后,数据库系统还包括对数据段拆分/合并。如图6所示,数据库刚启动后,整个数据段都是冷数据段。随着事务并发的增多,会出现部分的热数据。自适应模块会将热数据段拆分成热数据段和冷数据段。在热数据段变成冷数据段后,会和相临的冷数据段进行合并。同时,热数据段也会与相邻的热数据段进行合并。
具体地,数据段拆分包括如下步骤:
第一步骤:循环所有的DataSeg[M],如果冲突率>thresholdB,则此DataSeg需要做拆分;
第二步骤:循环所有的DataSeg[i].Conflict[N],找出其中所有的DataSeg[i].Conflict[i]>thresholdB的Conflict,将DataSeg[i]拆分成多个冷、热DataSeg;
第三步骤:循环所有的DataSeg[M],响应于冲突率≤thresholdB,则暂不处理;
数据段合并包括如下步骤:
第一步骤:循环两个连续的DataSeg[i]和DataSeg[j],响应于两个冲突率都<thresholdB,则认为这3个DataSeg可以合并成一个;
第二步骤:将DataSeg[i].start,end,abort,commit数据与DataSeg[j]合并;
第三步骤:将DataSeg[i].Conflict[i]与数据与DataSeg[j].Conflict[]合并,其中3个Conflict数组各缩减50%;
第四步骤:循环两个连续的DataSeg[i]和DataSeg[j],响应于冲突率>thresholdB,则认为这3个DataSeg可以合并成一个;
第五:响应于两个连续的DataSeg[i]和DataSeg[j]冲突率一个大于thresholdB,一个小于等于thresholdB,则暂不处理。
在一个示例中,thresholdB是用户配置的DataSeg[i]在达到指定冲突率的时候,就可以拆分成多个DataSeg。基于上述数据段的拆分/合并及冷、热状态变更,进而做到该方法主要用于记录事务的状态与操作的数据段关系,进而动态切换整个数据库/某个数据段/某个键等采用不同的并发控制方法。
在一个示例中,数据段(DataSeg)指的是包括操作该数据段事务的取消数、执行(commit)数及冲突数据的详细信息。
需要说明的是,自适应模块320是一个后台模块,用于对外提供并发控制选择接口,接收外部传入事务信息更新内部状态,内部定时刷新数据区段冷、热信息。
在本发明实施例中,第一并发控制单元可用于实现乐观并发控制方法。第二乐观并发控制单元可用于实现灵活乐观并发控制方法,第二乐观并发控制单元基于第一乐观并发控制单元增加逻辑判断,避免事务被错误取消。第二并发控制单元是第一并发控制单元的灵活变换,仍旧采用第一并发控制单元的事务检测流程,不同点是:事务判断阶段通过采用更多的条件限定/模型计算等方法来决定该事务是否真的需要被取消,进而降低事物的错误取消,提高性能。为了方便叙述,将第一并发控制单元,简称为Flexible OCC,第二并发控制单元,简称OCC。
图7是本发明实施例提供的数据库访问方法流程图。如图7所示,该数据库访问方法可包括如下步骤:
S710:用户发起事务启动,例如,第一事务T1;
S720:完成第一事务内对第一数据(假设操作了数据a)的操作(增、删、改、查);
S730:第一事务进入到事务确认阶段时,根据第一事务操作的第一数据a由自适应模块判断选择OCC或Flexible OCC来操作第一事务;
其中,S730中的事务确认阶段,可包括如下步骤
第一步骤:循环第一事务操作的所有数据,判断是否有数据处于热区段;当数据不处于热数据段,则继续循环处理下一条数据;当数据处于热数据段,执行第二步骤;
第二步骤:确定该热数据段的冲突率是否超过用户设定的阀值,例如,第一阈值;当该热数据段的冲突率超过第一阈值时,则跳出循环,第一事务使用Flexible OCC方法;当没有超过第一阈值时,则转至第一步骤,开始处理下一条数据;
第三步骤:循环结束,第一事务操作的所有数据,都不处于热区段,则使用OCC方法。
需要说明的是,如果从自适应模块中获取该事务需要采用OCC,则需要进行OCC判别。
在一个示例中,第一事务还包括与第一事务对应的第二数据,第二数据段为在执行第一事务时第二数据所落入的数据库数据段,第一数据段与第二数据段不同;确定第一数据段的热度,包括:确定第二数据段的热度。
具体地,在第一事务操作的多个数据中,通过某一数据对应的数据段的冲突率来判断热度。由于,第一数据段与第二数据段是相互独立的数据段,可通过第一数据段或第二数据段的冲突率来判断热度。例如,根据第一事务操作的第一数据找到对应的第一数据段DataSeg[j],通过per=DataSeg[j].abort/(DataSeg[j].abort+DataSeg[j].commit)计算出冲突率,当per大于thresholdA时,选择Flexible OCC操作第一事务,当per小于或等于thresholdA时,选择OCC操作第一事务。
在一个示例中,可通过某一数据对应的数据段的冲突率来判断热度。第一事务还包括与第一事务对应的第二数据,第二数据段为在执行第一事务时第二数据所落入的数据库数据段,第一数据段与第二数据段不同;确定所述第一数据段的热度,包括:确定所述第二数据段的热度。
例如,根据第一事务操作的第二数据找到对应的第二数据段DataSeg[j],通过per=DataSeg[j].abort/(DataSeg[j].abort+DataSeg[j].commit)计算出冲突率,当per大于thresholdA时,选择第一并发控制单元操作第一事务,当per小于或等于thresholdA时,选择第二并发控制单元操作第一事务。
在一个示例中,可通过各数据段的整体冲突率来判断热度。第一事务还包括与第一事务对应的第三数据,第三数据段为在执行第一事务时第三数据所落入的数据库数据段;数据段热度确定单元,具体用于:确定第一数据段和第三数据段整体的热度。
例如,在第一事务操作多个数据时,获取所述数据对应的多个DataSeg(数据段)[M](0<M),例如,第一数据段和第三数据段。计算所有数据段冲突率per=(DataSeg[j].abort+…+DataSeg[z].abort)/(DataSeg[j].abort+DataSeg[j].commit+…+DataSeg[z].abort+DataSeg[z].commit)。判断所有数据段DataSeg[j]…DataSeg[z]中取消的事务占所有事务(包括取消和执行的事务)的比值per即为当前事务操作的数据的热度,当所有数据段冲突率per大于thresholdA时,则选择第一并发控制单元操作第一事务;当per小于或等于thresholdA时,则选择第二并发控制单元操作第一事务。
其中,thresholdA表示用户配置的采用何种并发控制的阀值。当数据段(DataSeg[j])的热度大于第一阈值时,判断数据段(DataSeg[j])为热数据段,并发控制选择单元310,用于采用第一并发控制单元操作第一事务;否则,当数据段(DataSeg[j])的热度小于或等于第一阈值时,判断数据段(DataSeg[j])为冷数据段,并发控制选择单元310,用于采用第二并发控制单元操作第一事务。其中,如果有任何一个数据判定为处于热数据段,那么整个事务将选择第一并发控制单元操作该事务。
上述的冷热数据段的区分是相对的,可以根据数据段的热度做更细致的区分;热度为第一数据段历史上单位时间内取消的事务数占所有操作的事务数。比如数据段的热度大约60%的阈值认定为热数据段;相应地,并发控制选择模块可以采用多个并发控制策略。下文依然以冷热的概念描述本发明各实施例。但是,本领域的技术人员意识到,各实施例可以自然而然地扩展到不同热度下的不同并发控制策略。
在图8中,Flexible OCC方法可包括以下步骤:
S810:判断是否存在与第一事务反顺序依赖的第二事务;当存在时,执行S820,当不存在时,执行S840。
S820:判断是否存在与第一事务顺序依赖的第三事务;当存在时,执行S830,当不存在时,执行S840。
S830:abort第一事务。
S840:继续执行第一事务。
其中,反顺序依赖为第一事务所读取的数据为第二事务所写入的数据,第二事务写入数据的时间晚于第一事务读取数据的时间。
OCC方法可以包括以下步骤:判断是否存在与第一事务顺序依赖的第三事务;当存在时,abort执行第一事务;当不存在时,执行第一事务。
有上述可知,Flexible OCC是OCC灵活变换,它仍旧采用OCC的事务检测流程,不同点是:事务判断阶段通过采用更多的条件限定/模型计算等(这里增加的资源消耗需要控制在一定范围内)方法来决定该事务是否真的需要被abort,进而降低事物的错误abort,提高性能。
其中,在S810中涉及第一事务顺序依赖第二事务,该步骤包括对第一事务操作的数据进行wr或ww或rw,wr表示第一事务读取的数据是之前其他事务已经写入的数据;ww表示第一事务操作的数据是之前其他事务写入的数据;rw表示第一事务操作的数据是之前其他事务读取的数据。
下面将结合图9和图10对图8中顺序依赖和反顺序依赖进行详细描述。
图9是顺序依赖示意图。如图9所示,顺序依赖(read-after-write)指的是事务1写了A,事务2读A写B,事务3读B写C,则认为事务2依赖事务1,事务3依赖事务2。
图10是反顺序依赖示意图。反顺序依赖(write-after-read)指的是事务1先写了B,事务2读取了B,事务3又写了B,则事务2反顺序依赖事务3,如同在图1中事务T1反顺序依赖事务T2。
S740:在事务确认阶段判定通过,则提交第一事务,否则,abort事务,最后将第一事务结束的状态以及操作的数据返回至自适应模块。
具体地,事务状态更新是指将该事务状态及操作数据传入自适应模块,并将这些信息添加进对应数据段结构中,更新第一数据段的热度。下面通过数据段结构对第一事务状态更新进行详细描述。
DataSeg[]ds;//包含整个数据库的所有数据段,每个数据段反应冲突率
struct DataSeg{//表示当前数据段信息
start,//表示当前数据段start位置
end,//表示当前数据段end位置
abort,//表示当前数据段abort的事务计数
commit,//表示当前数据段commit的事务计数
Conflict[N],//其中N是一个常量
struct Conflict{//存在于DataSeg结构体中,用于记录冲突的事务信息,Conflict[N]是按key排序的
key,//事务冲突的key值
abort,//keyI->keyJ范围内冲突的事务计数
commit,//keyI->keyJ范围内冲突的事务计数
}
如上所示,start,end标记该数据段的开始、结束位置,所有数据段都是唯一的且不重叠的,且所有数据段连接起来就是[“”,FF),表示整个数据区间。abort表示在当前数据段上取消的事务计数。commit表示在当前数据段上取消的事务计数。Conflict[N]存在于数据段DataSeg结构体中,用于记录冲突的事务信息,Conflict[N]是按key排序的。key表示事务冲突的key值。abort表示从key0->keyN范围内冲突的事务计数。commit表示从key0->keyN范围内成功的事务计数。如图5所示,最后将事务结束状态及操作的数据集返回给数据段结构中,实现对事务状态,以及第一数据段的热度的更新。
此外,事务状态更新之后还包括对数据段拆分/合并。图6是本发明实施例提供的数据段拆分/合并示意图。如图6所示,数据库刚启动后,整个数据段都是冷数据段。随着事务并发的增多,会出现部分的热数据。在示例中,数据段热度确定模块会将热数据段拆分成热数据段和冷数据段。在热数据段变成冷数据段后,会和相临的冷数据段进行合并。同时,在热数据也会和相临的热数据段进行合并。
下面将对图11中的数据段的拆分/合并S1142详细描述。附图11中S1110、S1120以及S1130可参照附图7中的S710、S720以及S730的描述,S1141部分的内容可参照附图5的描述,在此不再赘述。
数据段拆分包括如下步骤:
第一步骤:循环所有的DataSeg[M],如果冲突率>thresholdB,则此DataSeg需要做拆分;
第二步骤:循环所有的DataSeg[i].Conflict[N],找出其中所有的DataSeg[i].Conflict[i]>thresholdB的Conflict,将DataSeg[i]拆分成多个冷、热DataSeg;
第三步骤:循环所有的DataSeg[M],响应于冲突率≤thresholdB,则暂不处理;
数据段合并包括如下步骤:
第一步骤:循环两个连续的DataSeg[i]和DataSeg[j],响应于两个冲突率都<thresholdB,则认为这2个DataSeg可以合并成一个;
第二步骤:将DataSeg[i].start,end,abort,commit数据与DataSeg[j]合并;
第三步骤:将DataSeg[i].Conflict[i]与数据与DataSeg[j].Conflict[]合并,其中2个Conflict数组各缩减50%;
第四步骤:循环两个连续的DataSeg[i]和DataSeg[j],响应于冲突率>thresholdB,则认为这2个DataSeg可以合并成一个;
第五步骤:响应于两个连续的DataSeg[i]和DataSeg[j]冲突率一个大于thresholdB,一个小于等于thresholdB,则暂不处理。
在一个示例中,thresholdB是用户配置的DataSeg[i]在达到指定冲突率的时候,就可以拆分成多个DataSeg。基于上述数据段的拆分/合并及冷、热状态变更,进而做到该方法主要用于记录事务的状态与操作的数据段关系,进而动态切换整个数据库/某个数据段/某个键等采用不同的并发控制方法。在一个示例中,数据段(DataSeg)指的是包括操作该数据段事务的取消数、执行(commit)数及冲突数据的详细信息。
本发明实施例中,改进乐观并发控制方法OCC,提出灵活乐观并发控制方法Flexible OCC,解决乐观并发控制方法在并发高、数据热点集中时,导致系统错误取消高,整体可执行事务的个数/秒(transaction per second,tps)下降的问题。图12为本发明实施例提供了一种数据库系统的结构示意图二。该数据库系统可根据业务的部署需要,将数据库系统的进程启动命令配置进行配置,例如:
--disable-adaptive-module=true--concurrent-control=FOCC;
通过上述配置,使得自适应模块,只采用Flexible OCC 1232进行事务的冲突检测判断。如图12所示,即:关闭路径(1),只使用路径(2)作为事务冲突检测,相当于当前数据库系统只使用Flexible OCC 1232做并发控制。
--disable-adaptive-module=true--concurrent-control=OCC;
通过上述配置,使得自适应模块关闭,只采用OCC 1231进行事务的冲突检测判断。如图12所示,即:关闭路径(1),只使用路径(3)作为事务冲突检测,相当于当前数据库系统只使用OCC 1231做并发控制。
下面将结合图13对图12所示的数据库系统进行详细描述。
图13为本发明实施例提供了一种数据库访问方法的流程图二。如图13所示,包括如下步骤:
第一步骤:用户发起事务启动;
第二步骤:执行SQL语句,完成数据前期读取、更改、写入操作;
第三步骤:事务进入到确认阶段时,根据事务操作的数据集从自适应模块获取对应的冲突率;
第四步骤:根据获取到的冲突率,再根据用户设定的阀值thresholdA(超过该阀值使用灵活乐观并发控制方法,否则使用乐观并发控制方法),判断该事务是采用灵活乐观并发控制方法还是乐观并发控制方法。
其中,在事务进入确认阶段时,可包括如下步骤:
S1310:循环事务的所有数据段;
S1320:判断数据段的热度是否大于thresholdA;当大于thresholdA时,则执行S1340;当不大于thresholdA时,转至S1310继续处理下一条数据;
S1330:循环结束,所有数据都没有判定为热数据,则使用OCC方法;
S1340:跳出循环,整个事务使用Flexible OCC方法。
本发明实施例,根据数据热点做成自适应,事务检测更灵活。自适应内部逻辑可以动态变换。采用多种乐观并发控制方法,避免单一方法导致的性能下降。
图14为本发明实施例提供了一种数据库系统的结构示意图三数据库系统还可以通过用户自定义数据集,该自定义数据集可由用户预先设置,该自定义数据集可为热数据集,或冷数据集。图14与附图3不同在于,图14中的数据库系统还包括自定义数据集模块1450,自适应模块1420可支持用户自定义进行预配置,实现用户指定热数据集合冷数据集。
在附图14中,自适应模块1420和用户自定义的数据集都可用于,选择OCC 1431或Flexible OCC 1432操作第一事务。例如,采用如下配置:
--adaptive=1--user_data_filter=1//即使用自适应,也使用用户自定义数据集。
自适应模块1420,通过上述预配置,使得数据库系统在选择并发控制方法的时候,还需要根据用户自定义的数据集作参考。
具体地,在第一事务操作的数据进入自适应模块1420之前,判断是否有用户自定义热点数据集;如果有用户自定义热点数据集,判断第一事务操作的数据是否为用户自定义数据集中的热点数据,反之,将第一事务操作的数据转自适应模块1420进行检测;如果第一事务操作的数据是用户自定义数据集中的热点数据,则采用Flexible OCC 1432操作第一事务,反之,将第一事务操作的数据转自适应模块1420进行检测;将第一事务操作的数据转自适应模块1420进行检测,判断第一事务操作的数据是否为热点数据集中的数据,如果第一事务操作的数据为热点数据集中的数据,判断该热点数据集的热度是否大于第一阈值,如果热度大于第一阈值,判断是否为用户自定义冷数据,反之,将第一事务操作的数据转自适应模块1420进行检测;如果不是用户自定义冷数据,采用Flexible OCC1432操作第一事务,反之,将第一事务操作的数据转自适应模块1420进行检测;如果热度小于或等于第一阈值时,则将第一事务操作的数据转自适应模块1420进行检测,循环判断第一事务操作所有的数据是否都为热点数据集中的数据,如果第一事务操作的所有数据都不是数据库中热点数据集中的数据,则采用OCC 1431操作第一事务。
自适应模块1420,可通过配置如下文件实现用户指定热数据集和冷数据集,在并发控制选择时以这个自定义数据集为参考。
data.filter
data.filter表示用户自定义数据集
##格式
##type,database,tablename,columname,columntype,startkey,endkey
##type表示是否热数据,0:热点,1:非热点;database表示数据库名;tablename表示表名;columname表示列名;columntype表示列类型,确定数据范围;startkey表示开始键;endkey表示结束键;
0,db1,stock,s_quantity,int##比如:应对仓库-1操作时的表数据列,只要碰到这个key前缀,那么就认为是热数据;db1表示数据库名;stock表示表名;s_quantity表示列名;
1,db1,warehouse,item,id##此条数据排除在热数据外;db1表示数据库名;warehouse表示表名;item表示列名。
接下来,结合图15来描述图14中数据库系统的工作过程。图15为本发明实施例提供了种数据库访问方法流程图三。图14和图12不同的地方仅在于自适应模块进行数据段热度判断之前先对事务操作的数据根据自定义数据集进行判断。其中,数据段热度判断有关的内容请参考图12。如图15所示,包括如下步骤:
S1510:在事务操作的数据进入自适应模块前,判断是否有用户自定义的数据集,例如,判断是否有用户自定义的热数据集;当有用户自定义的热数据集时,则执行S1520;当没有用户自定义的热数据时,则执行S1530;
S1520:当有用户自定义的热数据集,先使用用户定义的热数据集进行判断,判断事务操作的数据是否为自定义热数据;当操作的数据是自定义热数据时,则执行S1570;当操作的数据不是自定义热数据时,则执行S1530;
S1530:当事务操作的数据不是用户定义热数据,转自适应模块再检测;
S1540:判断事务操作的数据,该数据对应的数据段的热度是否超过阈值A;当数据段的热度超过阈值A时,则执行S1560;当数据段的热度没有超过阈值A时,转至S1530;
S1550:采用OCC操作事务;
S1560:判断事务操作的数据是否为用户自定义冷数据;当该数据不是用户自定义冷数据时,则执行S1530;当该数据是用户自定义冷数据时,则执行S1570;
S1570:用Flexible OCC操作事务。
图16为本发明实施例提供了一种数据库系统的结构示意图四。如图16所示,该数据库系统只按照用户自定义的数据集。图16与图14不同在于,图16中没有设置自适应模块,而是通过自定义数据集模块1620,判别选择OCC 1631或Flexible OCC 1632操作第一事务。例如,采用如下配置设置自定义数据集模块1620:。
--adaptive=0--user_data_filter=1//只使用用户自定义数据集。
具体地,判断是否有用户自定义热点数据集,如果有用户自定义热点数据集,循环第一事务操作的所有数据,反之,采用OCC 1631操作第一事务;如果第一事务操作的数据为用户自定义热点数据,则采用Flexible OCC 1632操作第一事务;如果第一事务操作的所有的数据都不是用户自定义数据,则采用OCC 1631操作第一事务。
下面将结合图17对图16所示的多阈值的数据库系统对应的流程进行详细描述。
图17为了本发明实施例提供了数据库访问的流程图四。如图17所示,包括如下步骤:
S1710:判断是否配置了用户自定义热数据集;
当用户只配置了用户自定义数据集时,转S1720;
S1720:在事务确认判断阶段,循环事务操作的所有数据;
S1730:判断该数据是否为用户自定义的热数据?当该数据是用户自定义的热数据时,转S1740;当该数据不是用户自定义的热数据时,转S1720循环下一条数据;
S1740:采用灵活乐观并发控制方法进行事务判定,完成后转S1760;
S1750:采用乐观并发控制方法进行事务判定,完成后转S1760;
S1760:事务结束。
最后,本发明实施例提供一种数据库访问方法及数据库系统中同时存在、运行两种/多种并发控制,并且可以做到允许系统中同时存在N种并发控制方法,用户通过阀值控制方法选择哪种并发控制进行事务ACID判定,避免因为局部热数据,导致整个系统采用单一并发控制导致额外开销变多(比如:可以做到没有操作热点数据的事务仍旧采用乐观并发控制方法)。
图18为本发明实施例提供了一种数据库系统的结构示意图五。图18与附图3相比,事务管理模块1830包括多个并发控制单元。在示例中,事务管理模块1830包括多种并发控制单元,例如OCC、并发控制(A)和并发控制(B)。本发明实施例中自适应模块1520适用于事务管理模块1830包括多种并发控制单元。
在示例中,通过用户配置多个阀值区间对应不同的乐观并发控制,阈值1用于乐观并发控制单元,阈值2用于并发控制单元(A),阈值3用于并发控制单元(B)。在示例中,根据配置多个阀值区间同时运行N个并发控制的实现方式。
用户可以配置自适应模块1820检测阀值,控制什么情况下使用哪种并发控制,自适应模块1820内部逻辑可以动态变换,根据数据热点做成自适应,事务检测更灵活。自适应阀值(数据段拆分/合并控制参数)也可以用户自定义,做到用户自定义。灵活乐观并发控制单元在判定热数据时,不会导致大量的错误取消。
下面将结合图19对图18所示的数据库系统进行详细描述。
图19为本发明实施例提供了数据库访问方法的流程图五。下面以并发控制N、并发控制M和并发控制P为例,如图19所示,在自适应模块进行并发控制方法选择时,根据当前的冲突率进行判断,可以包括如下步骤:
S1910:冲突率确定模块判断冲突率是否大于阈值N?并发控制选择模块响应于冲突率大于阈值N,使用并发控制方法N;并发控制选择模块响应于冲突率不大于阈值N,转S1920;
S1920:冲突率确定模块判断冲突率是否大于阈值M?并发控制选择模块响应于冲突率大于阈值M,使用并发控制方法M;并发控制选择模块响应于冲突率不大于阈值M,转S1930;
S1930:冲突率确定模块判断冲突率是否大于阈值P?并发控制选择模块响应于冲突率大于阈值P,使用并发控制方法P;并发控制选择模块响应于冲突率不大于阈值P,采用乐观并发控制方法。
本发明实施例提供的数据库系统及数据库访问方法,对事务管理模块提出改进,解决事务在并发运行,遇到冲突高时动态采用多种乐观并发控制算法,来保证事务正确性的同时,避免单一方法导致的性能下降,提高整个系统的吞吐量。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的可以用硬件、处理器模块执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上该仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (28)
1.一种数据库系统,其特征在于,包括:结构化查询语言SQL引擎、自适应模块和事务管理模块;其中,所述自适应模块包括切换单元和并发控制选择单元;所述事务管理模块包括第一并发控制单元;
所述SQL引擎,用于接收第一事务,所述第一事务包括相对应的第一数据;
所述切换单元,用于确定所述第一数据段的热度;所述第一数据段为在执行第一事务时第一数据所落入的数据库数据段,所述第一数据段的热度为第一数据段历史上单位时间内取消的事务数占所有操作的事务数;
所述并发控制选择单元,当第一数据段的热度大于第一阈值时,选择第一并发控制单元;所述第一并发控制单元,用于确定是否存在第二事务,当不存在第二事务时,执行所述第一事务;其中,所述第一事务所读取数据为所述第二事务所写入数据,所述第二事务写入所述数据的时间晚于所述第一事务读取所述数据的时间。
2.根据权利要求1所述的系统,其特征在于,所述第一并发控制单元,还用于:
当存在所述第二事务,且不存在第三事务时,执行所述第一事务,其中,所述第一事务所读取数据为所述第三事务所写入数据,所述第二事务写入所述数据的时间早于所述第一事务读取所述数据的时间。
3.根据权利要求1所述的系统,其特征在于,所述第一并发控制单元,还用于:
当存在所述第二事务和第三事务时,取消所述第一事务,其中,所述第一事务所读取数据为所述第三事务所写入数据,所述第二事务写入所述数据的时间早于所述第一事务读取所述数据的时间。
4.根据权利要求1所述的系统,其特征在于,所述事务管理模块还包括第二并发控制单元;
所述并发控制选择单元还用于,当所述第一数据段的热度大于所述第二阈值时,选择第二并发控制单元;所述第二并发控制单元,采用乐观并发控制方法执行第一事务;其中,所述第二阈值小于或等于所述第一阈值。
5.根据权利要求1所述的系统,其特征在于,所述第一事务还包括与第一事务对应的第二数据,第二数据段为在执行第一事务时第二数据所落入的数据库数据段,所述第一数据段与所述第二数据段不同;
所述切换单元,具体用于:确定所述第二数据段的热度。
6.根据权利要求1所述的系统,其特征在于,所述第一事务还包括与所述第一事务对应的第三数据,第三数据段为在执行第一事务时第三数据所落入的数据库数据段;
所述切换单元,具体用于:确定所述第一数据段和所述第三数据段整体的热度。
7.根据权利要求1-6任一项所述的系统,其特征在于,切换单元,还用于:
更新所述第一数据段的热度。
8.根据权利要求1所述的系统,其特征在于,所述系统还包括自定义数据集模块:所述自定义数据集模块,用于确定所述第一数据是否落入预设第一数据集。
9.根据权利要求8所述的系统,其特征在于,所述自定义数据集模块,还用于:
当所述第一数据未落入所述预设第一数据集,且所述预设第一数据段的热度大于所述第一阈值时,确定所述第一数据是否落入预设第二数据集。
10.一种数据库系统,其特征在于,包括:SQL引擎、自定义数据集模块和事务管理模块;其中,所述事务管理模块包括第一并发控制单元;
SQL引擎,用于接收第一事务,所述第一事务包括第一数据;
所述自定义数据集模块,用于确定所述第一数据是否落入预设第一数据集;
当所述第一数据落入所述预设的第一数据集时,所述第一并发控制单元,用于确定是否存在第二事务,当不存在第二事务时,执行所述第一事务;其中,所述第一事务所读取数据为所述第二事务所写入数据,所述第二事务写入所述数据的时间晚于所述第一事务读取所述数据的时间。
11.根据权利要求10所述的系统,其特征在于,所述第一并发控制单元,还用于:
当所述第一数据落入所述预设的第一数据集,且存在所述第二事务,不存在第三事务时,执行所述第一事务,其中,所述第一事务所读取数据为所述第三事务所写入数据,所述第二事务写入所述数据的时间早于所述第一事务读取所述数据的时间。
12.根据权利要求10所述的系统,其特征在于,所述第一并发控制单元,还用于:
当所述第一数据落入所述预设的第一数据集,且存在所述第二事务和第三事务时,取消所述第一事务,其中,所述第一事务所读取数据为所述第三事务所写入数据,所述第二事务写入所述数据的时间早于所述第一事务读取所述数据的时间。
13.根据权利要求10所述的系统,其特征在于,所述事务管理模块还包括:第二并发控制单元;
所述第二并发控制单元,用于当所述第一数据未落入所述预设的第一数据集,采用乐观并发控制方法执行第一事务;其中,所述第二阈值小于或等于所述第一阈值。
14.一种数据库访问方法,其特征在于,包括:
接收第一事务,所述第一事务包括第一数据;
确定所述第一数据段的热度;所述第一数据段为在执行第一事务时第一数据所落入的数据库数据段,所述第一数据段的热度为第一数据段历史上单位时间内取消的事务数占所有操作的事务数;
当第一数据段的热度大于第一阈值,确定是否存在第二事务,当不存在第二事务时,执行所述第一事务;其中,所述第一事务所读取数据为所述第二事务所写入数据,所述第二事务写入所述数据的时间晚于所述第一事务读取所述数据的时间。
15.根据权利要求14所述的方法,其特征在于,所述方法还包括:
当第一数据段的热度大于第一阈值,且存在所述第二事务,不存在第三事务时,执行所述第一事务,其中,所述第一事务所读取数据为所述第三事务所写入数据,所述第二事务写入所述数据的时间早于所述第一事务读取所述数据的时间。
16.根据权利要求14所述的方法,其特征在于,所述方法还包括:
当第一数据段的热度大于第一阈值,且存在所述第二事务和第三事务时,取消所述第一事务,其中,所述第一事务所读取数据为所述第三事务所写入数据,所述第二事务写入所述数据的时间早于所述第一事务读取所述数据的时间。
17.根据权利要求14所述的方法,其特征在于,所述方法还包括:
当所述第一数据段的热度大于所述第二阈值时,采用乐观并发控制方法执行第一事务;其中,所述第二阈值小于或等于所述第一阈值。
18.根据权利要求14所述的方法,其特征在于,所述第一事务还包括与第一事务对应的第二数据,第二数据段为在执行第一事务时第二数据所落入的数据库数据段,所述第一数据段与所述第二数据段不同;
确定所述第一数据段的热度,包括:
确定所述第二数据段的热度。
19.根据权利要求14所述的方法,其特征在于,所述第一事务还包括与所述第一事务对应的第三数据,第三数据段为在执行第一事务时第三数据所落入的数据库数据段;
确定所述第一数据段的热度,包括:
确定所述第一数据段和所述第三数据段整体的热度。
20.根据权利要求14-19任一项所述的方法,其特征在于,所述方法还包括:更新所述第一数据段的热度。
21.根据权利要求14所述的方法,其特征在于,在所述确定所述第一数据段的热度之前,所述方法还包括:
确定所述第一数据是否落入预设第一数据集。
22.根据权利要求21所述的方法,其特征在于,所述方法还包括:
当所述第一数据未落入所述预设第一数据集,且所述预设第一数据段的热度大于所述第一阈值时,确定所述第一数据是否落入预设第二数据集。
23.一种数据库访问方法,其特征在于,包括:
接收第一事务,所述第一事务包括第一数据;
确定所述第一数据是否落入预设第一数据集;
当所述第一数据落入所述预设的第一数据集时,确定是否存在第二事务,当不存在第二事务时,执行所述第一事务;其中,所述第一事务所读取数据为所述第二事务所写入数据,所述第二事务写入所述数据的时间晚于所述第一事务读取所述数据的时间。
24.根据权利要求23所述的方法,其特征在于,所述方法还包括:
当所述第一数据落入所述预设的第一数据集,且存在所述第二事务,不存在第三事务时,执行所述第一事务,其中,所述第一事务所读取数据为所述第三事务所写入数据,所述第二事务写入所述数据的时间早于所述第一事务读取所述数据的时间。
25.根据权利要求23所述的方法,其特征在于,所述方法还包括:
当所述第一数据落入所述预设的第一数据集,且存在所述第二事务和第三事务时,取消所述第一事务,其中,所述第一事务所读取数据为所述第三事务所写入数据,所述第二事务写入所述数据的时间早于所述第一事务读取所述数据的时间。
26.根据权利要求23所述的方法,其特征在于,所述方法还包括:
当所述第一数据未落入所述预设的第一数据集时,采用乐观并发控制方法执行第一事务;其中,所述第二阈值小于或等于所述第一阈值。
27.一种存储程序的计算机可读存储介质,其特征在于,所述程序包括指令,所述指令用于执行权利要求14-26任一项所述的方法。
28.一种计算机程序,其特征在于,所述程序包括指令,所述指令用于执行权利要求14-26任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711271123.9A CN110019468B (zh) | 2017-12-05 | 2017-12-05 | 一种数据库系统及数据库访问方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711271123.9A CN110019468B (zh) | 2017-12-05 | 2017-12-05 | 一种数据库系统及数据库访问方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110019468A true CN110019468A (zh) | 2019-07-16 |
CN110019468B CN110019468B (zh) | 2021-07-16 |
Family
ID=67186525
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711271123.9A Active CN110019468B (zh) | 2017-12-05 | 2017-12-05 | 一种数据库系统及数据库访问方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110019468B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955672A (zh) * | 2019-11-25 | 2020-04-03 | 上海交通大学 | 面向乐观并发控制的多版本支持方法及系统 |
CN111736964A (zh) * | 2020-07-02 | 2020-10-02 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
CN112749004A (zh) * | 2019-10-30 | 2021-05-04 | 中国移动通信集团安徽有限公司 | 基于节点访问热度的数据存储方法及装置 |
CN116755847A (zh) * | 2023-08-17 | 2023-09-15 | 北京遥感设备研究所 | 一种缓解锁冲突的日志预分析及事务管理方法 |
CN117667319A (zh) * | 2024-02-02 | 2024-03-08 | 建信金融科技有限责任公司 | 一种事务处理方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8103714B2 (en) * | 2008-08-15 | 2012-01-24 | International Business Machines Corporation | Transactional quality of service in event stream processing middleware |
CN102595446A (zh) * | 2012-02-17 | 2012-07-18 | 南京邮电大学 | 一种无线传感网事务协调方法 |
US8386421B2 (en) * | 2010-06-28 | 2013-02-26 | Microsoft Corporation | Concurrency control for confluent trees |
CN104487946A (zh) * | 2011-10-14 | 2015-04-01 | 英特尔公司 | 用于事务存储器系统中的自适应线程调度的方法、设备和系统 |
-
2017
- 2017-12-05 CN CN201711271123.9A patent/CN110019468B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8103714B2 (en) * | 2008-08-15 | 2012-01-24 | International Business Machines Corporation | Transactional quality of service in event stream processing middleware |
US8386421B2 (en) * | 2010-06-28 | 2013-02-26 | Microsoft Corporation | Concurrency control for confluent trees |
CN104487946A (zh) * | 2011-10-14 | 2015-04-01 | 英特尔公司 | 用于事务存储器系统中的自适应线程调度的方法、设备和系统 |
CN102595446A (zh) * | 2012-02-17 | 2012-07-18 | 南京邮电大学 | 一种无线传感网事务协调方法 |
Non-Patent Citations (2)
Title |
---|
刘云生等: "安全的乐观实时并发控制策略 ", 《微计算机应用》 * |
赵伟: "Sybase SQL Server并发控制探讨 ", 《太原师范学院学报(自然科学版)》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112749004A (zh) * | 2019-10-30 | 2021-05-04 | 中国移动通信集团安徽有限公司 | 基于节点访问热度的数据存储方法及装置 |
CN112749004B (zh) * | 2019-10-30 | 2023-09-05 | 中国移动通信集团安徽有限公司 | 基于节点访问热度的数据存储方法及装置 |
CN110955672A (zh) * | 2019-11-25 | 2020-04-03 | 上海交通大学 | 面向乐观并发控制的多版本支持方法及系统 |
CN110955672B (zh) * | 2019-11-25 | 2023-03-24 | 上海交通大学 | 面向乐观并发控制的多版本支持方法及系统 |
CN111736964A (zh) * | 2020-07-02 | 2020-10-02 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
CN111736964B (zh) * | 2020-07-02 | 2021-08-06 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
CN116755847A (zh) * | 2023-08-17 | 2023-09-15 | 北京遥感设备研究所 | 一种缓解锁冲突的日志预分析及事务管理方法 |
CN116755847B (zh) * | 2023-08-17 | 2023-11-14 | 北京遥感设备研究所 | 一种缓解锁冲突的日志预分析及事务管理方法 |
CN117667319A (zh) * | 2024-02-02 | 2024-03-08 | 建信金融科技有限责任公司 | 一种事务处理方法和装置 |
CN117667319B (zh) * | 2024-02-02 | 2024-05-03 | 建信金融科技有限责任公司 | 一种事务处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110019468B (zh) | 2021-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110019468A (zh) | 一种数据库系统及数据库访问方法 | |
CN111338766B (zh) | 事务处理方法、装置、计算机设备及存储介质 | |
US11386065B2 (en) | Database concurrency control through hash-bucket latching | |
US9852204B2 (en) | Read-only operations processing in a paxos replication system | |
CN111177277B (zh) | 数据存储方法、交易存储方法及装置 | |
CN110321344A (zh) | 关联数据的信息查询方法、装置、计算机设备及存储介质 | |
US11269902B2 (en) | Time series data management method, device, and apparatus | |
EP2199935A2 (en) | Method and system for dynamically partitioning very large database indices on write-once tables | |
US11500869B2 (en) | Method and apparatus for optimizing database transactions | |
EP1806668B1 (en) | System and method for managing log information for transaction | |
JP6877435B2 (ja) | データベース動作方法及び装置 | |
CN113419823B (zh) | 一种适用于高并发事务的联盟链系统及其设计方法 | |
EP3961431B1 (en) | Method and apparatus for grouping transactions that need to be serially executed based on a sequence of transactions in one block of a blockchain | |
CN110704438B (zh) | 一种区块链中布隆过滤器的生成方法及装置 | |
CN106897123B (zh) | 数据库操作方法及装置 | |
CN101763433A (zh) | 一种数据存储系统及方法 | |
CN112084264B (zh) | 一种日志数据同步方法、装置及服务器 | |
US8412676B2 (en) | Forgetting items with knowledge based synchronization | |
CN105988899B (zh) | 实现数据缓存的方法和装置 | |
EP3580661B1 (en) | Data processing | |
CN104484136B (zh) | 一种可支撑高并发内存数据的方法 | |
CN106503027B (zh) | 数据库操作方法及装置 | |
CN110489354A (zh) | 支持两种位宽的磨损均衡垃圾回收加速装置 | |
CN112087501A (zh) | 保持数据一致性的传输方法及系统 | |
US20140325271A1 (en) | Terminal device, information processing method, and computer program product |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |