一种数据库OLTP基准性能测试方法、系统及相关组件与流程

文档序号:22124369发布日期:2020-09-04 17:00阅读:262来源:国知局
本申请涉及数据库领域,特别涉及一种数据库oltp基准性能测试方法、系统及相关组件。
背景技术
::数据库的oltp(on-linetransactionprocessing,联机事务处理)基准性能测试是对数据库的性能指标进行定量的、可复现的、可对比的测试。其作用为分析服务器在当前的配置下(包括硬件配置、os、数据库设置等)数据库的性能表现,从而确定数据库影响服务器的性能瓶颈,并根据服务器的实际要求调整服务器的配置。目前,当需要对数据库进行压力测试时,在测试过程中,需要根据测试场景的改变,手动配置大量的测试参数,对一台服务器进行压力测试的耗时量尚可评估,但是随着测试业务量的发展,如果有十台、百台服务器需要测试时,通过手动配置测试参数就需要投入很大的人力、物力,实现周期长,测试效率低下。因此,如何提供一种解决上述技术问题的方案是本领域技术人员目前需要解决的问题。技术实现要素:本申请的目的是提供一种数据库oltp基准性能测试方法、系统、电子设备及计算机可读存储介质,在测试过程中,能够直接调用与当前的压力测试场景对应的测试变量,不需要在具体的执行命令中繁杂地、重复地人工配置参数值,从而减少重复性工作、避免错误,提高测试效率。为解决上述技术问题,本申请提供了一种数据库oltp基准性能测试方法,包括:获取目标数据库对应的测试参数;对所述测试参数以全局变量形式进行定义,得到多个测试变量;从多个所述测试变量中调用与当前的压力测试场景对应的所有所述测试变量,对所述目标数据库进行压力测试,并获取当前的压力测试场景对应的测试结果;根据所有所述压力测试场景对应的测试结果得到所述目标数据库的oltp基准性能。优选的,所述对所述测试参数以全局变量形式进行定义,得到多个测试变量之后,该数据库oltp基准性能测试方法还包括:从多个所述测试变量中调用对应的测试变量进行数据准备操作,以满足多个压力测试场景的需求。优选的,所述从多个所述测试变量中调用对应的测试变量进行数据准备操作的过程包括:从多个所述测试变量中调用对应的测试变量在所述目标数据库中建立多个数据表,各个所述数据表均用于存储压力测试数据;按照多个压力测试场景的需求设置每个所述数据表的数据条数及大小。优选的,所述根据所有所述压力测试场景对应的测试结果得到所述目标数据库的oltp基准性能之后,该数据库oltp基准性能测试方法还包括:清空所有所述数据表中存储的所述压力测试数据。优选的,所述从多个所述测试变量中调用与当前的压力测试场景对应的所有所述测试变量,对所述目标数据库进行压力测试的过程具体包括:根据并发线程数从小到大的顺序确定所有所述压力测试场景的执行顺序;按所述执行顺序,从多个所述测试变量中依次调用与当前的压力测试场景对应的所有所述测试变量,对所述目标数据库进行压力测试。优选的,所述获取当前的压力测试场景对应的测试结果之后,该数据库oltp基准性能测试方法还包括:根据所有所述测试结果得到测试文件;将所述测试文件存储到预设日志目录。优选的,所述根据所有所述压力测试场景对应的测试结果得到所述目标数据库的oltp基准性能的过程具体为:在所述测试文件中获取关键参数,所述关键参数包括每秒的响应请求数、每秒处理事务数及前95%的请求的最大响应时间;将所述关键参数与目标参数进行比较,根据比较结果得到所述目标数据库的oltp基准性能。为解决上述技术问题,本申请还提供了一种数据库oltp基准性能测试系统,包括:获取模块,用于获取目标数据库对应的测试参数;定义模块,用于对所述测试参数以全局变量形式进行定义,得到多个测试变量;测试模块,用于从多个所述测试变量中调用与当前的压力测试场景对应的所有所述测试变量,对所述目标数据库进行压力测试,并获取当前的压力测试场景对应的测试结果;分析模块,用于根据所有所述压力测试场景对应的测试结果得到所述目标数据库的oltp基准性能。为解决上述技术问题,本申请还提供了一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如上文任意一项所述的数据库oltp基准性能测试方法的步骤。为解决上述技术问题,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上文任意一项所述的数据库oltp基准性能测试方法的步骤。本申请提供了一种数据库oltp基准性能测试方法,对目标数据库对应的测试参数首先以全局变量形式进行定义,得到测试变量,在后续的测试过程中,直接调用与当前的压力测试场景对应的测试变量即可,不需要在具体的执行命令中繁杂地、重复地人工配置参数值,从而减少重复性工作、避免错误,提高测试效率。本申请还提供了一种数据库oltp基准性能测试系统、电子设备及计算机可读存储介质,具有和上述数据库oltp基准性能测试方法相同的有益效果。附图说明为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本申请所提供的一种数据库oltp基准性能测试方法的步骤流程图;图2为本申请所提供的一种数据库服务器环境部署方法的步骤流程图;图3为本申请所提供的一种sysbench工具的环境部署方法的步骤流程图;图4为本申请所提供的一种数据库oltp基准性能测试系统的结构示意图。具体实施方式本申请的核心是提供一种数据库oltp基准性能测试方法、系统、电子设备及计算机可读存储介质,在测试过程中,能够直接调用与当前的压力测试场景对应的测试变量,不需要在具体的执行命令中繁杂地、重复地人工配置参数值,从而减少重复性工作、避免错误,提高测试效率。为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。请参照图1,图1为本申请所提供的一种数据库oltp基准性能测试方法的步骤流程图,该数据库oltp基准性能测试方法包括:s101:获取目标数据库对应的测试参数;具体的,本步骤的目的在于获取目标数据库对应的测试参数,这里的测试参数为后续测试执行所需的参数,具体可以包括数据库服务器连接参数、数据库测试执行参数,其中,数据库服务器连接参数包括但不限于数据库名称(mysql-db)、数据库端口号(mysql-port)、数据库服务器ip地址(mysql-host)、数据库用户(mysql-user)、用户密码(myssql-password)、数据表数量(oltp-tables-count),数据库测试执行参数包括但不限于每张数据表最大记录数(oltp-table-size)、线程数(num-threads)、测试时间(max-time)、打印报告周期(report-interval)。具体的,在执行本步骤之前,本实施例还可以包括判断数据库服务器的联通性的操作,以便正常获取到目标数据库对应的测试参数。判断数据库服务器是否启动,本实施例中主要通过数据库host、user、password三个参数属性连接数据库,然后判断版本信息,如:mysql-h$host-u$user-p$password-e"$mysql_version",若正确输出对应的版本信息,则说明数据库服务器已联通,可进行后续操作,若输出错误,则重新对数据库测试环境进行部署,提高测试效率。s102:对测试参数以全局变量形式进行定义,得到多个测试变量;具体的,本步骤的目的在于对上述测试参数以全局变量的形式进行赋值预定义,方便后续测试执行时直接进行变量调用,而不用在具体的执行命令中繁杂地、重复地书写参数值,提高测试效率。s103:从多个测试变量中调用与当前的压力测试场景对应的所有测试变量,对目标数据库进行压力测试,并获取当前的压力测试场景对应的测试结果;s104:根据所有压力测试场景对应的测试结果得到目标数据库的oltp基准性能。具体的,在对目标数据库进行测试之前,首先判断数据库服务器中是否存在目标数据库,若存在则直接进行压力测试,若不存在则根据实际需求创建目标数据库,并赋予所有用户操作该目标数据库的所有操作权限。由于s102对测试参数进行赋值预定义得到了多个测试变量,在执行本步骤时,直接从上述测试变量中,调用与当前压力测试场景对应的测试变量对目标数据库进行压力测试即可,不需要在测试执行时根据压力测试场景人工修改测试参数,提高测试效率。其中,与当前压力测试场景对应的测试变量的个数可以为1个也可以为多个。可以理解的是,为提高测试结果的可靠性,本实施例可以构造多种压力测试场景对目标数据库进行压力测试,其中,各个压力测试场景对应的并发线程数均不相同,从而为目标数据库提供不同的压力,根据获取到的各个压力测试场景对应的测试结果,对目标数据库在不同压力下的oltp性能进行综合分析,使分析结果更加全面可靠。进一步的,为提高自动化性能及测试效率,本实施例可以通过测试工具来实现上述s101~s103的操作,具体的,可以在测试工具中预先编写测试脚本,通过测试脚本实现s101~s103的操作,可以理解的是,当通过脚本来实现本实施例所提供的方案时,由于s102对参数提前进行了赋值预定义,因此,在s103中可以对测试变量直接调用,减少脚本维护量、增强脚本的通用性、可维护性及可移植性,减少重复性工作、避免错误。具体的,在执行本步骤之前,本实施例还可以包括对测试工具及数据库服务器进行测试环境部署的操作,以保证测试工具和数据库服务器的连通性。本实施例中,可以通过预先编写对应的脚本完成数据库服务器的测试环境部署以及测试工具的测试环境部署。其中,测试工具可以选择mysqlslap、sysbench等,sysbench比mysqlslap更通用、更强大,且更适合innodb存储引擎。sysbench是一个模块化的、跨平台、多线程基准测试工具,可以根据影响数据库服务器性能的各种因素来评估系统的性能,下文以sysbench工具为例对测试环境部署操作进行说明。具体的,对测试工具及数据库服务器进行测试环境部署的操作包括预制环境部署程序包的操作,环境部署程序包包括mysql工具包、sysbench工具包、依赖工具包等。具体的,参照图2,图2为本申请所提供的一种数据库服务器环境部署方法的步骤流程图,该服务器服务器环境部署方法包括:s1001:获取安装包信息s1002:判断安装包文件是否存在,若否,执行s1003,若是,执行s1004;s1003:上传安装包文件,然后执行s1001;s1004:解压安装包文件;s1005:在os环境下分配mysql的用户及用户组权限;s1006:执行mysql服务器环境自定义安装(包括basedir、datadir目录指定及my.cnf配置文件自定义)s1007:修改配置文件,包括配置/etc/init.d/mysqld;s1008:配置服务器环境变量,以便任何目录均可执行mysql命令;s1009:重新修改配置文件;s1010:设置服务开机自启动;s1011:检测mysql服务器状态,判断mysql服务器是否启动,若是,结束流程,若否,执行s1012;s1012:启动mysql服务器。可以理解的是,在实现mysql服务器的环境部署时,根据对mysql服务器安装部署业务流程及手动安装过程中所遇到的问题,形成统一的问题解决方法,最后输出mysql服务器自动化安装部署脚本,脚本中对每个固定逻辑步骤及参数配置封装成可独立方法,具体包括上述安装文件包获取、文件包类型选择、用户及用户组权限配置、程序包安装、配置文件修改、环境变量配置、服务开机自启动配置、mysql服务器状态检测等方法。参照图3,图3为本申请所提供的一种sysbench工具的环境部署方法的步骤流程图,该sysbench工具的环境部署方法包括:s2001:上传性能测试所需的封装工具包,该封装工具包包括:工具包、程序包及shellscript脚本文件;其中,工具包主要是安装sysbench所必须需的make、autoconf、automake、libtool等依赖库文件,本实施例中采用package全包的形式封装打包,程序包主要是指sysbench安装程序文件,shellscript脚本文件既是本申请中编写好的环境配置脚本又是测试执行脚本。s2002:在os当前目录检索工具包,并分别解压程序包文件到os当前目录。s2003:强制安装s2001上传的package工具全包文件,以减少安装环境的依赖性。s2004:编译、安装工具包文件;其中,安装采用标准化指定程序安装目录方法;s2005:对服务器特定程序进行标准化固定配置,以使测试脚本文件正常运行;本步骤中的标准化固定配置包括但不限于配置so库路径的指定位置。s2006:环境部署完毕后,验证环境是否完好,若是,则结束,若否,则执行s2005;本步骤中可以通过发送预设验证命令,根据接收到的反馈数据来确定sysbench工具的环境是否部署完成。在上述测试环境部署完成后,在执行步骤s101~s104的操作。可见,本实施例对目标数据库对应的测试参数首先以全局变量形式进行定义,得到测试变量,在后续的测试过程中,直接调用与当前的压力测试场景对应的测试变量即可,不需要在具体的执行命令中繁杂地、重复地人工配置参数值,从而减少重复性工作、避免错误,提高测试效率。在上述实施例的基础上:作为一种优选的实施例,对测试参数以全局变量形式进行定义,得到多个测试变量之后,该数据库oltp基准性能测试方法还包括:从多个测试变量中调用对应的测试变量进行数据准备操作,以满足多个压力测试场景的需求。具体的,在对目标数据库进行压力测试之前,还包括数据准备操作,本实施例中可以直接调用s102中得到的测试变量进行数据准备操作,不需要在具体的执行命令中繁杂地、重复地书写参数值,进一步提高测试效率。本实施例的数据准备操作包括对测试所需要的配置参数及测试所需要的压测数据进行准备,以满足各个压力测试场景的需求,避免出现在实际测试过程中,由于缺少测试数据或配置参数不合理无法满足当前的压力测试场景的需求,从而导致测试失败的情况发生,保证测试的顺利进行,进一步提高测试效率。作为一种优选的实施例,从多个测试变量中调用对应的测试变量进行数据准备操作的过程包括:从多个测试变量中调用对应的测试变量在目标数据库中建立多个数据表,各个数据表均用于存储压力测试数据;按照多个压力测试场景的需求设置每个数据表的数据条数及大小。具体的,在测试执行之前,需要在目标数据库中建立多个数据表,数据表用于存储压力测试数据,本实施例中可以直接调用与数据库服务器ip地址、端口号、数据库用户、密码对应的测试变量向数据库中创建压力测试所需要数量的数据表,提高测试效率。并对每个数据表的数据条数及大小进行设置,具体包括对数据库同一时间所支持session中max_prepared_stmt_count参数值做最大上限设置,以便支撑测试执行时的多线程的压力测试场景。其中,压力测试数据为数据准备过程中以及测试过程中生成的数据。作为一种优选的实施例,根据所有压力测试场景对应的测试结果得到目标数据库的oltp基准性能之后,该数据库oltp基准性能测试方法还包括:清空所有数据表中存储的压力测试数据。具体的,考虑到在数据准备过程以及实际压力测试过程都会向数据库中写入大量的压力测试数据,为保证后续可以重复对该目标数据库进行测试以及保证数据库的存储空间,在每次测试完毕后,本实施例还将数据表中的压力测试数据清空。作为一种优选的实施例,从多个测试变量中调用与当前的压力测试场景对应的所有测试变量,对目标数据库进行压力测试的过程具体包括:根据并发线程数从小到大的顺序确定所有压力测试场景的执行顺序;按执行顺序,从多个测试变量中依次调用与当前的压力测试场景对应的所有测试变量,对目标数据库进行压力测试。具体的,考虑到数据库在比较大的压力下可能会出现异常,因此,本实施例采用逐渐加大并发线程数的方式,对目标数据库进行压力测试,保证对数据库进行尽可能多的压力测试,提高测试数据的全面性和有效性。每种并发线程场景下分别循序执行多次,直至满足预设次数停止测试。假设第一种多线程压力测试场景包括5个并发线程,第二种多线程压力测试场景包括10个并发线程,第三种多线程压力测试场景包括15个并发线程,则依次通过上述三种多线程压力测试场景对目标数据库进行压力测试,并循环执行多次,可以理解的是,由于本实施例采用循环测试的方式,因此,每一多线程压力测试场景对应多组测试结果。作为一种优选的实施例,获取当前的压力测试场景对应的测试结果之后,该数据库oltp基准性能测试方法还包括:根据所有测试结果得到测试文件;将测试文件存储到预设日志目录。具体的,在每一压力测试场景均可以获取到对应的测试结果,保存每一多线程压力测试场景对应的测试结果到指定日志目录以便后续对测试结果进行统计分析。作为一种优选的实施例,根据所有压力测试场景对应的测试结果得到目标数据库的oltp基准性能的过程具体为:在测试文件中获取关键参数,关键参数包括每秒的响应请求数、每秒处理事务数及前95%的请求的最大响应时间;将关键参数与目标参数进行比较,根据比较结果得到目标数据库的oltp基准性能。具体的,对于测试结果的分析可以直接取测试文件的关键参数,关键参数包括每秒的响应请求数qps、每秒处理事务数tps及latency-95thpercentile,将上述关键参数与目标参数进行对比分析,从而得到目标数据库的oltp基准性能表现,以便根据目标数据库的oltp基准性能表现确定数据库影响服务器的性能瓶颈,并根据服务器的实际要求调整服务器的配置。当然,也可以在当前测试os下安装工具进行取关键测试结果值进行绘图统计分析。请参照图4,图4为本申请所提供的一种数据库oltp基准性能测试系统的结构示意图,包括:获取模块1,用于获取目标数据库对应的测试参数;定义模块2,用于对测试参数以全局变量形式进行定义,得到多个测试变量;测试模块3,用于从多个测试变量中调用与当前的压力测试场景对应的所有测试变量,对目标数据库进行压力测试,并获取当前的压力测试场景对应的测试结果;分析模块4,用于根据所有压力测试场景对应的测试结果得到目标数据库的oltp基准性能。可见,本实施例对目标数据库对应的测试参数首先以全局变量形式进行定义,得到测试变量,在后续的测试过程中,直接调用与当前的压力测试场景对应的测试变量即可,不需要在具体的执行命令中繁杂地、重复地人工配置参数值,从而减少重复性工作、避免错误,提高测试效率。作为一种优选的实施例,该数据库oltp基准性能测试系统还包括:预处理模块,用于从多个测试变量中调用对应的测试变量进行数据准备操作,以满足多个压力测试场景的需求。作为一种优选的实施例,预处理模块包括:建立单元,用于从多个测试变量中调用对应的测试变量在目标数据库中建立多个数据表,各个数据表均用于存储压力测试数据;设置单元,用于按照多个压力测试场景的需求设置每个数据表的数据条数及大小。作为一种优选的实施例,该数据库oltp基准性能测试系统还包括:清空模块,用于清空所有数据表中存储的压力测试数据。作为一种优选的实施例,从多个测试变量中调用与当前的压力测试场景对应的所有测试变量,对目标数据库进行压力测试的过程具体包括:根据并发线程数从小到大的顺序确定所有压力测试场景的执行顺序;按执行顺序,从多个测试变量中依次调用与当前的压力测试场景对应的所有测试变量,对目标数据库进行压力测试。作为一种优选的实施例,该数据库oltp基准性能测试系统还包括:保存模块,用于根据所有测试结果得到测试文件,将测试文件存储到预设日志目录。作为一种优选的实施例,分析模块4具体包括:获取单元,用于在测试文件中获取关键参数,关键参数包括每秒的响应请求数、每秒处理事务数及前95%的请求的最大响应时间;分析单元,用于将关键参数与目标参数进行比较,根据比较结果得到目标数据库的oltp基准性能。另一方面,本申请还提供了一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行计算机程序时实现如上文任意一个实施例所描述的数据库oltp基准性能测试方法的步骤。对于本申请所提供的一种电子设备的介绍请参照上述实施例,本申请在此不再赘述。本申请所提供的一种电子设备具有和上述数据库oltp基准性能测试方法相同的有益效果。为解决上述技术问题,本申请还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上文任意一个实施例所描述的数据库oltp基准性能测试方法的步骤。对于本申请所提供的一种计算机可读存储介质的介绍请参照上述实施例,本申请在此不再赘述。本申请所提供的一种计算机可读存储介质具有和上述数据库oltp基准性能测试方法相同的有益效果。还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其他实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1