CN110287114B - 一种数据库脚本性能测试的方法及装置 - Google Patents
一种数据库脚本性能测试的方法及装置 Download PDFInfo
- Publication number
- CN110287114B CN110287114B CN201910562575.5A CN201910562575A CN110287114B CN 110287114 B CN110287114 B CN 110287114B CN 201910562575 A CN201910562575 A CN 201910562575A CN 110287114 B CN110287114 B CN 110287114B
- Authority
- CN
- China
- Prior art keywords
- database
- information
- table information
- abstract
- statement
- 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.)
- Active
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/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/21—Design, administration or maintenance of databases
- G06F16/217—Database tuning
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)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及金融科技(Fintech)领域,并公开了一种数据库脚本性能测试的方法及装置,该方法包括获取线上生产数据库的表信息、测试数据库的表信息、测试过程中的数据库脚本信息,对数据库脚本信息中的语句进行预处理,得到数据库脚本信息对应的抽象化语句,确定抽象化语句的执行频次,根据生产数据库的表信息和/或测试数据库的表信息、数据库脚本信息对应的抽象化语句及抽象化语句的执行计划,确定抽象化语句的消耗,根据抽象化语句的消耗和抽象化语句的执行频次,确定出数据库脚本的性能指标。由于结合了线上生产数据库的表信息和测试数据库的表信息来进行数据库脚本的性能测试,可以节省测试环境造数或准备准生产环境的人力及资源开销。
Description
技术领域
本发明实施例涉及金融科技(Fintech)领域,尤其涉及一种数据库脚本性能测试的方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术(如大数据、分布式、区块链(Blockchain)、人工智能等)应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,性能测试技术也不例外,但由于金融、支付行业的安全性、实时性要求,也对技术提出的更高的要求。
目前,银行/金融机构在进行数据库脚本性能测试时,通常有以下两种形式:第一种为银行/金融机构通过在测试环境造数的方式来模拟实际的线上生产数据库的数据。这种方案的缺点在于造数过程的时间开销,同时也必然加大测试环境的资源需求,数据量大了测试资源就需要扩充,数据量小了可能无法达到性能测试的数据需求。第二种为银行/金融机构通过线上生产数据库的数据副本,搭建一套准生产环境数据库用作性能测试使用。这种方案的缺点在与资源的需求上,对银行/金融机构的数据库资源需求会产生翻倍,造成资源紧缺。
发明内容
本发明实施例提供一种数据库脚本性能测试的方法及装置,用以节约测试环境造数或准备准生产环境的人力及资源开销。
第一方面,本发明实施例提供的一种数据库脚本性能测试的方法,包括:
获取线上生产数据库的表信息、测试数据库的表信息以及所述测试数据库测试过程中的数据库脚本信息;
对所述数据库脚本信息中的语句进行预处理,得到所述数据库脚本信息对应的抽象化语句;并确定出所述抽象化语句的执行频次;
根据所述生产数据库的表信息和/或所述测试数据库的表信息、所述数据库脚本信息对应的抽象化语句以及所述抽象化语句的执行计划,确定所述抽象化语句的消耗;
根据所述抽象化语句的消耗和所述抽象化语句的执行频次,确定出所述数据库脚本的性能指标。
上述技术方案中,由于结合了线上生产数据库的表信息和测试数据库的表信息来进行数据库脚本的性能测试,从而得到数据库脚本的性能指标,用于指示判别脚本优化的优先级,可以节省测试环境造数的人力资源以及降低准备准生产环境的资源开销。
可选的,所述对所述数据库脚本信息中的语句进行预处理,包括:
将所述数据库脚本信息的语句中的与实际业务相关的信息删除。
可选的,所述抽象化语句的消耗包括当前消耗和预估消耗;所述生产数据库的表信息包括数据量信息、索引信息、索引区分度信息、数据增长趋势;所述测试数据库的表信息包括数据量信息、索引信息、索引区分度信息、数据增长趋势;
所述根据所述生产数据库的表信息和/或所述测试数据库的表信息、所述数据库脚本信息对应的抽象化语句以及所述抽象化语句的执行计划,确定所述抽象化语句的消耗,包括:
对于存在生产数据库的表信息的抽象化语句,将生产数据库的表信息中的数据量信息和/或索引信息和/或索引区分度信息代入所述存在生产数据库的表信息的抽象化语句的执行计划,确定出所述存在生产数据库的表信息的抽象化语句的当前消耗;以及结合生产数据库的表信息中的数据增长趋势将预估的近期数据统计信息代入所述存在生产数据库的表信息的抽象化语句的执行计划,确定出所述存在生产数据库的表信息的抽象化语句的预估消耗;
对于不存在生产数据库的表信息的抽象化语句,将所述不存在生产数据库的表信息的抽象化语句对应的测试数据库的表信息中的数据量信息和/或索引信息和/或索引区分度信息按照预设比例进行转换,将转换后的数据量信息和/或索引信息和/或索引区分度信息代入所述不存在生产数据库的表信息的抽象化语句的执行计划,确定出所述不存在生产数据库的表信息的抽象化语句的当前消耗;以及结合所述不存在生产数据库的表信息的抽象化语句对应的测试数据库的表信息中的数据增长趋势将预估的近期数据统计信息代入所述不存在生产数据库的表信息的抽象化语句的执行计划,确定出所述不存在生产数据库的表信息的抽象化语句的预估消耗。
可选的,所述根据所述抽象化语句的消耗和所述抽象化语句的执行频次,确定出所述数据库脚本的性能指标,包括:
根据所述抽象化语句的消耗和消耗阈值,确定出所述抽象化语句的转换后消耗;
根据所述抽象化语句的执行频次和频次阈值,确定出所述抽象化语句的转换后频次;
根据所述抽象化语句的消耗、所述抽象化语句的执行频次、所述抽象化语句的转换后消耗和所述抽象化语句的转换后频次,进行四象限分类,得到所述抽象化语句的性能指标。
可选的,在所述确定出所述数据库脚本的性能指标之后,还包括:
若还存在数据核对状态为核对失败的同步信息,则根据所述数据核对状态为核对失败的同步信息中的时间分片信息,重新从所述联机处理系统的数据库中读取数据,插入到所述批量处理系统的数据库中,并更新所述补充处理状态根据所述数据库脚本的性能指标、所述数据库的特征、所述生产数据库的表信息、所述测试数据库的表信息和所述抽象化语句的执行频次,确定出所述数据库脚本的优化方案。
第二方面,本发明实施例提供一种数据库脚本性能测试的装置,包括:
获取单元,用于获取线上生产数据库的表信息、测试数据库的表信息以及所述测试数据库测试过程中的数据库脚本信息;
处理单元,用于对所述数据库脚本信息中的语句进行预处理,得到所述数据库脚本信息对应的抽象化语句;并确定出所述抽象化语句的执行频次;根据所述生产数据库的表信息和/或所述测试数据库的表信息、所述数据库脚本信息对应的抽象化语句以及所述抽象化语句的执行计划,确定所述抽象化语句的消耗;根据所述抽象化语句的消耗和所述抽象化语句的执行频次,确定出所述数据库脚本的性能指标。
可选的,所述处理单元具体用于:
将所述数据库脚本信息的语句中的与实际业务相关的信息删除。
可选的,所述抽象化语句的消耗包括当前消耗和预估消耗;所述生产数据库的表信息包括数据量信息、索引信息、索引区分度信息、数据增长趋势;所述测试数据库的表信息包括数据量信息、索引信息、索引区分度信息、数据增长趋势;
所述处理单元具体用于:
对于存在生产数据库的表信息的抽象化语句,将生产数据库的表信息中的数据量信息和/或索引信息和/或索引区分度信息代入所述存在生产数据库的表信息的抽象化语句的执行计划,确定出所述存在生产数据库的表信息的抽象化语句的当前消耗;以及结合生产数据库的表信息中的数据增长趋势将预估的近期数据统计信息代入所述存在生产数据库的表信息的抽象化语句的执行计划,确定出所述存在生产数据库的表信息的抽象化语句的预估消耗;
对于不存在生产数据库的表信息的抽象化语句,将所述不存在生产数据库的表信息的抽象化语句对应的测试数据库的表信息中的数据量信息和/或索引信息和/或索引区分度信息按照预设比例进行转换,将转换后的数据量信息和/或索引信息和/或索引区分度信息代入所述不存在生产数据库的表信息的抽象化语句的执行计划,确定出所述不存在生产数据库的表信息的抽象化语句的当前消耗;以及结合所述不存在生产数据库的表信息的抽象化语句对应的测试数据库的表信息中的数据增长趋势将预估的近期数据统计信息代入所述不存在生产数据库的表信息的抽象化语句的执行计划,确定出所述不存在生产数据库的表信息的抽象化语句的预估消耗。
可选的,所述处理单元具体用于:
根据所述抽象化语句的消耗和消耗阈值,确定出所述抽象化语句的转换后消耗;
根据所述抽象化语句的执行频次和频次阈值,确定出所述抽象化语句的转换后频次;
根据所述抽象化语句的消耗、所述抽象化语句的执行频次、所述抽象化语句的转换后消耗和所述抽象化语句的转换后频次,进行四象限分类,得到所述抽象化语句的性能指标。
可选的,所述处理单元还用于:
在所述确定出所述数据库脚本的性能指标之后,根据所述数据库脚本的性能指标、所述数据库的特征、所述生产数据库的表信息、所述测试数据库的表信息和所述抽象化语句的执行频次,确定出所述数据库脚本的优化方案。
第三方面,本发明实施例还提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述数据库脚本性能测试的方法。
第四方面,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述数据库脚本性能测试的方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种系统架构的示意图;
图2为本发明实施例提供的一种数据库脚本性能测试的方法的流程示意图;
图3为本发明实施例提供的一种脚本信息的示意图;
图4为本发明实施例提供的一种抽象化语句的示意图;
图5为本发明实施例提供的一种执行计划的示意图;
图6为本发明实施例提供的一种四象限分布的示意图;
图7为本发明实施例提供的一种数据库脚本性能测试的装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1示例性的示出了本发明实施例所适用的一种系统架构,该系统架构可以为银行/金融机构用于数据库脚本测试的服务器100,该服务器100可以包括数据库统计信息采集模块110、脚本语句捕获模块120、语句分析模块130和报表管理模块140。
其中,数据库统计信息采集模块110可以采集银行/金融机构的数据库统计信息,也就是表信息,包括表字段信息、数据量信息、索引信息、索引区分度信息和数据增长趋势等。例如,数据库统计信息采集模块110可以采集银行/金融机构的线上生产数据库的表信息和测试数据库的表信息。
脚本语句捕获模块120可以捕获测试环境下银行/金融机构的数据库测试过程中执行的语句信息,对捕获的语句进行抽象化,归类并统计频次。
语句分析模块130可以结合语句执行计划及银行/金融机构的数据库统计信息来计算语句的消耗。
报表管理模块140可以结合语句频次信息和语句的消耗,进行四象限分类。并生成相关语句性能测试报表。
需要说明的是,上述图1所示的结构仅是一种示例,本发明实施例对此不做限定。
基于上述描述,图2示例性的示出了本发明实施例提供的一种数据库脚本性能测试的方法的流程,该流程可以由数据库脚本性能测试的装置执行,该装置可以位于上述银行/金融机构的服务器100内,也可以是该银行/金融机构的服务器100。
需要说明的是,下面在描述数据库脚本性能测试的流程中,将以SQL数据库为例,涉及的语句为SQL语句。本发明实施例仅是示例作用,并不限于该SQL数据库。
如图2所示,该流程具体包括:
步骤201,获取线上生产数据库的表信息、测试数据库的表信息以及所述测试数据库测试过程中的数据库脚本信息。
在具体应用时,可以通过数据库统计信息采集模块110来采集线上生产数据库的表信息,以及采集测试数据库的表信息。通过脚本语句捕获模块120来捕获测试数据库测试过程中的数据库脚本信息,脚本信息包括大量的语句信息。需要说明的是,采集线上生成数据库的表信息时,可以采集生产数据库的备库的表信息。在本发明实施例中,表信息可以包括表字段信息、数据量信息、索引信息、索引区分度信息和数据增长趋势等信息。
步骤202,对所述数据库脚本信息中的语句进行预处理,得到所述数据库脚本信息对应的抽象化语句;并确定出所述抽象化语句的执行频次。
当脚本语句捕获模块120捕获到数据库的脚本信息之后,就可以将数据库脚本信息的语句中的与实际业务相关的信息删除,保留执行计划分析需要的主干信息,相当于对语句进行抽象化处理。例如可以删除where条件中的数值信息,使得脚本只保留执行计划分析需要的主干信息,剩下的就是抽象化语句。
举例来说,通过脚本语句捕获模块120捕获的SQL脚本信息可以如图3所示。在图3中,SQL语句的组成中,影响SQL语句执行计划的要素包括From关键字后的表名(或子查询),where条件后的字段信息及字段的先后排序,Select关键字后的简单的字段名(最常用的),Update语句中set关键词后常量数据及where关键字后的常量数据这块是不影响执行计划的,那么将上面图3中的数据进行抽象化预处理后,得到的SQL抽象化语句可以如图4所示。
然后将图4所示的SQL抽象化语句进行分类,按照执行计划依赖因素来统计,可以将图4所示的5个抽象化语句同一为1类,如表1所示。完成SQL抽象化语句分类之后,按照出现的次数统计出SQL抽象化语句的执行频次,并将该SQL抽象化语句及其执行频次登记在表中。
表1
步骤203,根据所述生产数据库的表信息和/或所述测试数据库的表信息、所述数据库脚本信息对应的抽象化语句以及所述抽象化语句的执行计划,确定所述抽象化语句的消耗。
本发明实施例中,抽象化语句的消耗包括当前消耗和预估消耗。在确定该抽象化语句的消耗时,具体可以为:对于存在生产数据库的表信息的抽象化语句,将生产数据库的表信息中的数据量信息和/或索引信息和/或索引区分度信息代入存在生产数据库的表信息的抽象化语句的执行计划,确定出存在生产数据库的表信息的抽象化语句的当前消耗。以及结合生产数据库的表信息中的数据增长趋势将预估的近期数据统计信息代入存在生产数据库的表信息的抽象化语句的执行计划,确定出存在生产数据库的表信息的抽象化语句的预估消耗。
对于不存在生产数据库的表信息的抽象化语句,将不存在生产数据库的表信息的抽象化语句对应的测试数据库的表信息中的数据量信息和/或索引信息和/或索引区分度信息按照预设比例进行转换,将转换后的数据量信息和/或索引信息和/或索引区分度信息代入不存在生产数据库的表信息的抽象化语句的执行计划,确定出不存在生产数据库的表信息的抽象化语句的当前消耗。以及结合不存在生产数据库的表信息的抽象化语句对应的测试数据库的表信息中的数据增长趋势将预估的近期数据统计信息代入不存在生产数据库的表信息的抽象化语句的执行计划,确定出不存在生产数据库的表信息的抽象化语句的预估消耗。
举例来说,可以通过语句分析模块130,就SQL抽象化语句进行执行计划分析,在测试环境中对SQL抽象化语句执行SQL数据库自带的Explain命令得到SQL抽象化语句在测试环境运行的执行计划。
对于存在产数据库的表信息的SQL抽象化语句,在执行计划中代入生产数据库采集的统计信息(表信息中包括的内容),计算SQL消耗,这里可以以执行计划中的扫描行数为统计纬度进行SQL消耗统计。
根据统计的当前正在统计的SQL抽象化语句对应的生产数据库的表的数据量信息可以计算出SQL抽象化语句的当前消耗,结合数据增长趋势,将预估的近期数据统计信息代入执行计划,计算出SQL抽象化语句的预估消耗。该预估的近期数据是依据历史的表中的数据结合数据增长趋势得到的。
对于执行计划中查询类型为“ALL”的,代入统计数据的全表的数据量信息进行消耗统计。对于查询类型为“range”和“index”的,结合全表的数据量信息及索引区分度信息,换算成索引数据量信息,进行消耗统计。
例如,如图5所示的SQL抽象化语句在测试环境中的执行计划,生产数据库的表信息中统计数据如下:
a表统计信息中数据量20000,增长趋势为线性增长,一个周期增长步长为3000;
b表统计信息中数据量为50000,由于b表是主键索引,扫描数据量为1;
c表数据量为10000,增长趋势为tmpsno字段前8位的索引区分度统计均值为1000,则结合换算得到的扫描数据量为10000/1000约为10。增长趋势为曲线增长,上几个周期的斜率变化为+0.15。
将上述a、b、c三个表整体代入执行计划,可以得到SQL抽象化语句的当前消耗为:20000*1+10约为20010。
SQL抽象化语句的预估消耗为:
1周期后SQL消耗为20000+(1*3000)+(10000+10000*0.15)/1000约为23012。
3周期后SQL消耗为20000+(3*3000)+(10000*(1+0.15)^3/1000)约为29015。
对于生产上暂无数据的,根据测试数据库的表信息,按一定预设比例换算并代入计算SQL抽象化语句的消耗(包括当前消耗和预估消耗)。该预设比例可以依据经验设置。
步骤204,根据所述抽象化语句的消耗和所述抽象化语句的执行频次,确定出所述数据库脚本的性能指标。
当得到抽象化语句的消耗之后,就可以根据抽象化语句的消耗和消耗阈值,确定出抽象化语句的转换后消耗,根据抽象化语句的执行频次和频次阈值,确定出抽象化语句的转换后频次。然后根据抽象化语句的消耗、抽象化语句的执行频次、抽象化语句的转换后消耗和抽象化语句的转换后频次,进行四象限分类,得到抽象化语句的性能指标。抽象化语句的性能指标也就是四象限分类后的内容。其中,抽象化语句的当前消耗和预估消耗都分别进行四象限分类。该消耗阈值和频次阈值可以依据经验设置。
例如,假设现在有一组消耗信息如表2所示,其中,消耗阈值为20000,频次阈值为500。表2中的SQL消耗即为SQL抽象化语句的消耗。将上述表2中的数据进行四象限分类,可以得到如图6所示的SQL消耗四象限分布。其中,在对数据库脚本进行优化时,SQL消耗值为正数的是需要优化的,频次越高的优化优先级越高。
表2
SQL抽象化语句编号 | 执行频次 | SQL消耗 | 转换后频次 | 转换后消耗 |
1 | 10 | 32000 | -490 | 12000 |
2 | 150 | 30 | -350 | -19970 |
3 | 350 | 4000 | -150 | -16000 |
4 | 40 | 4001 | -460 | -15999 |
5 | 280 | 4002 | -220 | -15998 |
6 | 60 | 4003 | -440 | -15997 |
7 | 5 | 4004 | -495 | -15996 |
8 | 80 | 4005 | -420 | -15995 |
9 | 23 | 4006 | -477 | -15994 |
10 | 100 | 4007 | -400 | -15993 |
11 | 110 | 50000 | -390 | 30000 |
12 | 730 | 48000 | 230 | 28000 |
13 | 750 | 5000 | 250 | -15000 |
14 | 770 | 15000 | 270 | -5000 |
15 | 770 | 3333 | 270 | -16667 |
16 | 899 | 52000 | 399 | 32000 |
在得到抽象化语句的性能指标之后,还可以根据数据库脚本的性能指标、数据库的特征、生产数据库的表信息、测试数据库的表信息和抽象化语句的执行频次,确定出数据库脚本的优化方案。
这里主要是通过报表管理模块140,给出SQL脚本语句调整优化方案,SQL脚本语句优化现在业界已有成熟的优化实现方案,而且优化方案和业务逻辑关联较大,本发明实施例在原有优化方案的基础上,提出几点MYSQL数据库相关的特殊点及结合统计信息的脚本语句优化建议方案。
例如,1、SQL数据库查询条件的字段顺序会影响SQL语句执行消耗,根据SQL抽象化语句的主干信息,遍历查询中的不同排序组合,分别统计SQL抽象化语句的消耗,取消耗最低的排序方式标记为最优排序。并将涉及的非最优排序的SQL抽象化语句标记为待排序优化SQL语句。
2、结合生产数据库的表信息和测试数据库的表信息,得出的数据库基础统计信息中的索引信息及抽象化语句的统计信息,进行二次统计,得出每张表对应的查询条件中字段的出现次数,确定字段是否存在索引、索引类型、字段在联合索引中的位置。统计高频出现的表对应的字段,如该字段无索引,标记为可能需要优化的字段信息。
然后报表管理模块140可以整理分析结果和SQL脚本语句优化方案,生成相关SQL脚本语句性能测试报表,提交项目组进行SQL脚本语句优化。进行优化时的优先级可以为高频高消耗、低频高消耗。
需要说明的是,在具体实施过程中,可以不采集表信息中的数据增长趋势信息,这样可以节约数据库统计信息采集模块110的工作量,可以只分析当前现状的SQL语句的当前消耗。这种情况下,无法实现SQL语句的预估消耗,无法进行提前预警。
可选的,上述抽象化语句的执行频次可以不做统计,这种情况下只需对分析为高消耗的SQL抽象化语句进行全量优化。
本发明实施例表明,通过获取线上生产数据库的表信息、测试数据库的表信息、测试过程中的数据库脚本信息,对数据库脚本信息中的语句进行预处理,得到数据库脚本信息对应的抽象化语句,并确定出抽象化语句的执行频次,根据生产数据库的表信息和/或测试数据库的表信息、数据库脚本信息对应的抽象化语句以及抽象化语句的执行计划,确定抽象化语句的消耗,根据抽象化语句的消耗和所述抽象化语句的执行频次,确定出数据库脚本的性能指标。由于结合了线上生产数据库的表信息和测试数据库的表信息来进行数据库脚本的性能测试,可以节省测试环境造数或准备准生产环境的人力及资源开销。
需要说明的是,本发明实施例中的数据库脚本性能测试的流程可以应用于银行/金融机构中的各种数据库脚本性能测试中。
基于相同的技术构思,图7示例性的示出了本发明实施例提供的一种数据库脚本性能测试的装置的结构,该装置可以执行数据库脚本性能测试的流程,该装置可以位于上述服务器100内,也可以是该服务器100。
如图7所示,该装置具体包括:
获取单元701,用于获取线上生产数据库的表信息、测试数据库的表信息以及所述测试数据库测试过程中的数据库脚本信息;
处理单元702,用于对所述数据库脚本信息中的语句进行预处理,得到所述数据库脚本信息对应的抽象化语句;并确定出所述抽象化语句的执行频次;根据所述生产数据库的表信息和/或所述测试数据库的表信息、所述数据库脚本信息对应的抽象化语句以及所述抽象化语句的执行计划,确定所述抽象化语句的消耗;根据所述抽象化语句的消耗和所述抽象化语句的执行频次,确定出所述数据库脚本的性能指标。
可选的,所述处理单元702具体用于:
将所述数据库脚本信息的语句中的与实际业务相关的信息删除。
可选的,所述抽象化语句的消耗包括当前消耗和预估消耗;所述生产数据库的表信息包括数据量信息、索引信息、索引区分度信息、数据增长趋势;所述测试数据库的表信息包括数据量信息、索引信息、索引区分度信息、数据增长趋势;
所述处理单元702具体用于:
对于存在生产数据库的表信息的抽象化语句,将生产数据库的表信息中的数据量信息和/或索引信息和/或索引区分度信息代入所述存在生产数据库的表信息的抽象化语句的执行计划,确定出所述存在生产数据库的表信息的抽象化语句的当前消耗;以及结合生产数据库的表信息中的数据增长趋势将预估的近期数据统计信息代入所述存在生产数据库的表信息的抽象化语句的执行计划,确定出所述存在生产数据库的表信息的抽象化语句的预估消耗;
对于不存在生产数据库的表信息的抽象化语句,将所述不存在生产数据库的表信息的抽象化语句对应的测试数据库的表信息中的数据量信息和/或索引信息和/或索引区分度信息按照预设比例进行转换,将转换后的数据量信息和/或索引信息和/或索引区分度信息代入所述不存在生产数据库的表信息的抽象化语句的执行计划,确定出所述不存在生产数据库的表信息的抽象化语句的当前消耗;以及结合所述不存在生产数据库的表信息的抽象化语句对应的测试数据库的表信息中的数据增长趋势将预估的近期数据统计信息代入所述不存在生产数据库的表信息的抽象化语句的执行计划,确定出所述不存在生产数据库的表信息的抽象化语句的预估消耗。
可选的,所述处理单元702具体用于:
根据所述抽象化语句的消耗和消耗阈值,确定出所述抽象化语句的转换后消耗;
根据所述抽象化语句的执行频次和频次阈值,确定出所述抽象化语句的转换后频次;
根据所述抽象化语句的消耗、所述抽象化语句的执行频次、所述抽象化语句的转换后消耗和所述抽象化语句的转换后频次,进行四象限分类,得到所述抽象化语句的性能指标。
可选的,所述处理单元702还用于:
在所述确定出所述数据库脚本的性能指标之后,根据所述数据库脚本的性能指标、所述数据库的特征、所述生产数据库的表信息、所述测试数据库的表信息和所述抽象化语句的执行频次,确定出所述数据库脚本的优化方案。
基于相同的技术构思,本发明实施例还提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述数据库脚本性能测试的方法。
基于相同的技术构思,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述数据库脚本性能测试的方法。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种数据库脚本性能测试的方法,其特征在于,包括:
获取线上生产数据库的表信息、测试数据库的表信息以及所述测试数据库测试过程中的数据库脚本信息;
对所述数据库脚本信息中的语句进行预处理,得到所述数据库脚本信息对应的抽象化语句;并确定出所述抽象化语句的执行频次;
根据所述生产数据库的表信息和/或所述测试数据库的表信息、所述数据库脚本信息对应的抽象化语句以及所述抽象化语句的执行计划,确定所述抽象化语句的消耗;
根据所述抽象化语句的消耗和所述抽象化语句的执行频次,确定出所述数据库脚本的性能指标;
所述对所述数据库脚本信息中的语句进行预处理,包括:
将所述数据库脚本信息的语句中的与实际业务相关的信息删除。
2.如权利要求1所述的方法,其特征在于,所述抽象化语句的消耗包括当前消耗和预估消耗;所述生产数据库的表信息包括数据量信息、索引信息、索引区分度信息、数据增长趋势;所述测试数据库的表信息包括数据量信息、索引信息、索引区分度信息、数据增长趋势;
所述根据所述生产数据库的表信息和/或所述测试数据库的表信息、所述数据库脚本信息对应的抽象化语句以及所述抽象化语句的执行计划,确定所述抽象化语句的消耗,包括:
对于存在生产数据库的表信息的抽象化语句,将生产数据库的表信息中的数据量信息和/或索引信息和/或索引区分度信息代入所述存在生产数据库的表信息的抽象化语句的执行计划,确定出所述存在生产数据库的表信息的抽象化语句的当前消耗;以及结合生产数据库的表信息中的数据增长趋势将预估的近期数据统计信息代入所述存在生产数据库的表信息的抽象化语句的执行计划,确定出所述存在生产数据库的表信息的抽象化语句的预估消耗;
对于不存在生产数据库的表信息的抽象化语句,将所述不存在生产数据库的表信息的抽象化语句对应的测试数据库的表信息中的数据量信息和/或索引信息和/或索引区分度信息按照预设比例进行转换,将转换后的数据量信息和/或索引信息和/或索引区分度信息代入所述不存在生产数据库的表信息的抽象化语句的执行计划,确定出所述不存在生产数据库的表信息的抽象化语句的当前消耗;以及结合所述不存在生产数据库的表信息的抽象化语句对应的测试数据库的表信息中的数据增长趋势将预估的近期数据统计信息代入所述不存在生产数据库的表信息的抽象化语句的执行计划,确定出所述不存在生产数据库的表信息的抽象化语句的预估消耗。
3.如权利要求1所述的方法,其特征在于,所述根据所述抽象化语句的消耗和所述抽象化语句的执行频次,确定出所述数据库脚本的性能指标,包括:
根据所述抽象化语句的消耗和消耗阈值,确定出所述抽象化语句的转换后消耗;
根据所述抽象化语句的执行频次和频次阈值,确定出所述抽象化语句的转换后频次;
根据所述抽象化语句的消耗、所述抽象化语句的执行频次、所述抽象化语句的转换后消耗和所述抽象化语句的转换后频次,进行四象限分类,得到所述抽象化语句的性能指标。
4.如权利要求1至3任一项所述的方法,其特征在于,在所述确定出所述数据库脚本的性能指标之后,还包括:
根据所述数据库脚本的性能指标、所述数据库的特征、所述生产数据库的表信息、所述测试数据库的表信息和所述抽象化语句的执行频次,确定出所述数据库脚本的优化方案。
5.一种数据库脚本性能测试的装置,其特征在于,包括:
获取单元,用于获取线上生产数据库的表信息、测试数据库的表信息以及所述测试数据库测试过程中的数据库脚本信息;
处理单元,用于对所述数据库脚本信息中的语句进行预处理,得到所述数据库脚本信息对应的抽象化语句;并确定出所述抽象化语句的执行频次;根据所述生产数据库的表信息和/或所述测试数据库的表信息、所述数据库脚本信息对应的抽象化语句以及所述抽象化语句的执行计划,确定所述抽象化语句的消耗;根据所述抽象化语句的消耗和所述抽象化语句的执行频次,确定出所述数据库脚本的性能指标;
所述处理单元具体用于:
将所述数据库脚本信息的语句中的与实际业务相关的信息删除。
6.如权利要求5所述的装置,其特征在于,所述抽象化语句的消耗包括当前消耗和预估消耗;所述生产数据库的表信息包括数据量信息、索引信息、索引区分度信息、数据增长趋势;所述测试数据库的表信息包括数据量信息、索引信息、索引区分度信息、数据增长趋势;
所述处理单元具体用于:
对于存在生产数据库的表信息的抽象化语句,将生产数据库的表信息中的数据量信息和/或索引信息和/或索引区分度信息代入所述存在生产数据库的表信息的抽象化语句的执行计划,确定出所述存在生产数据库的表信息的抽象化语句的当前消耗;以及结合生产数据库的表信息中的数据增长趋势将预估的近期数据统计信息代入所述存在生产数据库的表信息的抽象化语句的执行计划,确定出所述存在生产数据库的表信息的抽象化语句的预估消耗;
对于不存在生产数据库的表信息的抽象化语句,将所述不存在生产数据库的表信息的抽象化语句对应的测试数据库的表信息中的数据量信息和/或索引信息和/或索引区分度信息按照预设比例进行转换,将转换后的数据量信息和/或索引信息和/或索引区分度信息代入所述不存在生产数据库的表信息的抽象化语句的执行计划,确定出所述不存在生产数据库的表信息的抽象化语句的当前消耗;以及结合所述不存在生产数据库的表信息的抽象化语句对应的测试数据库的表信息中的数据增长趋势将预估的近期数据统计信息代入所述不存在生产数据库的表信息的抽象化语句的执行计划,确定出所述不存在生产数据库的表信息的抽象化语句的预估消耗。
7.如权利要求5所述的装置,其特征在于,所述处理单元具体用于:
根据所述抽象化语句的消耗和消耗阈值,确定出所述抽象化语句的转换后消耗;
根据所述抽象化语句的执行频次和频次阈值,确定出所述抽象化语句的转换后频次;
根据所述抽象化语句的消耗、所述抽象化语句的执行频次、所述抽象化语句的转换后消耗和所述抽象化语句的转换后频次,进行四象限分类,得到所述抽象化语句的性能指标。
8.如权利要求5至7任一项所述的装置,其特征在于,所述处理单元还用于:
在所述确定出所述数据库脚本的性能指标之后,根据所述数据库脚本的性能指标、所述数据库的特征、所述生产数据库的表信息、所述测试数据库的表信息和所述抽象化语句的执行频次,确定出所述数据库脚本的优化方案。
9.一种计算设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1至4任一项所述的方法。
10.一种计算机可读非易失性存储介质,其特征在于,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行如权利要求1至4任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910562575.5A CN110287114B (zh) | 2019-06-26 | 2019-06-26 | 一种数据库脚本性能测试的方法及装置 |
PCT/CN2020/096905 WO2020259391A1 (zh) | 2019-06-26 | 2020-06-18 | 一种数据库脚本性能测试的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910562575.5A CN110287114B (zh) | 2019-06-26 | 2019-06-26 | 一种数据库脚本性能测试的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110287114A CN110287114A (zh) | 2019-09-27 |
CN110287114B true CN110287114B (zh) | 2021-06-04 |
Family
ID=68006171
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910562575.5A Active CN110287114B (zh) | 2019-06-26 | 2019-06-26 | 一种数据库脚本性能测试的方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110287114B (zh) |
WO (1) | WO2020259391A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110287114B (zh) * | 2019-06-26 | 2021-06-04 | 深圳前海微众银行股份有限公司 | 一种数据库脚本性能测试的方法及装置 |
CN112035513A (zh) * | 2020-09-02 | 2020-12-04 | 中国平安人寿保险股份有限公司 | Sql语句性能优化方法、装置、终端及存储介质 |
CN112181831A (zh) * | 2020-09-28 | 2021-01-05 | 中国平安财产保险股份有限公司 | 基于关键词的脚本性能校验方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108170775A (zh) * | 2017-12-26 | 2018-06-15 | 上海新炬网络技术有限公司 | 一种数据库sql索引动态优化方法 |
CN108388626A (zh) * | 2018-02-12 | 2018-08-10 | 平安科技(深圳)有限公司 | Sql自动优化方法、装置、计算机设备及存储介质 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7809694B2 (en) * | 2005-03-15 | 2010-10-05 | International Business Machines Corporation | Analysis of performance data from a relational database system for applications using stored procedures or SQL |
US7860899B2 (en) * | 2007-03-26 | 2010-12-28 | Oracle International Corporation | Automatically determining a database representation for an abstract datatype |
US20100306591A1 (en) * | 2009-06-01 | 2010-12-02 | Murali Mallela Krishna | Method and system for performing testing on a database system |
CN102486748B (zh) * | 2010-12-02 | 2015-07-15 | 金蝶软件(中国)有限公司 | 一种性能测试的方法及装置 |
CN103399851B (zh) * | 2013-06-25 | 2017-02-08 | 上海携程商务有限公司 | 一种结构化查询语言(sql)脚本的性能分析与预测方法与系统 |
CN103390066B (zh) * | 2013-08-08 | 2016-02-17 | 上海新炬网络信息技术有限公司 | 一种数据库全局性自动化优化预警装置及其处理方法 |
CN103617273B (zh) * | 2013-12-05 | 2016-09-14 | 用友网络科技股份有限公司 | Sql脚本对象化的方法及系统 |
CN103761080B (zh) * | 2013-12-25 | 2017-02-15 | 中国农业大学 | 一种基于SQL的MapReduce作业生成方法及系统 |
CN105760286B (zh) * | 2016-02-17 | 2018-09-07 | 中国工商银行股份有限公司 | 应用数据库动态性能检测方法及检测装置 |
CN108984374B (zh) * | 2017-06-01 | 2021-05-07 | 腾讯科技(深圳)有限公司 | 一种数据库性能的测试方法和系统 |
CN107844425A (zh) * | 2017-11-16 | 2018-03-27 | 中国银行股份有限公司 | 一种数据库语句检查方法和装置 |
CN110287114B (zh) * | 2019-06-26 | 2021-06-04 | 深圳前海微众银行股份有限公司 | 一种数据库脚本性能测试的方法及装置 |
-
2019
- 2019-06-26 CN CN201910562575.5A patent/CN110287114B/zh active Active
-
2020
- 2020-06-18 WO PCT/CN2020/096905 patent/WO2020259391A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108170775A (zh) * | 2017-12-26 | 2018-06-15 | 上海新炬网络技术有限公司 | 一种数据库sql索引动态优化方法 |
CN108388626A (zh) * | 2018-02-12 | 2018-08-10 | 平安科技(深圳)有限公司 | Sql自动优化方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110287114A (zh) | 2019-09-27 |
WO2020259391A1 (zh) | 2020-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110287114B (zh) | 一种数据库脚本性能测试的方法及装置 | |
CN105930257B (zh) | 一种确定目标测试用例的方法及装置 | |
CN111428599A (zh) | 票据识别方法、装置和设备 | |
CN105354697A (zh) | 一种基于财务科目规则库的自动在线审计方法及系统 | |
CN107766500A (zh) | 固定资产卡片的审计方法 | |
CN115358481A (zh) | 一种企业外迁预警识别的方法、系统及装置 | |
CN109242165A (zh) | 一种模型训练及基于模型训练的预测方法及装置 | |
CN113886373A (zh) | 一种数据处理方法、装置及电子设备 | |
CN109800215A (zh) | 一种对标处理的方法、装置、计算机存储介质及终端 | |
CN113672506A (zh) | 基于机器学习的动态比例测试用例排序选择方法及系统 | |
CN105573984B (zh) | 社会经济指标的识别方法及装置 | |
CN106991050A (zh) | 一种静态测试空指针引用缺陷假阳性识别方法 | |
CN111144429A (zh) | 对象分类方法及其系统、计算机系统及计算机可读介质 | |
CN115543981A (zh) | 数据质量检测方法和装置、介质、设备 | |
CN115098679A (zh) | 文本分类标注样本的异常检测方法、装置、设备及介质 | |
CN114186644A (zh) | 一种基于优化随机森林的缺陷报告严重程度预测方法 | |
CN112732549B (zh) | 基于聚类分析的测试程序分类方法 | |
CN113190666A (zh) | 一种产业知识产权分析方法、系统、设备和存储介质 | |
CN113435842A (zh) | 业务流程的处理方法和计算机设备 | |
CN112306730A (zh) | 基于历史项目伪标签生成的缺陷报告严重程度预测方法 | |
CN116303380B (zh) | 一种监测业务中的数据质量校验方法、设备及介质 | |
CN117829435B (zh) | 一种基于大数据的城市数据质量管理方法及系统 | |
CN114020794B (zh) | 一种MySQL数据库慢查询的处理方法、装置、介质和设备 | |
CN113590841B (zh) | 智能化快速审单与基于知识图谱的智能预警系统与方法 | |
CN112925856B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |