CN115203173A - 性能测试方法、装置、电子设备及存储介质 - Google Patents
性能测试方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115203173A CN115203173A CN202210787342.7A CN202210787342A CN115203173A CN 115203173 A CN115203173 A CN 115203173A CN 202210787342 A CN202210787342 A CN 202210787342A CN 115203173 A CN115203173 A CN 115203173A
- Authority
- CN
- China
- Prior art keywords
- query statement
- database
- execution time
- test
- performance
- 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
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000011056 performance test Methods 0.000 title description 11
- 238000012360 testing method Methods 0.000 claims abstract description 147
- 230000007547 defect Effects 0.000 claims abstract description 29
- 230000009466 transformation Effects 0.000 claims description 21
- 238000006243 chemical reaction Methods 0.000 claims description 19
- 238000004891 communication Methods 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 13
- 238000012545 processing Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 description 8
- 235000004919 Ariocarpus fissuratus Nutrition 0.000 description 7
- 244000176187 Ariocarpus fissuratus Species 0.000 description 7
- 239000003471 mutagenic agent Substances 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000007405 data analysis Methods 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000004141 dimensional analysis Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000010223 real-time analysis Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
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/21—Design, administration or maintenance of databases
-
- 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/3684—Test management for test design, e.g. generating new test cases
-
- 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
- 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/242—Query formulation
- G06F16/2433—Query languages
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供了一种性能测试方法、装置、电子设备及存储介质,属于数据库技术领域。本申请通过,获取第一数据库中待测试的目标数据表,其中,所述目标数据表中预先导入了预设数据量的数据;基于所述目标数据表生成第一查询语句,以及,基于所述第一查询语句确定第二查询语句,其中,所述第二查询语句为所述第一查询语句的等价语句;基于所述第一数据库分别执行所述第一查询语句和所述第二查询语句,得到执行所述第一查询语句的第一执行时间和执行所述第二查询语句的第二执行时间;在所述第一执行时间和所述第二执行时间的差值大于预设阈值时,确定所述第一数据库存在性能缺陷。
Description
技术领域
本申请涉及数据库技术领域,尤其涉及一种性能测试方法、装置、电子设备及存储介质。
背景技术
StarRocks是开源的新一代极速全场景MPP数据库。它采用新一代的弹性MPP架构,可以高效支持大数据量级的多维分析、实时分析、高并发分析等多种数据分析场景。
在实际应用中,为了保证StarRocks的数据分析效率,需要对StarRocks进行性能测试。目前,一般是通过人工对StarRocks进行性能测试。
然而,人工测试效率低,且测试结果可能会受人为的主观因素影响而准确性较低。
发明内容
本申请实施例的目的在于提供一种性能测试方法、装置、电子设备及存储介质,以解决人工测试效率低,且测试结果可能会受人为的主观因素影响而准确性较低的问题。具体技术方案如下:
第一方面,提供了一种性能测试方法,所述方法包括:
获取第一数据库中待测试的目标数据表,其中,所述目标数据表中预先导入了预设数据量的数据;
基于所述目标数据表生成第一查询语句,以及,基于所述第一查询语句确定第二查询语句,其中,所述第二查询语句为所述第一查询语句的等价语句;
基于所述第一数据库分别执行所述第一查询语句和所述第二查询语句,得到执行所述第一查询语句的第一执行时间和执行所述第二查询语句的第二执行时间;
在所述第一执行时间和所述第二执行时间的差值大于预设阈值时,确定所述第一数据库存在性能缺陷。
在一个可能的实施方式中,所述基于所述目标数据表生成第一查询语句,包括:
获取所述目标数据表的元信息,基于所述元信息生成多个查询语句,将多个所述查询语句中的任一查询语句确定为所述第一查询语句。
在一个可能的实施方式中,所述基于所述第一查询语句确定第二查询语句,包括:
在多个等价转换规则中,随机选取任一等价转换规则作为目标等价转换规则;
利用所述目标等价转换规则对所述第一查询语句进行等价转换,得到所述第二查询语句。
在一个可能的实施方式中,所述方法还包括:
在所述第一执行时间和所述第二执行时间的差值大于预设阈值时,基于所述第一查询语句、所述第二查询语句及所述目标等价转换规则,生成缺陷信息;
将所述缺陷信息记录至所述第一数据库对应的性能报告模板中,得到所述第一数据库对应的第一性能报告。
在一个可能的实施方式中,所述方法还包括:
确定所述第一数据库对应的第二数据库,以及,所述第一数据库和所述第二数据库对应的至少一个场景维度;
针对至少一个所述场景维度中的任一场景维度,利用所述场景维度对应的查询语句测试集,分别对所述第一数据库和所述第二数据库进行测试,得到第一测试结果和第二测试结果;
基于所述第一测试结果和所述第二测试结果,确定所述场景维度下,所述第一数据库相对于所述第二数据库的性能数据。
在一个可能的实施方式中,所述利用所述场景维度对应的查询语句测试集,分别对所述第一数据库和所述第二数据库进行测试,得到第一测试结果和第二测试结果,包括:
在所述查询语句测试集中确定所述第一数据库对应的第一测试子集,将所述第一测试子集发送到所述第一数据库,以使所述第一数据库在预设并发度和预设并行度下执行所述第一测试子集,得到所述第一测试结果;
以及,
在所述查询语句测试集中确定所述第二数据库对应的第二测试子集,将所述第二测试子集发送到所述第二数据库,以使所述第二数据库在所述预设并发度和所述预设并行度下执行所述第二测试子集,得到所述第二测试结果。
在一个可能的实施方式中,所述方法还包括:
基于所述性能数据生成所述第一数据库相对于所述第二数据库的第二性能报告。
第二方面,提供了一种性能测试装置,所述装置包括:
获取模块,用于获取第一数据库中待测试的目标数据表,其中,所述目标数据表中预先导入了预设数据量的数据;
生成模块,用于基于所述目标数据表生成第一查询语句,以及,基于所述第一查询语句确定第二查询语句,其中,所述第二查询语句为所述第一查询语句的等价语句;
执行模块,用于基于所述第一数据库分别执行所述第一查询语句和所述第二查询语句,得到执行所述第一查询语句的第一执行时间和执行所述第二查询语句的第二执行时间;
确定模块,用于在所述第一执行时间和所述第二执行时间的差值大于预设阈值时,确定所述第一数据库存在性能缺陷。
在一个可能的实施方式中,所述生成模块,具体用于:
获取所述目标数据表的元信息,基于所述元信息生成多个查询语句,将多个所述查询语句中的任一查询语句确定为所述第一查询语句。
在一个可能的实施方式中,所述生成模块,还用于:
在多个等价转换规则中,随机选取任一等价转换规则作为目标等价转换规则;
利用所述目标等价转换规则对所述第一查询语句进行等价转换,得到所述第二查询语句。
在一个可能的实施方式中,所述装置还包括记录模块,用于:
在所述第一执行时间和所述第二执行时间的差值大于预设阈值时,基于所述第一查询语句、所述第二查询语句及所述目标等价转换规则,生成缺陷信息;
将所述缺陷信息记录至所述第一数据库对应的性能报告模板中,得到所述第一数据库对应的第一性能报告。
在一个可能的实施方式中,所述装置还包括性能数据确定模块,用于:
确定所述第一数据库对应的第二数据库,以及,所述第一数据库和所述第二数据库对应的至少一个场景维度;
针对至少一个所述场景维度中的任一场景维度,利用所述场景维度对应的查询语句测试集,分别对所述第一数据库和所述第二数据库进行测试,得到第一测试结果和第二测试结果;
基于所述第一测试结果和所述第二测试结果,确定所述场景维度下,所述第一数据库相对于所述第二数据库的性能数据。
在一个可能的实施方式中,所述性能数据确定模块,具体用于:
在所述查询语句测试集中确定所述第一数据库对应的第一测试子集,将所述第一测试子集发送到所述第一数据库,以使所述第一数据库在预设并发度和预设并行度下执行所述第一测试子集,得到所述第一测试结果;
以及,
在所述查询语句测试集中确定所述第二数据库对应的第二测试子集,将所述第二测试子集发送到所述第二数据库,以使所述第二数据库在所述预设并发度和所述预设并行度下执行所述第二测试子集,得到所述第二测试结果。
在一个可能的实施方式中,所述装置还包括报告生成模块,用于:
基于所述性能数据生成所述第一数据库相对于所述第二数据库的第二性能报告。
第三方面,提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现第一方面任一所述的方法步骤。
第四方面,提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面任一所述的方法步骤。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的性能测试方法。
本申请实施例有益效果:
本申请实施例提供了一种性能测试方法、装置、电子设备及存储介质,本申请通过,首先,基于第一数据库中待测试的预先导入了预设数据量的数据的目标数据表,生成第一查询语句,并基于第一查询语句确定与其等价的第二查询语句;然后,基于第一数据库分别执行第一查询语句和第二查询语句和第二查询语句是逻辑等价的语句,得到执行第一查询语句的第一执行时间和执行第二查询语句的第二执行时间;由于第一查询语句和第二查询语句是逻辑等价的语句,理论上第一数据库的优化器对二者进行优化后可以将第一查询语句和第二查询语句生成相同的物理计划,即二者具有相同的查询耗时(即执行时间),若第一执行时间和第二执行时间的差值大于预设阈值,则意味着优化器的优化过程出现问题,因此可以确定第一数据库存在性能缺陷。如此,实现对数据库的性能测试,无需人为进行测试,提高测试效率。
当然,实施本申请的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种性能测试方法的流程图;
图2为本申请实施例提供的一种性能测试示例图;
图3为本申请实施例提供的另一种性能测试示例图;
图4为本申请实施例提供的另一种性能测试方法的流程图;
图5为本申请实施例提供的一种性能测试装置的结构示意图;
图6为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面将结合具体实施方式,对本申请实施例提供的一种性能测试方法进行详细的说明,如图1所示,具体步骤如下:
S101,获取第一数据库中待测试的目标数据表,其中,所述目标数据表中预先导入了预设数据量的数据。
本申请实施例提供的一种性能测试方法可以应用于测试系统,该测试系统中预先配置了配置信息,其中,配置信息包括:第一数据库的ip地址和端口号,及第一数据库中的database的名称和目标数据表的名称,后续生成的查询语句可以根据配置信息与数据库建立连接。
在本申请实施例中,第一数据库可以为StarRocks数据库,目标数据表可以为第一数据库中任一数据表。预先向目标数据表中导入预设数据量的测试数据,用于对该目标数据表进行该数据量维度的性能测试。
S102,基于所述目标数据表生成第一查询语句,以及,基于所述第一查询语句确定第二查询语句,其中,所述第二查询语句为所述第一查询语句的等价语句。
第一查询语句,为查询目标数据表中数据的SQL(Structured Query Language,结构化查询语言)。第二查询语句,是与第一查询语句的逻辑等价的等价语句。
在本申请实施例中,测试系统中包括生成器和突变器,其中,生成器可以根据目标数据表生成第一查询语句,并将第一查询语句发送至突变器,由突变器基于第一查询语句生成第二查询语句。
作为一实施例,第一查询语句可以为一个,基于所述目标数据表生成第一查询语句的具体实现可以包括:获取所述目标数据表的元信息,基于所述元信息生成多个查询语句,将多个所述查询语句中的任一查询语句确定为所述第一查询语句。其中,元信息是指目标数据表的meta信息。
作为另一实施例,第一查询语句可以为多个,基于所述目标数据表生成第一查询语句的具体实现可以包括:根据所述目标数据表的元信息生成多个查询语句,将每个查询语句确定为一个第一查询语句。
其中,当第一查询语句为多个时,针对每个第一查询语句,确定与其逻辑等价的第二查询语句。
S103,基于所述第一数据库分别执行所述第一查询语句和所述第二查询语句,得到执行所述第一查询语句的第一执行时间和执行所述第二查询语句的第二执行时间。
S104,在所述第一执行时间和所述第二执行时间的差值大于预设阈值时,确定所述第一数据库存在性能缺陷。
以下对S103和S104进行统一说明:
在本申请实施例中,测试系统中还包括验证器,用于基于第一数据库分别执行第一查询语句和第二查询语句,得到第一执行时间和第二执行时间,并根据第一执行时间和第二执行时间确定第一数据库是否存在缺陷。
作为一实施例,当第一查询语句为一个时,首先,基于第一数据库分别执行第一查询语句和第二查询语句,得到执行第一查询语句的第一执行时间和执行第二查询语句的第二执行时间。由于第一查询语句和第二查询语句是逻辑等价的语句,理论上第一数据库的优化器对二者进行优化后可以将第一查询语句和第二查询语句生成相同的物理计划,即二者具有相同的查询耗时(即执行时间),因此,若第一执行时间和第二执行时间的差值大于预设阈值,则意味着优化器的优化过程出现问题,从而可以确定第一数据库存在性能缺陷。
作为另一实施例,当第一查询语句为多个时,将每个第一查询语句和其对应的第二查询语句发送至第一数据库,进行测试,当任一查询语句与其对应的第二查询语句的执行时间的差值大于预设阈值时,则确定第一数据库存在性能缺陷。
图2所示为一种性能测试示例,具体包括以下步骤:
步骤11:在starrocks数据库中创建emp的表,包含emp_pk字段,类型为int型。并向emp表中随机插入一定数据量的数据。
步骤2:生成器通过随机测试读取表结构和表字段,随机生成的第一查询语句为:select emp_pk from emp where emp_pk>100;(意为将emp表中所有emp_pk字段值>100的行返回,仅返回该行的emp_pk列);并将第一查询语句发送至突变器。
步骤3:突变器通过等价转换规则,会在该第一查询语句中增加group by emp_pk,得到第二查询语句。因为自身emp_pk列作为主键列,那么针对这列的group by是可以被优化器优化掉的,即,加group by的第二查询语句,与不加group by的第一查询语句是语义等价的。
步骤4:将生成的第一查询语句和第二查询语句发给验证器执行,得到两个性能耗时,第一查询语句为25毫秒,第二查询语句为75ms,二者性能耗时差别较大,因此,确定第一数据库存在性能缺陷。
图3所示为另一种性能测试示例,具体包括以下步骤:
步骤1:在StarRocks数据库中创建dept表和emp的表。
步骤2:向emp和dept表中随机插入一定数据量的数据。
步骤3:生成器通过随机测试读取表结构和表字段,随机生成第一查询语句。将两个表关联(join),并过滤掉name不等于“ACCT”的行。
步骤4:通过等价转换规则,在该第一查询语句中增加谓词IS TRUE的条件,得到第二查询语句。其中,谓词返回结果有三种:TRUE/FALSE/IS NULL,且name列是非NULL列,那么两个查询语句是语义等价的。
步骤5:将生成的第一查询语句和第二查询语句发给验证器执行,得到两个性能耗时,第一查询语句为75毫秒,第二查询语句为238ms,二者性能耗时差别较大,因此,确定第一数据库存在性能缺陷。
本申请实施例中,首先,基于第一数据库中待测试的预先导入了预设数据量的数据的目标数据表,生成第一查询语句,并基于第一查询语句确定与其等价的第二查询语句;然后,基于第一数据库分别执行第一查询语句和第二查询语句和第二查询语句是逻辑等价的语句,得到执行第一查询语句的第一执行时间和执行第二查询语句的第二执行时间;由于第一查询语句和第二查询语句是逻辑等价的语句,理论上第一数据库的优化器对二者进行优化后可以将第一查询语句和第二查询语句生成相同的物理计划,即二者具有相同的查询耗时(即执行时间),若第一执行时间和第二执行时间的差值大于预设阈值,则意味着优化器的优化过程出现问题,因此可以确定第一数据库存在性能缺陷。如此,实现对数据库的性能测试,无需人为进行测试,提高测试效率。
在本申请又一实施例中,所述S102,具体可以包括以下步骤:
在多个等价转换规则中,随机选取任一等价转换规则作为目标等价转换规则;利用所述目标等价转换规则对所述第一查询语句进行等价转换,得到所述第二查询语句。
在本申请实施例中,可以利用动态数据管理框架Apache Calcite对第一查询语句进行parse、validate、optimize等操作,生成第一查询语句对应的Physical Plan(物理计划)。进而,随机选取一个等价转换规则重写该Physical Plan,得到第二查询语句。如此,可以实现对第一查询语句的等价转换。
需要知道的是,针对每个第一查询语句,可以重复执行“在多个等价转换规则中,随机选取任一等价转换规则作为目标等价转换规则;利用所述目标等价转换规则对所述第一查询语句进行等价转换,得到所述第二查询语句”的步骤,从而得到利用不同等价转换规则转换的第二查询语句,针对每个第二查询语句,执行S103-S104。
在本申请又一实施例中,所述方法还可以包括以下步骤:
步骤一,在所述第一执行时间和所述第二执行时间的差值大于预设阈值时,基于所述第一查询语句、所述第二查询语句及所述目标等价转换规则,生成缺陷信息;
步骤二,将所述缺陷信息记录至所述第一数据库对应的性能报告模板中,得到所述第一数据库对应的第一性能报告。
在本申请实施例中,在第一执行时间和第二执行时间的差值大于预设阈值时,意味着第一数据库存在性能缺陷,此时,可以基于第一查询语句、第二查询语句及目标等价转换规则,生成缺陷信息,并将缺陷信息记录至第一数据库对应的性能报告模板中,得到第一数据库对应的第一性能报告,从而方便用户查看。
在本申请又一实施例中,如图4所示,所述方法还可以包括以下步骤:
S401,确定所述第一数据库对应的第二数据库,以及,所述第一数据库和所述第二数据库对应的至少一个场景维度。
第二数据库,可以为第一数据库对应的不同版本的数据库,也可以为第一数据库的竞品数据库。
在本申请实施例中,可以预先梳理第一数据库和第二数据库的不同查询场景,即,场景维度,例如,Join(关联数据库表)场景或group by(分组)场景,针对每个场景维度整理查询语句测试集,测试集中可以包括该场景维度下的多个查询语句。
应用中,场景维度可以划分为19个,包括:column_expr_predicate;groupby;hive_tpcds;join;scan;ssb;taxi;test_;tpch;Yandex;Express;hive_ssb_flat;hive_tpch;low_cardinality;sort;ssb-flat;test_ssb;tpcds;window。
S402,针对至少一个所述场景维度中的任一场景维度,利用所述场景维度对应的查询语句测试集,分别对所述第一数据库和所述第二数据库进行测试,得到第一测试结果和第二测试结果。
S403,基于所述第一测试结果和所述第二测试结果,确定所述场景维度下,所述第一数据库相对于所述第二数据库的性能数据。
以下对S402-S403进行统一说明:
第一测试结果和第二测试结果,可以为执行时间。
性能数据,例如执行时间相对第二数据库快20%,或者,相对于第二数据库性能优,或者,相对于第二数据库性能差等。
在本申请实施例中,针对每个场景维度,可以利用该场景维度对应的查询语句测试集,分别对第一数据库和第二数据库进行测试,得到该场景维度下二者的执行时间,从而确定该场景维度下第一数据库相对于第二数据库的性能数据。如此,可以实现在不同测试场景下对两个或多个数据库进行性能表现的对比。
作为一实施例,所述利用所述场景维度对应的查询语句测试集,分别对所述第一数据库和所述第二数据库进行测试,得到第一测试结果和第二测试结果,具体可以包括以下步骤:
在所述查询语句测试集中确定所述第一数据库对应的第一测试子集,将所述第一测试子集发送到所述第一数据库,以使所述第一数据库在预设并发度和预设并行度下执行所述第一测试子集,得到所述第一测试结果;
以及,
在所述查询语句测试集中确定所述第二数据库对应的第二测试子集,将所述第二测试子集发送到所述第二数据库,以使所述第二数据库在所述预设并发度和所述预设并行度下执行所述第二测试子集,得到所述第二测试结果。
如此,针对每个测试场景,可以通过设置不同的并行度和并发度,来实现对该并行度和并发度下两个或多个数据库的性能表现的对比。
在本申请又一实施例中,所述方法还可以包括以下步骤:
基于所述性能数据生成所述第一数据库相对于所述第二数据库的第二性能报告。
其中,第二性能报告中可以包括每个场景维度下第一数据库相对于第二数据库的性能数据,还可以包括第一测试结果和第二测试结果。如此可以方便查看第一数据库相对于第二数据库的性能表现。
在本申请又一实施例中,可以将第一性能报告和第二性能报告作为一个报告进行展示。
在本申请又一实施例中,可以将第一数据库的测试数据,包括第一执行时间、第二执行时间、第一测试结果、第二测试结果及相对于第二数据库的性能数据保存到mysql数据库中,通过读取mysql数据库的测试数据,生成第一性能报告和第二性能报告。
具体的,使用peewee将测试数据保存到mysql的表中;提供访问接口,来读取数据库中的表数据,并进行封装,返回给报告生成模块用于生成报告,以进行报告展示。其中,可以将测试书数据封装成excel,用于进行离线展示;或者,将测试书数据封装成html形式,用于进行在线展示。
基于相同的技术构思,本申请实施例还提供了一种性能测试装置,如图5所示,该装置包括:
获取模块501,用于获取第一数据库中待测试的目标数据表,其中,所述目标数据表中预先导入了预设数据量的数据;
生成模块502,用于基于所述目标数据表生成第一查询语句,以及,基于所述第一查询语句确定第二查询语句,其中,所述第二查询语句为所述第一查询语句的等价语句;
执行模块503,用于基于所述第一数据库分别执行所述第一查询语句和所述第二查询语句,得到执行所述第一查询语句的第一执行时间和执行所述第二查询语句的第二执行时间;
确定模块504,用于在所述第一执行时间和所述第二执行时间的差值大于预设阈值时,确定所述第一数据库存在性能缺陷。
在一个可能的实施方式中,所述生成模块,具体用于:
获取所述目标数据表的元信息,基于所述元信息生成多个查询语句,将多个所述查询语句中的任一查询语句确定为所述第一查询语句。
在一个可能的实施方式中,所述生成模块,还用于:
在多个等价转换规则中,随机选取任一等价转换规则作为目标等价转换规则;
利用所述目标等价转换规则对所述第一查询语句进行等价转换,得到所述第二查询语句。
在一个可能的实施方式中,所述装置还包括记录模块,用于:
在所述第一执行时间和所述第二执行时间的差值大于预设阈值时,基于所述第一查询语句、所述第二查询语句及所述目标等价转换规则,生成缺陷信息;
将所述缺陷信息记录至所述第一数据库对应的性能报告模板中,得到所述第一数据库对应的第一性能报告。
在一个可能的实施方式中,所述装置还包括性能数据确定模块,用于:
确定所述第一数据库对应的第二数据库,以及,所述第一数据库和所述第二数据库对应的至少一个场景维度;
针对至少一个所述场景维度中的任一场景维度,利用所述场景维度对应的查询语句测试集,分别对所述第一数据库和所述第二数据库进行测试,得到第一测试结果和第二测试结果;
基于所述第一测试结果和所述第二测试结果,确定所述场景维度下,所述第一数据库相对于所述第二数据库的性能数据。
在一个可能的实施方式中,所述性能数据确定模块,具体用于:
在所述查询语句测试集中确定所述第一数据库对应的第一测试子集,将所述第一测试子集发送到所述第一数据库,以使所述第一数据库在预设并发度和预设并行度下执行所述第一测试子集,得到所述第一测试结果;
以及,
在所述查询语句测试集中确定所述第二数据库对应的第二测试子集,将所述第二测试子集发送到所述第二数据库,以使所述第二数据库在所述预设并发度和所述预设并行度下执行所述第二测试子集,得到所述第二测试结果。
在一个可能的实施方式中,所述装置还包括报告生成模块,用于:
基于所述性能数据生成所述第一数据库相对于所述第二数据库的第二性能报告。
本申请实施例中,首先,基于第一数据库中待测试的预先导入了预设数据量的数据的目标数据表,生成第一查询语句,并基于第一查询语句确定与其等价的第二查询语句;然后,基于第一数据库分别执行第一查询语句和第二查询语句和第二查询语句是逻辑等价的语句,得到执行第一查询语句的第一执行时间和执行第二查询语句的第二执行时间;由于第一查询语句和第二查询语句是逻辑等价的语句,理论上第一数据库的优化器对二者进行优化后可以将第一查询语句和第二查询语句生成相同的物理计划,即二者具有相同的查询耗时(即执行时间),若第一执行时间和第二执行时间的差值大于预设阈值,则意味着优化器的优化过程出现问题,因此可以确定第一数据库存在性能缺陷。如此,实现对数据库的性能测试,无需人为进行测试,提高测试效率。
基于相同的技术构思,本申请实施例还提供了一种电子设备,如图6所示,包括处理器111、通信接口112、存储器113和通信总线114,其中,处理器111,通信接口112,存储器113通过通信总线114完成相互间的通信,
存储器113,用于存放计算机程序;
处理器111,用于执行存储器113上所存放的程序时,实现如下步骤:
获取第一数据库中待测试的目标数据表,其中,所述目标数据表中预先导入了预设数据量的数据;
基于所述目标数据表生成第一查询语句,以及,基于所述第一查询语句确定第二查询语句,其中,所述第二查询语句为所述第一查询语句的等价语句;
基于所述第一数据库分别执行所述第一查询语句和所述第二查询语句,得到执行所述第一查询语句的第一执行时间和执行所述第二查询语句的第二执行时间;
在所述第一执行时间和所述第二执行时间的差值大于预设阈值时,确定所述第一数据库存在性能缺陷。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一性能测试方法的步骤。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一性能测试方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种性能测试方法,其特征在于,所述方法包括:
获取第一数据库中待测试的目标数据表,其中,所述目标数据表中预先导入了预设数据量的数据;
基于所述目标数据表生成第一查询语句,以及,基于所述第一查询语句确定第二查询语句,其中,所述第二查询语句为所述第一查询语句的等价语句;
基于所述第一数据库分别执行所述第一查询语句和所述第二查询语句,得到执行所述第一查询语句的第一执行时间和执行所述第二查询语句的第二执行时间;
在所述第一执行时间和所述第二执行时间的差值大于预设阈值时,确定所述第一数据库存在性能缺陷。
2.根据权利要求1所述的方法,其特征在于,所述基于所述目标数据表生成第一查询语句,包括:
获取所述目标数据表的元信息,基于所述元信息生成多个查询语句,将多个所述查询语句中的任一查询语句确定为所述第一查询语句。
3.根据权利要求1所述的方法,其特征在于,所述基于所述第一查询语句确定第二查询语句,包括:
在多个等价转换规则中,随机选取任一等价转换规则作为目标等价转换规则;
利用所述目标等价转换规则对所述第一查询语句进行等价转换,得到所述第二查询语句。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在所述第一执行时间和所述第二执行时间的差值大于预设阈值时,基于所述第一查询语句、所述第二查询语句及所述目标等价转换规则,生成缺陷信息;
将所述缺陷信息记录至所述第一数据库对应的性能报告模板中,得到所述第一数据库对应的第一性能报告。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述第一数据库对应的第二数据库,以及,所述第一数据库和所述第二数据库对应的至少一个场景维度;
针对至少一个所述场景维度中的任一场景维度,利用所述场景维度对应的查询语句测试集,分别对所述第一数据库和所述第二数据库进行测试,得到第一测试结果和第二测试结果;
基于所述第一测试结果和所述第二测试结果,确定所述场景维度下,所述第一数据库相对于所述第二数据库的性能数据。
6.根据权利要求5所述的方法,其特征在于,所述利用所述场景维度对应的查询语句测试集,分别对所述第一数据库和所述第二数据库进行测试,得到第一测试结果和第二测试结果,包括:
在所述查询语句测试集中确定所述第一数据库对应的第一测试子集,将所述第一测试子集发送到所述第一数据库,以使所述第一数据库在预设并发度和预设并行度下执行所述第一测试子集,得到所述第一测试结果;
以及,
在所述查询语句测试集中确定所述第二数据库对应的第二测试子集,将所述第二测试子集发送到所述第二数据库,以使所述第二数据库在所述预设并发度和所述预设并行度下执行所述第二测试子集,得到所述第二测试结果。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
基于所述性能数据生成所述第一数据库相对于所述第二数据库的第二性能报告。
8.一种性能测试装置,其特征在于,所述装置包括:
获取模块,用于获取第一数据库中待测试的目标数据表,其中,所述目标数据表中预先导入了预设数据量的数据;
生成模块,用于基于所述目标数据表生成第一查询语句,以及,基于所述第一查询语句确定第二查询语句,其中,所述第二查询语句为所述第一查询语句的等价语句;
执行模块,用于基于所述第一数据库分别执行所述第一查询语句和所述第二查询语句,得到执行所述第一查询语句的第一执行时间和执行所述第二查询语句的第二执行时间;
确定模块,用于在所述第一执行时间和所述第二执行时间的差值大于预设阈值时,确定所述第一数据库存在性能缺陷。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-7任一所述的方法步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210787342.7A CN115203173A (zh) | 2022-07-04 | 2022-07-04 | 性能测试方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210787342.7A CN115203173A (zh) | 2022-07-04 | 2022-07-04 | 性能测试方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115203173A true CN115203173A (zh) | 2022-10-18 |
Family
ID=83578474
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210787342.7A Pending CN115203173A (zh) | 2022-07-04 | 2022-07-04 | 性能测试方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115203173A (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111290929A (zh) * | 2020-02-10 | 2020-06-16 | 珠海图思科软件有限公司 | 一种等价sql语句性能的测试方法、计算机装置及计算机可读存储介质 |
-
2022
- 2022-07-04 CN CN202210787342.7A patent/CN115203173A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111290929A (zh) * | 2020-02-10 | 2020-06-16 | 珠海图思科软件有限公司 | 一种等价sql语句性能的测试方法、计算机装置及计算机可读存储介质 |
Non-Patent Citations (1)
Title |
---|
肖盼 等: "基于SQL语言执行效能的关系数据库性能测试研究", 《计算机与数字工程》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110795455B (zh) | 依赖关系解析方法、电子装置、计算机设备及可读存储介质 | |
WO2020233330A1 (zh) | 批量测试方法、装置及计算机可读存储介质 | |
US10452625B2 (en) | Data lineage analysis | |
CN111722839B (zh) | 一种代码生成方法、装置、电子设备及存储介质 | |
CN108388509B (zh) | 一种软件测试方法、计算机可读存储介质及终端设备 | |
CN111522728A (zh) | 自动化测试用例的生成方法、电子设备及可读存储介质 | |
US20160299903A1 (en) | Path analysis method and apparatus | |
US10339035B2 (en) | Test DB data generation apparatus | |
CN110737594A (zh) | 自动生成测试用例的数据库标准符合性测试方法及装置 | |
CN112328499A (zh) | 一种测试数据生成方法、装置、设备及介质 | |
CN114328612A (zh) | 查询优化器的数据处理方法、装置及电子设备 | |
CN117271481B (zh) | 数据库自动优化方法及设备 | |
CN111125199A (zh) | 一种数据库访问方法、装置及电子设备 | |
CN109947797B (zh) | 一种数据检查装置及方法 | |
CN113220597A (zh) | 测试方法、测试装置、电子设备及存储介质 | |
CN108334565A (zh) | 一种数据混合存储结构、数据存储查询方法、终端及介质 | |
CN116204396A (zh) | 一种针对分析型数据库性能的测试方法和装置 | |
CN115757174A (zh) | 一种数据库的差异检测方法及装置 | |
CN115203173A (zh) | 性能测试方法、装置、电子设备及存储介质 | |
CN112463785B (zh) | 一种数据质量监控方法、装置、电子设备及存储介质 | |
CN114860759A (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN113360553B (zh) | 一种数据冷热程度评估方法及服务器 | |
CN109582676B (zh) | 电力数据处理方法、装置、计算机设备和存储介质 | |
CN116431448A (zh) | 一种执行代价的评估方法、装置及电子设备 | |
CN112035513A (zh) | Sql语句性能优化方法、装置、终端及存储介质 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20221018 |
|
RJ01 | Rejection of invention patent application after publication |