CN114253843A - 数据库隔离级别的错误检查方法、装置、设备和介质 - Google Patents
数据库隔离级别的错误检查方法、装置、设备和介质 Download PDFInfo
- Publication number
- CN114253843A CN114253843A CN202111537022.8A CN202111537022A CN114253843A CN 114253843 A CN114253843 A CN 114253843A CN 202111537022 A CN202111537022 A CN 202111537022A CN 114253843 A CN114253843 A CN 114253843A
- Authority
- CN
- China
- Prior art keywords
- transaction
- database
- transactions
- isolation level
- generating
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开涉及一种数据库隔离级别的错误检查方法、装置、设备和介质;其中,该方法包括:将数据库预设隔离级别对应的事务测试集合在数据库中运行,并在运行结束后获取事务测试集合中所有事务的执行结果以及事务处理日志;根据执行结果以及事务测试集合中各事务对应的键值,生成多个有向图;根据多个有向图以及事务处理日志,生成与数据库预设隔离级别对应的测试报告。本公开实施例能够对数据库隔离级别进行错误检查,提高检查的效率,节省人力资源和时间。
Description
技术领域
本公开涉及数据库技术领域,尤其涉及一种数据库隔离级别的错误检查方法、装置、设备和介质。
背景技术
数据库管理系统作为重要的基础软件,广泛应用于许多领域中。伴随着技术的不断发展,数据库系统的设计有了更多的选择,系统架构也在不断地重构,快速迭代的新系统对数据库系统的质量管理带来了新的挑战,因此对数据库系统进行测试是非常有必要的。
关系数据库中提供了不同的隔离级别,对隔离级别进行错误检查,是数据库系统测试中的一项。现有技术中,检查数据库隔离级别是否存在错误的方法,通常是采用固定的测试模型,通过检查该模型的执行结果,与预期结果进行比较,从而验证其正确性。但是,上述方法只能对限定的事务模式进行测试,未测试到的模式,仍然处于未知状态。同时,由于用户实际使用的应用不同,上述方法很难做到全面覆盖,使得测试效率较低。
发明内容
为了解决上述技术问题,本公开提供了一种数据库隔离级别的错误检查方法、装置、设备和介质。
第一方面,本公开提供了一种数据库隔离级别的错误检查方法,包括:
将数据库预设隔离级别对应的事务测试集合在数据库中运行,并在运行结束后获取所述事务测试集合中所有事务的执行结果以及事务处理日志;
根据所述执行结果以及所述事务测试集合中各事务对应的键值,生成多个有向图;
根据所述多个有向图以及事务处理日志,生成与所述数据库预设隔离级别对应的测试报告。
可选的,所述根据所述执行结果以及所述事务测试集合中各事务对应的键值,生成多个有向图,包括:
查询所述事务测试集合中各事务分别对应的键值,并根据键值将各事务进行划分,得到多个键值组;
针对所述多个键值组中的每个键值组,根据当前键值组中包含的所有目标事务分别对应的操作以及所有目标事务的执行结果,确定所述当前键值组对应的目标有向图;
基于所有目标有向图,得到所述事务测试集合对应的多个有向图。
可选的,所述根据当前键值组中包含的所有目标事务分别对应的操作以及所有目标事务的执行结果,确定所述当前键值组对应的目标有向图,包括:
根据当前键值组中包含的所有目标事务分别对应的操作以及所有目标事务的执行结果,确定所有目标事务之间的执行顺序;
根据所述执行顺序,确定对应的目标事务之间的指向;
基于所述指向和所有目标事务,生成所述当前键值组对应的目标有向图。
可选的,所述根据所述多个有向图以及事务处理日志,生成与所述数据库预设隔离级别对应的测试报告,包括:
对所述多个有向图进行分析,确定闭环的有向图;
根据所述闭环的有向图以及事务处理日志,生成与所述数据库预设隔离级别对应的测试报告。
可选的,所述根据所述闭环的有向图以及事务处理日志,生成与所述数据库预设隔离级别对应的测试报告,包括:
根据所述闭环的有向图中的路径关系,确定所述闭环的有向图中待检查的事务集合;
根据所述事务处理日志,对所述待检查的事务集合进行分析,得到分析结果;
根据所述分析结果,生成与所述数据库预设隔离级别对应的测试报告。
可选的,所述将数据库预设隔离级别对应的事务测试集合在数据库中运行,并在运行结束后获取所述事务测试集合中所有事务的执行结果以及事务处理日志之前,还包括:
根据所述数据库预设隔离级别,生成多条事务线;
针对每条事务线,随机生成多个单体事务;
根据所述多个单体事务、并发操作的个数以及测试周期,生成与所述数据库预设隔离级别对应的事务测试集合。
可选的,所述数据库预设隔离级包括读已提交、可重读以及可序列化中的至少一种。
第二方面,本公开提供了一种数据库隔离级别的错误检查装置,包括:
获取模块,用于将数据库预设隔离级别对应的事务测试集合在数据库中运行,并在运行结束后获取所述事务测试集合中所有事务的执行结果以及事务处理日志;
第一生成模块,用于根据所述执行结果以及所述事务测试集合中各事务对应的键值,生成多个有向图;
第二生成模块,用于根据所述多个有向图以及事务处理日志,生成与所述数据库预设隔离级别对应的测试报告。
可选的,第一生成模块,包括:
划分单元,用于查询所述事务测试集合中各事务分别对应的键值,并根据键值将各事务进行划分,得到多个键值组;
第一确定单元,用于针对所述多个键值组中的每个键值组,根据当前键值组中包含的所有目标事务分别对应的操作以及所有目标事务的执行结果,确定所述当前键值组对应的目标有向图;
第二确定单元,用于基于所有目标有向图,得到所述事务测试集合对应的多个有向图。
可选的,第一确定单元,具体用于:
针对所述多个键值组中的每个键值组,根据当前键值组中包含的所有目标事务分别对应的操作以及所有目标事务的执行结果,确定所有目标事务之间的执行顺序;
根据所述执行顺序,确定对应的目标事务之间的指向;
基于所述指向和所有目标事务,生成所述当前键值组对应的目标有向图。
可选的,第二生成模块,包括:
有向图确定单元,用于对所述多个有向图进行分析,确定闭环的有向图;
报告生成单元,用于根据所述闭环的有向图以及事务处理日志,生成与所述数据库预设隔离级别对应的测试报告。
可选的,报告生成单元,具体用于:
根据所述闭环的有向图中的路径关系,确定所述闭环的有向图中待检查的事务集合;
根据所述事务处理日志,对所述待检查的事务集合进行分析,得到分析结果;
根据所述分析结果,生成与所述数据库预设隔离级别对应的测试报告。
可选的,上述装置还包括:测试集合生成模块,具体用于:
在将数据库预设隔离级别对应的事务测试集合在数据库中运行,并在运行结束后获取所述事务测试集合中所有事务的执行结果以及事务处理日志之前,根据所述数据库预设隔离级别,生成多条事务线;
针对每条事务线,随机生成多个单体事务;
根据所述多个单体事务、并发操作的个数以及测试周期,生成与所述数据库预设隔离级别对应的事务测试集合。
可选的,所述数据库预设隔离级包括读已提交、可重读以及可序列化中的至少一种。
第三方面,本公开还提供了一种计算机设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本公开实施例中的任一种所述的数据库隔离级别的错误检查方法。
第四方面,本公开还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本公开实施例中的任一种所述的数据库隔离级别的错误检查方法。
本公开实施例提供的技术方案与现有技术相比具有如下优点:首先将数据库预设隔离级别对应的事务测试集合在数据库中运行,并在运行结束后获取事务测试集合中所有事务的执行结果以及事务处理日志,然后根据执行结果以及事务测试集合中各事务对应的键值,生成多个有向图,最后根据多个有向图以及事务处理日志,生成与数据库预设隔离级别对应的测试报告,通过上述方案能够对数据库隔离级别进行错误检查,提高检查的效率,节省人力资源和时间。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本公开实施例提供的一种数据库隔离级别的错误检查方法的流程示意图;
图2A是本公开实施例提供的另一种数据库隔离级别的错误检查方法的流程示意图;
图2B本公开实施例提供的方法中目标有向图的示意图;
图3是本公开实施例提供的一种数据库隔离级别的错误检查装置的结构示意图;
图4是本公开实施例提供的一种计算机设备的结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
图1是本公开实施例提供的一种数据库隔离级别的错误检查方法的流程示意图。本实施例可适用于对数据库多个事务之间的隔离级别进行错误检查的情况。本实施例方法可由数据库隔离级别的错误检查装置来执行,该装置可采用硬件/或软件的方式来实现,并可配置于计算机设备中。如图1所示,该方法具体包括如下:
S110,将数据库预设隔离级别对应的事务测试集合在数据库中运行,并在运行结束后获取事务测试集合中所有事务的执行结果以及事务处理日志。
其中,隔离级别可以理解为一个事务必须与由其他事务进行的资源或数据更改相隔离的程度。事务可以理解为访问并可能更新数据库中各种数据项的一个执行单元,其通常为一组操作语句。数据库隔离级别可以包括四种,由低到高分别为:读未提交(ReadUncommitted)、读已提交(Read Committed)、可重读(Repeatable Read)和可序列化(Serializable)。由于读未提交可能是出错的情况下发生的情况,因此本实施例中数据库隔离级别的错误检查不考虑针对读未提交的错误检查。本实施例中数据库预设隔离级可以包括读已提交、可重读以及可序列化中的至少一种,本实施例不做具体限制。事务测试集合可以理解为用于进行测试的多个事务所组成的集合。事务处理日志可以理解为记录了所有事务的执行过程的日志。执行结果可以理解为事务在执行完成后所得到的结果,例如,若事务为对某个表中的值进行更新,则执行结果可能为:更新成功或者更新失败;若事务为对某个表中的值进行写入,则执行结果可能为:写入成功或者写入失败;若事务为对某个表中的值进行读取,则执行结果可能为获取到该表中的值,或者未获取到该表中的值。
需要说明的是:本实施例中数据库隔离级别的错误检查中的数据库主要是指关系数据库,即:建立在关系数据库模型基础上的数据库。
具体的,为了对数据库隔离级别进行错误检查,需要获取数据库预设隔离级别对应的事务测试集合,将该事务测试集合在对应的数据库中运行,运行结束后,查询数据库运行记录能够得到事务测试集合中所有事务的执行结果以及记录事务测试集合中所有事务的执行过程的事务处理日志。
S120,根据执行结果以及事务测试集合中各事务对应的键值,生成多个有向图。
其中,键值可以理解为数据库中的表的标识信息,根据键值可以确定在数据库中与该键值对应的表。有向图可以理解为反映事务之间关系的具有方向的图。
具体的,在得到事务测试集合中所有事务的执行结果之后,根据所有事务的执行结果以及各事务对应的键值,能够确定所有事务之中有关联的事务以及有关联的事务中每个事务之间的执行顺序,从而根据有关联的事务以及有关联的事务中每个事务之间的执行顺序,能够生成多个有向图。
S130,根据多个有向图以及事务处理日志,生成与数据库预设隔离级别对应的测试报告。
其中,测试报告中可以包含事务测试集合中数据库隔离级别有错误的事务以及出错的原因等。
具体的,在得到多个有向图之后,结合事务处理日志对有向图中包含的事务之间的执行顺序进行分析,能够确定数据库隔离级别有错误的具体事务以及出错的原因,进而根据有错误的具体事务以及出错的原因,结合测试报告的模板,就能够生成与数据库预设隔离级别对应的测试报告,便于测试人员进行分析查看以及对数据库管理系统的性能进行改善。
在本实施例中,首先将数据库预设隔离级别对应的事务测试集合在数据库中运行,并在运行结束后获取事务测试集合中所有事务的执行结果以及事务处理日志,然后根据执行结果以及事务测试集合中各事务对应的键值,生成多个有向图,最后根据多个有向图以及事务处理日志,生成与数据库预设隔离级别对应的测试报告,通过上述方案能够对数据库隔离级别进行错误检查,提高检查的效率,节省人力资源和时间。
在本实施例中,可选的,所述根据所述多个有向图以及事务处理日志,生成与所述数据库预设隔离级别对应的测试报告,可以具体包括:
对所述多个有向图进行分析,确定闭环的有向图;
根据所述闭环的有向图以及事务处理日志,生成与所述数据库预设隔离级别对应的测试报告。
具体的,由于有向图反映了事务之间关系且具有方向,那么有向图可能是开环的,也有可能是闭环的,在数据库隔离级别的错误检查过程中,开环的有向图通常数据库隔离级别没有错误,而闭环的有向图数据库隔离级别可能会出现错误,因此需要对多个有向图进行分析,确定出其中存在闭环的有向图。在确定了闭环的有向图之后,还需要结合事务处理日志中与闭环的有向图中包含的事务有关的执行过程对闭环的有向图进行分析,从而确定闭环的有向图中是否有事务的隔离级别出现错误,若出现错误,则根据出现错误的事务生成与数据库预设隔离级别对应的测试报告。若所有事务均未出现错误,则生成事务通过数据库隔离级别的错误检查的测试报告,表示本次检查结果为全部事务均通过检查。
本实施例中,通过上述方法生成与数据库预设隔离级别对应的测试报告,有利于提高检查结果的准确性以及防止误判。
在本实施例中,可选的,所述根据所述闭环的有向图以及事务处理日志,生成与所述数据库预设隔离级别对应的测试报告,可以具体包括:
根据所述闭环的有向图中的路径关系,确定所述闭环的有向图中待检查的事务集合;
根据所述事务处理日志,对所述待检查的事务集合进行分析,得到分析结果;
根据所述分析结果,生成与所述数据库预设隔离级别对应的测试报告。
其中,路径关系可以理解为有向图中各个路径之间的关系。路径可以理解为包括方向的线段。待检查的事务集合可以理解为有可能隔离级别出现错误的事务所组成的集合。
具体的,在得到闭环的有向图之后,根据闭环的有向图中的路径关系,能够确定出闭环的有向图中有可能隔离级别出现错误的事务,根据这些事务能够得到待检查的事务集合。在得到待检查的事务集合之后,根据事务处理日志,对待检查的事务集合中包括的各个待检查事务进行分析,能够得到分析结果,即:确定出待检查事务集合中隔离级别出现错误的事务。根据隔离级别出现错误的事务,就能够生成与数据库预设隔离级别对应的测试报告。
本实施例中,通过对待检查的事务集合中包括的各个待检查事务进行分析,最终得到的测试报告更为准确,避免出错。
图2A是本公开实施例提供的另一种数据库隔离级别的错误检查方法的流程示意图。本实施例是在上述实施例的基础上进行优化。可选的,本实施例对生成多个有向图的过程进行详细的解释说明。如图2A所示,该方法具体包括如下:
S210,将数据库预设隔离级别对应的事务测试集合在数据库中运行,并在运行结束后获取事务测试集合中所有事务的执行结果以及事务处理日志。
S220,查询事务测试集合中各事务分别对应的键值,并根据键值将各事务进行划分,得到多个键值组。
具体的,由于事务之间通过相同的键值建立关系,那么查询事务测试集合中各事务分别对应的键值,就能够确定出键值相同的事务。将键值相同的事务划分为一个键值组,根据不同键值的个数,能够得到对应的多个键值组。
S230,针对多个键值组中的每个键值组,根据当前键值组中包含的所有目标事务分别对应的操作以及所有目标事务的执行结果,确定当前键值组对应的目标有向图。
其中,目标事务可以理解为键值组中包含的任一事务。操作可以为写操作、读操作或者更新操作等。目标有向图可以理解为与每个键值组对应的有向图。
针对多个键值组中的每个键值组,将每个键值组依次作为当前键值组,根据当前键值组中包含的所有目标事务分别对应的操作以及所有目标事务的执行结果,能够确定各目标事务之间的依赖关系,从而根据依赖关系能够确定当前键值组对应的目标有向图。
示例性的,事务之间的依赖关系可以包括:
1、写写依赖,若事务Tx为:写入或更新键n的值n-v1,事务Ty为:更新键n的值n-v2,则Ty依赖于Tx;
2、读写依赖,若事务Tx为:写入或更新键n的值n-v1,事务Ty为:读取键n的值,则Ty依赖于Tx;
3、写读依赖,若事务Tx为:读取键n的值,事务Ty为:写入或更新键n的值n-v1,则Ty依赖于Tx。
S240,基于所有目标有向图,得到事务测试集合对应的多个有向图。
由于每个键值组对应一个目标有向图,那么根据所有的目标有向图就能够得到事务测试集合对应的多个有向图。
S250,根据多个有向图以及事务处理日志,生成与数据库预设隔离级别对应的测试报告。
在本实施例中,首先将数据库预设隔离级别对应的事务测试集合在数据库中运行,并在运行结束后获取事务测试集合中所有事务的执行结果以及事务处理日志,接着查询事务测试集合中各事务分别对应的键值,并根据键值将各事务进行划分,得到多个键值组,然后针对多个键值组中的每个键值组,根据当前键值组中包含的所有目标事务分别对应的操作以及所有目标事务的执行结果,确定当前键值组对应的目标有向图,基于所有目标有向图,得到事务测试集合对应的多个有向图,最后根据多个有向图以及事务处理日志,生成与数据库预设隔离级别对应的测试报告,根据不同的键值确定多个键值组,再得到多个有向图,简单高效且准确率高,有利于提高测试报告的准确性以及检查的效率,节省人力资源和时间。
在本实施例中,可选的,所述根据当前键值组中包含的所有目标事务分别对应的操作以及所有目标事务的执行结果,确定所述当前键值组对应的目标有向图,可以具体包括:
根据当前键值组中包含的所有目标事务分别对应的操作以及所有目标事务的执行结果,确定所有目标事务之间的执行顺序;
根据所述执行顺序,确定对应的目标事务之间的指向;
基于所述指向和所有目标事务,生成所述当前键值组对应的目标有向图。
具体的,根据当前键值组中包含的所有目标事务分别对应的操作以及所有目标事务的执行结果,能够确定各目标事务之间的依赖关系,从而得到所有目标事务之间的执行顺序,例如,若事务Tx为:在键n插入值n-v1,另一个事务Ty为:读取到键n的值n-v1,则说明Ty依赖于Tx,即:Tx的执行顺序早于Ty。根据执行顺序,能够确定对应的目标事务之间的指向,例如,若Tx的执行顺序早于Ty,则Tx指向Ty。在确定了对应的目标事务之间的指向之后,基于指向和所有目标事务,就能够生成当前键值组对应的目标有向图。
示例性的,图2B本公开实施例提供的方法中目标有向图的示意图,示例性的给出了一种方式,如图2B所示:
图2B中以4个事务为例进行说明,插入键i值i-v1,读取键i返回值i-v1,读取键j值无返回和插入键j值j-v1。其中,插入键i值i-v1的执行顺序早于读取键i返回值i-v1,读取键j值无返回的执行顺序早于插入键j值j-v1,因此插入键i值i-v1指向读取键i返回值i-v1,读取键j值无返回指向插入键j值j-v1。
需要说明的是:本实施例中对事务的个数不做具体限制。
本实施例中,通过上述方法生成目标有向图,高效快捷、易操作且可读性强。
在本实施例中,可选的,所述将数据库预设隔离级别对应的事务测试集合在数据库中运行,并在运行结束后获取所述事务测试集合中所有事务的执行结果以及事务处理日志之前,还可以具体包括:
根据所述数据库预设隔离级别,生成多条事务线;
针对每条事务线,随机生成多个单体事务;
根据所述多个单体事务、并发操作的个数以及测试周期,生成与所述数据库预设隔离级别对应的事务测试集合。
其中,事务线可以理解为事务的路线。单体事务可以理解为一次执行一个事务,本实施例中的单体事务主要为针对不特定的键值进行不特定操作,不特定的键值可以为预设键值范围内的任意一个键值。不特定操作可以为读操作或者写操作的任意一种。预设键值范围可以预先定义,也可以是具体情况而定,本实施例不做具体限制。
具体的,根据测试人员编写的程序能够生成事务测试集合。具体过程为:先根据数据库预设隔离级别,生成多条事务线,然后针对每条事务线,随机生成多个单体事务,能够使得事务测试集合更丰富。由于在同一个数据库上的并发操作越多,事务间的并发关系越复杂以及测试的周期越长(更多测试用例),产生的测试样本越丰富,因此,通过对多个单体事务、并发操作的个数以及测试周期的调整,能够生成更全面的事务测试集合。
本实施例中,通过上述方法生成事务测试集合,能够对实际应用中可能出现的事务进行全面覆盖,从而提高事务的复杂性和覆盖率以及使得数据库隔离级别的错误检查更全面、覆盖范围更广。
图3是本公开实施例提供的一种数据库隔离级别的错误检查装置的结构示意图;该装置配置于计算机设备中,可实现本申请任意实施例所述的数据库隔离级别的错误检查方法。该装置具体包括如下:
获取模块310,用于将数据库预设隔离级别对应的事务测试集合在数据库中运行,并在运行结束后获取所述事务测试集合中所有事务的执行结果以及事务处理日志;
第一生成模块320,用于根据所述执行结果以及所述事务测试集合中各事务对应的键值,生成多个有向图;
第二生成模块330,用于根据所述多个有向图以及事务处理日志,生成与所述数据库预设隔离级别对应的测试报告。
在本实施例中,可选的,第一生成模块320,包括:
划分单元,用于查询所述事务测试集合中各事务分别对应的键值,并根据键值将各事务进行划分,得到多个键值组;
第一确定单元,用于针对所述多个键值组中的每个键值组,根据当前键值组中包含的所有目标事务分别对应的操作以及所有目标事务的执行结果,确定所述当前键值组对应的目标有向图;
第二确定单元,用于基于所有目标有向图,得到所述事务测试集合对应的多个有向图。
在本实施例中,可选的,第一确定单元,具体用于:
针对所述多个键值组中的每个键值组,根据当前键值组中包含的所有目标事务分别对应的操作以及所有目标事务的执行结果,确定所有目标事务之间的执行顺序;
根据所述执行顺序,确定对应的目标事务之间的指向;
基于所述指向和所有目标事务,生成所述当前键值组对应的目标有向图。
在本实施例中,可选的,第二生成模块330,包括:
有向图确定单元,用于对所述多个有向图进行分析,确定闭环的有向图;
报告生成单元,用于根据所述闭环的有向图以及事务处理日志,生成与所述数据库预设隔离级别对应的测试报告。
在本实施例中,可选的,报告生成单元,具体用于:
根据所述闭环的有向图中的路径关系,确定所述闭环的有向图中待检查的事务集合;
根据所述事务处理日志,对所述待检查的事务集合进行分析,得到分析结果;
根据所述分析结果,生成与所述数据库预设隔离级别对应的测试报告。
在本实施例中,可选的,上述装置还包括:测试集合生成模块,具体用于:
在将数据库预设隔离级别对应的事务测试集合在数据库中运行,并在运行结束后获取所述事务测试集合中所有事务的执行结果以及事务处理日志之前,根据所述数据库预设隔离级别,生成多条事务线;
针对每条事务线,随机生成多个单体事务;
根据所述多个单体事务、并发操作的个数以及测试周期,生成与所述数据库预设隔离级别对应的事务测试集合。
在本实施例中,可选的,所述数据库预设隔离级包括读已提交、可重读以及可序列化中的至少一种。
通过本公开实施例提供的数据库隔离级别的错误检查装置,首先将数据库预设隔离级别对应的事务测试集合在数据库中运行,并在运行结束后获取事务测试集合中所有事务的执行结果以及事务处理日志,然后根据执行结果以及事务测试集合中各事务对应的键值,生成多个有向图,最后根据多个有向图以及事务处理日志,生成与数据库预设隔离级别对应的测试报告,能够对数据库隔离级别进行错误检查,提高检查的效率,节省人力资源和时间。
本公开实施例所提供的数据库隔离级别的错误检查装置可执行本公开任意实施例所提供的数据库隔离级别的错误检查方法,具备执行方法相应的功能模块和有益效果。
图4是本公开实施例提供的一种计算机设备的结构示意图。如图4所示,该计算机设备包括处理器410和存储装置420;计算机设备中处理器410的数量可以是一个或多个,图4中以一个处理器410为例;计算机设备中的处理器410和存储装置420可以通过总线或其他方式连接,图4中以通过总线连接为例。
存储装置420作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本公开实施例中的数据库隔离级别的错误检查方法对应的程序指令/模块。处理器410通过运行存储在存储装置420中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现本公开实施例所提供的数据库隔离级别的错误检查方法。
存储装置420可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储装置420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置420可进一步包括相对于处理器410远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本实施例提供的一种计算机设备可用于执行上述任意实施例提供的数据库隔离级别的错误检查方法,具备相应的功能和有益效果。
本公开实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于实现本公开实施例所提供的数据库隔离级别的错误检查方法。
当然,本公开实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本公开任意实施例所提供的数据库隔离级别的错误检查方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本公开可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述的方法。
值得注意的是,上述数据库隔离级别的错误检查装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本公开的保护范围。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种数据库隔离级别的错误检查方法,其特征在于,所述方法包括:
将数据库预设隔离级别对应的事务测试集合在数据库中运行,并在运行结束后获取所述事务测试集合中所有事务的执行结果以及事务处理日志;
根据所述执行结果以及所述事务测试集合中各事务对应的键值,生成多个有向图;
根据所述多个有向图以及事务处理日志,生成与所述数据库预设隔离级别对应的测试报告。
2.根据权利要求1所述的方法,其特征在于,所述根据所述执行结果以及所述事务测试集合中各事务对应的键值,生成多个有向图,包括:
查询所述事务测试集合中各事务分别对应的键值,并根据键值将各事务进行划分,得到多个键值组;
针对所述多个键值组中的每个键值组,根据当前键值组中包含的所有目标事务分别对应的操作以及所有目标事务的执行结果,确定所述当前键值组对应的目标有向图;
基于所有目标有向图,得到所述事务测试集合对应的多个有向图。
3.根据权利要求2所述的方法,其特征在于,所述根据当前键值组中包含的所有目标事务分别对应的操作以及所有目标事务的执行结果,确定所述当前键值组对应的目标有向图,包括:
根据当前键值组中包含的所有目标事务分别对应的操作以及所有目标事务的执行结果,确定所有目标事务之间的执行顺序;
根据所述执行顺序,确定对应的目标事务之间的指向;
基于所述指向和所有目标事务,生成所述当前键值组对应的目标有向图。
4.根据权利要求1所述的方法,其特征在于,所述根据所述多个有向图以及事务处理日志,生成与所述数据库预设隔离级别对应的测试报告,包括:
对所述多个有向图进行分析,确定闭环的有向图;
根据所述闭环的有向图以及事务处理日志,生成与所述数据库预设隔离级别对应的测试报告。
5.根据权利要求4所述的方法,其特征在于,所述根据所述闭环的有向图以及事务处理日志,生成与所述数据库预设隔离级别对应的测试报告,包括:
根据所述闭环的有向图中的路径关系,确定所述闭环的有向图中待检查的事务集合;
根据所述事务处理日志,对所述待检查的事务集合进行分析,得到分析结果;
根据所述分析结果,生成与所述数据库预设隔离级别对应的测试报告。
6.根据权利要求1所述的方法,其特征在于,所述将数据库预设隔离级别对应的事务测试集合在数据库中运行,并在运行结束后获取所述事务测试集合中所有事务的执行结果以及事务处理日志之前,还包括:
根据所述数据库预设隔离级别,生成多条事务线;
针对每条事务线,随机生成多个单体事务;
根据所述多个单体事务、并发操作的个数以及测试周期,生成与所述数据库预设隔离级别对应的事务测试集合。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述数据库预设隔离级包括读已提交、可重读以及可序列化中的至少一种。
8.一种数据库隔离级别的错误检查装置,其特征在于,所述装置包括:
获取模块,用于将数据库预设隔离级别对应的事务测试集合在数据库中运行,并在运行结束后获取所述事务测试集合中所有事务的执行结果以及事务处理日志;
第一生成模块,用于根据所述执行结果以及所述事务测试集合中各事务对应的键值,生成多个有向图;
第二生成模块,用于根据所述多个有向图以及事务处理日志,生成与所述数据库预设隔离级别对应的测试报告。
9.一种计算机设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111537022.8A CN114253843A (zh) | 2021-12-13 | 2021-12-13 | 数据库隔离级别的错误检查方法、装置、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111537022.8A CN114253843A (zh) | 2021-12-13 | 2021-12-13 | 数据库隔离级别的错误检查方法、装置、设备和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114253843A true CN114253843A (zh) | 2022-03-29 |
Family
ID=80792469
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111537022.8A Pending CN114253843A (zh) | 2021-12-13 | 2021-12-13 | 数据库隔离级别的错误检查方法、装置、设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114253843A (zh) |
-
2021
- 2021-12-13 CN CN202111537022.8A patent/CN114253843A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7698690B2 (en) | Identifying code that wastes time performing redundant computation | |
CN108319711B (zh) | 数据库的事务一致性测试方法、装置、存储介质及设备 | |
CN107153609B (zh) | 一种自动化测试方法和装置 | |
CN114116496A (zh) | 自动化测试方法、装置、设备及介质 | |
CN114201408A (zh) | 回归测试方法、装置、计算机设备及存储介质 | |
CN113190220A (zh) | Json文件差异化对比方法及装置 | |
US20090182994A1 (en) | Two-level representative workload phase detection method, apparatus, and computer usable program code | |
CN112783867A (zh) | 为满足实时大数据业务需求的数据库优化方法及云服务器 | |
CN110457070B (zh) | 验证方法及装置以及相关产品 | |
CN111159482A (zh) | 数据校验方法及系统 | |
CN114155054A (zh) | 一种基于kafka的大数据报表统计的测试方法及其系统 | |
CN114253843A (zh) | 数据库隔离级别的错误检查方法、装置、设备和介质 | |
CN111240971A (zh) | 风控规则测试用例的生成方法、装置、服务器和存储介质 | |
CN114356454B (zh) | 对账数据处理方法、设备、存储介质及程序产品 | |
CN108345541A (zh) | 一种程序检测方法及系统 | |
CN115904857A (zh) | 一种瓶颈节点的筛选方法、装置及计算机设备 | |
US10437710B2 (en) | Code coverage testing utilizing test-to-file maps | |
CN112131061A (zh) | 一种硬盘背板带宽测量方法和装置 | |
CN111767222A (zh) | 数据模型的验证方法、装置、电子设备、存储介质 | |
CN116401177B (zh) | 一种ddl正确性检测方法、设备及介质 | |
CN112099838B (zh) | 确定版本差异的方法、装置及存储介质 | |
CN116361179A (zh) | 一种数据校验方法及装置 | |
CN114357918A (zh) | 一种芯片验证方法及装置、电子设备、存储介质 | |
CN118260161A (zh) | 数据写入操作的统计方法、装置、设备、介质和程序产品 | |
CN116932368A (zh) | 测试需求确定方法及装置 |
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 |