CN113127312A - 用于数据库性能测试的方法、装置、电子设备及存储介质 - Google Patents

用于数据库性能测试的方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN113127312A
CN113127312A CN201911400939.6A CN201911400939A CN113127312A CN 113127312 A CN113127312 A CN 113127312A CN 201911400939 A CN201911400939 A CN 201911400939A CN 113127312 A CN113127312 A CN 113127312A
Authority
CN
China
Prior art keywords
database
performance
request
server
configuration file
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
Application number
CN201911400939.6A
Other languages
English (en)
Other versions
CN113127312B (zh
Inventor
余邵在
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kingsoft Cloud Network Technology Co Ltd
Original Assignee
Beijing Kingsoft Cloud Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Kingsoft Cloud Network Technology Co Ltd filed Critical Beijing Kingsoft Cloud Network Technology Co Ltd
Priority to CN201911400939.6A priority Critical patent/CN113127312B/zh
Publication of CN113127312A publication Critical patent/CN113127312A/zh
Application granted granted Critical
Publication of CN113127312B publication Critical patent/CN113127312B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3457Performance evaluation by simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3414Workload generation, e.g. scripts, playback

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种用于数据库性能测试的方法、装置、电子设备及计算机可读存储介质。该方法包括:对第一数据库部署测试运行环境,其中,所述第一数据库为待测试的数据库,所述测试运行环境为所述第一数据库的线上仿真环境;基于第二数据库的日志文件和配置文件生成对所述第一数据库的数据库请求,所述第二数据库为被仿真的数据库;基于所述数据库请求对处于所述线上仿真环境的第一数据库进行相应的数据处理操作;分析所述第一数据库基于所述数据处理操作产生的性能参数,以得到所述第一数据库的第一性能测试结果。本发明可以准确且方便、自动地给出数据库性能测试的评估结果。

Description

用于数据库性能测试的方法、装置、电子设备及存储介质
技术领域
本发明涉及数据库***领域,尤其涉及一种用于数据库性能测试的方法及装置。
背景技术
当一个***上线或新功能上线时,往往需要验证数据库在***上线之后,是否能够真正保证稳定性和可靠性;目前,测试人员只能通过应用端,或MySQL(MySQL是一种开放源代码的关系型数据库管理***)数据库客户端对数据库服务器在测试环境中进行压力测试,这个时候,得到的测试结果是不准确的。而且,即使发现***性能问题,也不能快速定位到是SQL(Structured Query Language,结构化查询语言)语句的性能问题还是数据库服务器的性能问题,这时,往往需要借助大量的人力,物力去分析、优化。并且,测试评估结果依赖于一线数据库运维人员的经验是否丰富。
因此,现有的用于数据库性能测试的存在测试结果不准确、人工投入成本太大的问题。
发明内容
本发明的目的在于提供一种用于数据库性能测试的方法、装置、电子设备及计算机可读存储介质,以准确且方便、自动地给出数据库性能测试的评估结果。
根据本发明的第一方面,提供了一种用于数据库性能测试的方法,包括:
对第一数据库部署测试运行环境,其中,所述第一数据库为待测试的数据库,所述测试运行环境为所述第一数据库的线上仿真环境;
基于第二数据库的日志文件和配置文件生成对所述第一数据库的数据库请求,所述第二数据库为被仿真的数据库;
基于所述数据库请求对处于所述线上仿真环境的第一数据库进行相应的数据处理操作;
分析所述第一数据库基于所述数据处理操作产生的性能参数,以得到所述第一数据库的第一性能测试结果。
可选的,所述对第一数据库部署测试运行环境,包括:
确定用于运行和测试所述第一数据库的服务器;
将所述第一数据库的安装组件及测试工具包发送给所述服务器,以使所述服务器通过安装组件安装所述第一数据库和通过所述测试工具包安装对应的测试工具;
将预设置的所述第一数据库的运行配置文件、所述服务器的运行配置文件发送至所述服务器,以使所述服务器进行运行环境配置;
获取所述第二数据库上存储的数据,以将该数据写入所述服务器上安装好的第一数据库,用于仿真数据库的线上数据;
将预设的数据库更新脚本发送至所述服务器上安装好的第一数据库;
根据所述服务器上安装的第一数据库、测试工具、配置的运行环境、仿真的线上数据以及所述数据库更新脚本确定所述第一数据库的测试运行环境。
可选的,所述方法还包括:
在所述基于第二数据库的日志文件和配置文件生成对所述第一数据库的数据库请求之前,获取第二数据库的日志文件和配置文件;
所述基于第二数据库的日志文件和配置文件生成对所述第一数据库的数据库请求,包括:
从获取到的所述第二数据库的日志文件中确定出包含有数据库读写请求的日志文件;
根据所述第二数据库的配置文件和所述包含有数据库读写请求的日志文件确定所述第一数据库的数据库请求。
可选的,所述根据所述第二数据库的配置文件和所述包含有数据库读写请求的日志文件确定所述第一数据库的数据库请求,包括:
解析所述第二数据库的配置文件,以得到所述配置文件中的用户账户信息;
从所述包含有数据库读写请求的日志文件中确定出与任一个所述用户账户信息对应的日志文件;
在确定任一所述用户账户信息对应的日志文件的命令提示符为连接符时,针对任一个所述用户的用户账户信息,基于所述日志文件中的连接符创建该用户与所述第一数据库的交互连接;以及,
在确定任一所述用户账户信息对应的日志文件的命令提示符为查询命令符时,获取所述命令提示符为查询命令符的日志文件中的数据库读写请求信息;
并将所述命令提示符为查询命令符的日志文件中的数据库读写请求信息中的数据***操作变更为数据替换操作,以形成所述数据库请求。
可选的,所述基于所述数据库请求对处于所述线上仿真环境的第一数据库进行相应的数据处理操作,包括:
基于所述用户与所述第一数据库的交互连接,将该用户对应的所述数据库请求按照预设置的并发数发送至所述线上仿真环境的第一数据库,以对所述第一数据库中的数据进行与所述数据库请求对应的数据处理操作。
可选的,所述方法还包括:
基于所述用户与所述第一数据库的交互连接,将该用户对应的所述数据库请求按照预设置的并发数发送至所述线上仿真环境的第一数据库;
对所述数据库请求进行分析,以得到所述第一数据库的请求语句评估结果;
将所述请求语句评估结果确定为所述第一数据库的第二性能测试结果。
可选的,所述方法还包括:
在分析所述第一数据库基于所述数据处理操作产生的性能参数之前,获取所述第一数据库响应所述数据库请求时产生的输入输出数据,以将所述输入输出数据确定为所述性能参数。
可选的,所述分析所述第一数据库基于所述数据处理操作产生的性能参数,以得到所述第一数据库的第一性能测试结果,包括:
根据所述性能参数、所述第一数据库的运行配置文件和所述服务器的运行配置文件,得到所述第一数据库的数据库性能评估结果;
将所述数据库性能评估结果确定为所述第一数据库的第一性能测试结果。
可选的,所述根据所述性能参数、所述第一数据库的运行配置文件和所述服务器的运行配置文件,得到所述第一数据库的数据库性能评估结果,包括:
根据所述性能参数确定所述第一数据库的待优化项;
基于所述第一数据库的运行配置文件和所述服务器的运行配置文件确定所述待优化项的优化建议信息。
可选的,所述方法还包括:
在所述分析所述第一数据库基于所述数据处理操作产生的性能参数之前,对所述性能参数进行抽样处理,以得到抽样值;
所述分析所述第一数据库基于所述数据处理操作产生的性能参数,包括:
根据所述性能参数的抽样值、所述第一数据库的运行配置文件和所述服务器的运行配置文件,得到所述第一数据库的数据库性能评估结果;
将所述数据库性能评估结果确定为所述第一数据库的第一性能测试结果。
可选的,所述对所述性能参数进行抽样处理,以得到抽样值,包括:
确定并剔除所述性能参数中的最大值和最小值;
基于已剔除最大值和最小值中剩余的所有性能参数的平均值;
以所述平均值为中值,按照性能参数的值大小将所述剩余的所有性能参数划分为两份;
选取划分后所包含的性能参数的个数较多的一份,以基于该份中的性能参数的值,确定该份中性能参数的平均值,并将该平均值确定为所述抽样值。
可选的,所述方法还包括:
在所述基于所述数据库请求对处于所述线上仿真环境的第一数据库进行相应的数据处理操作之前,在预设运行时长内,将所述数据库请求发送至所述处于所述线上仿真环境的第一数据库。
可选的,所述方法还包括:
输出所述第一数据库的第一性能测试结果,以对所述第一数据库的第一性能测试结果进行显示。
可选的,所述方法还包括:
输出所述第一数据库的第二性能测试结果,以对所述第一数据库的第二性能测试结果进行显示。
根据本发明的第二方面,提供了一种用于数据库性能测试的装置,包括:
环境部署模块,用于对第一数据库部署测试运行环境,其中,所述第一数据库为待测试的数据库,所述测试运行环境为所述第一数据库的线上仿真环境;
请求生成模块,用于基于第二数据库的日志文件和配置文件生成对所述第一数据库的数据库请求,所述第二数据库为被仿真的数据库;
数据处理模块,用于基于所述数据库请求对处于所述线上仿真环境的第一数据库进行相应的数据处理操作;
第一性能分析模块,用于分析所述第一数据库基于所述数据处理操作产生的性能参数,以得到所述第一数据库的第一性能测试结果。
可选的,所述装置还包括:
第二性能分析模块,用于将与所述第一数据库交互连接的用户对应的数据库请求按照预设置的并发数发送至所述线上仿真环境的第一数据库,对所述数据库请求进行分析,以得到所述第一数据库的请求语句评估结果,以及将所述请求语句评估结果确定为所述第一数据库的第二性能测试结果。
根据本发明的第三方面,提供了一种电子设备,此电子设备包括:
根据本发明第二方面所述的用于数据库性能测试的装置;或者,
处理器和存储器,存储器用于存储可执行的指令,所述指令用于控制处理器执行根据本发明第一方面所述的用于数据库性能测试的方法。
根据本发明的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实现根据本发明第一方面所述的用于数据库性能测试的方法。
根据本发明实施例,可以准确、方便、快捷且自动地给出数据库***性能评估报告和优化建议,减少大量人力物力的投入成本,并且将数据库研发专家经验的度量化,从而提高数据库性能测试的的可信度,保障***的稳定性。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。
图1为可用于实现本发明实施例的电子设备的硬件配置结构方框图。
图2为本发明实施例的用于数据库性能测试的方法步骤流程图。
图3为本发明实施例的环境部署步骤流程图。
图4为本发明实施例的环境部署流程示例图。
图5为本发明实施例日志文件及配置文件获取示例图。
图6为本发明实施例的第一数据库的数据库请求生成步骤流程图。
图7为本发明实施例获取日志文件的格式示例图。
图8为本发明实施例的流量回放步骤具体示例图。
图9为本发明实施例的性能参数采集数据抽样步骤流程图。
图10为本发明实施例的性能参数采集数据曲线图。
图11为本发明实施例的性能分析步骤流程图。
图12为本发明实施例的性能分析的数据模型示意图。
图13为本发明实施例的性能分析的建模示意图。
图14为本发明实施例的性能分析的模型计算流程图。
图15为本发明实施例的用于数据库性能测试的装置的结构方框图。
图16为本发明实施例的电子设备的结构方框图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人物已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
图1是示出可以实现本发明的实施例的电子设备1000的硬件配置的结构方框图。
电子设备1000可以是便携式电脑、台式计算机、手机、平板电脑、服务器设备等。
服务器设备可以是整体式服务器或是跨多计算机或计算机数据中心的分散式服务器。服务器可以是各种类型的,例如但不限于,内容分发网络的节点设备、分布式存储***的存储服务器、云数据库服务器、云计算服务器、云管理服务器、网络服务器、新闻服务器、邮件服务器、消息服务器、广告服务器、文件服务器、应用服务器、交互服务器、存储服务器、数据库服务器或代理服务器等。在一些实施例中,每个服务器可以包括硬件、软件,或用于执行服务器所支持或实现的合适功能的内嵌逻辑组件或两个或多个此类组件的组合。例如,服务器例如刀片服务器、云端服务器等,或者可以是由多台服务器组成的服务器群组,可以包括上述类型的服务器中的一种或多种等等。
如图1所示,电子设备1000可以包括处理器1100、存储器1200、接口装置1300、通信装置1400,或者还可以包括显示装置1500、输入装置1600、扬声器1700、麦克风1800等等。其中,处理器1100可以是中央处理器CPU、微处理器MCU等。存储器1200例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括USB接口、耳机接口等,用于执行计算机程序。该计算机程序可以采用比如x86、Arm、RISC、MIPS、SSE等架构的指令集编写。通信装置1400例如能够利用光纤或电缆进行有线通信,或者进行无线通信,具体地可以包括WiFi通信、蓝牙通信、2G/3G/4G/5G通信等。显示装置1500例如是液晶显示屏、触摸显示屏等。输入装置1600例如可以包括触摸屏、键盘、体感输入等。用户可以通过扬声器1700和麦克风1800输入/输出语音信息。
图1所示的电子设备仅仅是说明性的并且决不意味着对本发明、其应用或使用的任何限制。应用于本发明的实施例中,电子设备1000的所述存储器1200用于存储指令,所述指令用于控制所述处理器1100进行操作以执行本发明实施例提供的任意一项用于数据库性能测试的方法。本领域技术人员应当理解,尽管在图1中对电子设备1000示出了多个装置,但是,本发明可以仅涉及其中的部分装置,例如电子设备1000可以只涉及处理器1100和存储装置1200。技术人员可以根据本发明所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
基于现有技术的问题,本发明提供了一种用于数据库性能测试的方案,能够实现一键式完成性能自动评估,还可以自动给出优化方案。
在本发明一个实施例中,提供一种用于数据库性能测试的方法。
请参考图2,该图为本发明实施例的用于数据库性能测试的方法步骤流程图,用于数据库性能测试的方法可以是由电子设备实施,该电子设备例如可以是如图1所示的电子设备1000。
如图2所示,本发明实施例的用于数据库性能测试的方法包括以下步骤:
步骤102,对第一数据库部署测试运行环境,其中,所述第一数据库为待测试的数据库,所述测试运行环境为所述第一数据库的线上仿真环境;
步骤104,基于第二数据库的日志文件和配置文件生成对所述第一数据库的数据库请求,所述第二数据库为被仿真的数据库;
步骤106,基于所述数据库请求对处于所述线上仿真环境的第一数据库进行相应的数据处理操作;
步骤108,分析所述第一数据库基于所述数据处理操作产生的性能参数,以得到所述第一数据库的第一性能测试结果。
关于步骤102对第一数据库进行测试运行环境部署的具体步骤可以参考图3的流程图,图3为本发明实施例的环境部署步骤流程图。
如图3所示,本发明实施例的环境部署包括以下步骤:
步骤222,确定用于运行和测试所述第一数据库的服务器;
步骤224,将所述第一数据库的安装组件及测试工具包发送给所述服务器,以使所述服务器通过安装组件安装所述第一数据库和通过所述测试工具包安装对应的测试工具;
步骤226,将预设置的所述第一数据库的运行配置文件、所述服务器的运行配置文件发送至所述服务器,以使所述服务器进行运行环境配置;
步骤228,获取所述第二数据库上存储的数据,以将该数据写入所述服务器上安装好的第一数据库,用于仿真数据库的线上数据;
步骤230,将预设的数据库更新脚本发送至所述服务器上安装好的第一数据库;
步骤232,根据所述服务器上安装的第一数据库、测试工具、配置的运行环境、仿真的线上数据以及所述数据库更新脚本确定所述第一数据库的测试运行环境。
下面,将结合图4的例子,对本发明实施例的测试运行环境部署的步骤进进一步详细说明
为方便描述,下文中将本发明的待测试的数据库(下文中也称作第一数据库)命名为MySQL。第一数据库用于仿真线上正常运行的第二数据库,第二数据库也称作被仿真的数据库,被仿真的第二数据库的数据库中间件命名为dbproxy。
参考图4,本发明的环境部署步骤主要包括资源选择步骤202、软件发送步骤204、版本选择步骤206、配置同步208、数据备份210及脚本更新步骤212,下面将对上述步骤分别展开进行详细的说明。
环境部署步骤(即步骤102)用于为待测试的第一数据库MySQL部署测试运行环境,所述测试运行环境为所述第一数据库的线上仿真环境。具体地,环境部署步骤包括从线下数据库(db)性能资源池10中动态的选择可用的服务器,即机器(指的是计算机物理主机)资源,并将测试软件部署到选择的服务器上,从而为待测试的第一数据库提供与其仿真的第二数据库线上运行尽可能相似的运行环境。
如图4所示,步骤102可以进一步通过如下子步骤实现:
(1)步骤202资源选择
本发明实施例中,数据库***测试是性能级别的,因此需要选用性能好的服务器/机器来部署测试运行环境,以致不会因服务器的性能问题而应用数据库的测试。在本发明实施例中,采用单个产品线独占的方式(即一个租户或用户下的数据库RDS(RelationalDatabase Service,关系型数据库服务)实例独占一台物理主机资源)。在待测试的第一数据库的性能测试评估结束后,释放对应的服务器。
在本发明实施例中,可以从数据库性能资源池10中的多台服务器或者服务器集群中确定出用于测试第一数据库的服务器。在一些实施例中,可以通过检测数据库性能资源池10中待选资源/待选服务器的用于第一数据库MySQL测试的测试端口和/或目录是否被占用,以来确定该待选资源/待选服务器是否可以作为用于测试第一数据库的服务器,例如,第一数据库MySQL的测试端口统一为1234,目录使用/home/MySQL/.sqlman/MySQL_io,则对应检测待选资源/待选服务器的1234端口和/或home/MySQL/.sqlman/MySQL_io的目录是否被占用。
(2)步骤204软件发送
选择好服务器后,进一步地,将测试所需的软件包发送到指定服务器上的/home/MySQL/.sqlman目录中,软件包包括第一数据库的安装组件及测试工具包。在一个示例中,软件包至少可以包括:
1)software:包含带有innodb(innodb为MySQL数据库的数据库引擎)输入输出(IO)版本的MySQL源码包和安装工具;
2)log_redo_dbproxy.php:数据库中间件流量回放工具;
3)dir_used_check:目录检测工具;
4)port_used_check:端口检测工具;
5)storebackup:备份数据的解压工具。
(3)步骤206版本选择
在本发明实施例中,为了能够采集到第一数据库MySQL运行过程中待测试项(或者监控项)的IO信息,第一数据库MySQL是优先使用MySQL数据库的内核版本。选择该定制的内核版本可以将MySQL数据库涉及到的底层IO的详细统计信息详细收集起来,例如可以包括用户态、***态的IO信息。然后通过MySQL数据库的显示innodb数据状态命令(showinnodbstatus)输出丰富的第一数据库MySQL运行时的IO信息。通过该实施例,可以为为第一数据库MySQL***性能评估提供数据基础。本步骤与步骤可以在步骤204前实施,提前选好第一数据库的安装版本,也可以与步骤204同时实施,不分先后顺序。本步骤可以是人为操作,提前备好要使用的第一数据库MySQL的版本。也可以是机器操作,例如可以通过识别版本标识来确定是否是MySQL数据库的内核版本,从而确定是否使用该数据库版本的安装包。
(4)步骤208配置同步
为了使第一数据库MySQ能够在测试运行环境正常运行和启用相应的功能,以能够获取性能测试结果,需要对第一数据库MySQL运行进行相应的配置,例如缓存池、所支持的流量回放日志的大小、缓存大小等等。因此,在本步骤中,可以以第二数据库运行中所需的配置信息作为第一数据库的配置基础,将第二数据库中的配置信息同步于第一数据库的配置。例如,配置信息可以包括如下:
1)innodb_buffer_pool_size:innodb的缓存池;
2)innodb_log_file_size:流量回放日志(redo log)的文件大小;
3)innodb_log_buffer_size:redo log的缓存大小:当该缓存满后,对对应的redolog进行刷盘;
4)innodb_max_dirty_pages_pct:刷脏页的比率:当脏页的比率超过该这个比率的时候,就会进行脏页的刷盘操作。
除此之外,还需要对第一数据库的宿主服务器进行机器参数配置,例如可以包括磁盘、内存等。
综上,根据配置需求将预设置的第一数据库的运行配置文件、服务器的运行配置文件发送至安装有第一数据库的服务器,以使所述服务器进行运行环境配置。
此外,第一数据库的配置参数、服务器的配置参数,在第一数据库的性能评估中,可以根据这些参数,给出调优建议。
(5)步骤210数据备份
在本发明实施例中,为了给第一数据库提供较为真实的线上仿真数据,为了能更好的仿真第二数据库线上流量的执行情况,还需要使用第二数据库线上的备份数据,即第二数据库上存储的数据,作为性能测试初始数据,***会为每个产品线配置线上备份数据的ftp(File Transfer Protocol,文件传输协议)地址。
当执行第二数据库线上数据备份(copy)过程的时候,可以从对应的ftp地址wget(wget是一个从网络上自动下载文件的自由工具)到指定的备份数据。线上运行的数据块可以采用存储备份(storebackup)的方式进行数据备份,因此,当把第二数据库的备份数据wget到第一数据库的服务器上时,也需要用storebackup工具对备份数据进行解压,然后替换已安装的第一数据库的变量,但是需要保留权限表。最后重启第一数据库的服务器,此时,第一数据库即可以为测试所用。
(6)步骤212脚本更新
在一个示例中,本发明的用于数据库性能测试的方法还需要评估数据库***上线后的性能情况,因此需要将预设的数据库更新脚本(例如结构化查询语言(sql)脚本)发送至在服务器上已安装好的第一数据库,在上述已经完成配置同步和数据备份的第一数据库中执行,即相当于待测试的第一数据库***已经上线了。此过程需要的预设数据库更新脚本,例如sql脚本,需要使用本发明用于数据库性能测试的方案的用户在申请***评估流程时提交的,然后执行程序就会将用户提交的sql脚本在第一数据库中执行。
在完成第一数据库的测试运行环境部署之后,需要获取第一数据库仿真的第二数据库在线上实际运行环境中运行对应的日志文件及配置文件,并生成大量的用于对第一数据库进行访问和/或操作的数据库请求。
参考图5,图5为本发明实施例日志文件及配置文件获取示例图。
在一个示例中,从第二数据库的线上日志获取所述日志文件,示例性地,可以采集例如第二数据库线上运行的至少3天的日志文件,在一些实施例中,可以从第二数据库中间件dbproxy获取日志文件。访问数据库***时,用户的读写等访问请求会通过dbproxy转发到后端对应的数据库中,因此dbproxy日志里面包含了读写结构化查询语言(sql)。获取dbproxy日志的方式可以根据产品线对应的第二数据库线上dbproxy日志的地址,通过wget的方式获取。
如图5所示,线上dbproxy日志的格式为:dbproxy.log.201310102300,后面是时间戳。如图5示例所示,第二数据库的线上dbproxy是由多个dbproxy(数据库中间件)32、34、36、38组成一个集群30,承担负载均衡,本发明实施例中,获取第二数据库的线上dbproxy日志只抓取其中一个dbproxy36的日志。
除了抓取dbproxy日志,还需要抓取第二数据库的数据库中间件的配置文件dbproxy.conf,因为其中包含了product_user(即连接第二数据库的用户的账户信息)对应的对数据库的操作,这些配置文件在流量回放的需要用到,后文会详细描述。
上述抓取的第二数据库的日志文件和配置文件用于生成第一数据库的数据库请求,具体地,从获取到的第二数据库的日志文件中确定出包含有数据库读写请求的日志文件,根据获取的第二数据库的配置文件和所述包含有数据库读写请求的日志文件确定第一数据库的数据库请求。
参考图6,图6为本发明实施例生成第一数据库的数据库请求的步骤流程图,生成的数据库请求会用于后续的流量回放操作。
如图6所示,本发明实施例的第一数据库的数据库请求生成步骤:
步骤302,解析所述第二数据库的配置文件,以得到所述配置文件中的用户账户信息;
步骤304,从所述包含有数据库读写请求的日志文件中确定出与任一个所述用户账户信息对应的日志文件;
步骤306,在确定任一所述用户账户信息对应的日志文件的命令提示符为连接符时,针对任一个所述用户的用户账户信息,基于所述日志文件中的连接符创建该用户与所述第一数据库的交互连接;以及,
步骤308,在确定任一所述用户账户信息对应的日志文件的命令提示符为查询命令符时,获取所述命令提示符为查询命令符的日志文件中的数据库读写请求信息;
步骤310,将所述命令提示符为查询命令符的日志文件中的数据库读写请求信息中的数据***操作变更为数据替换操作,以形成所述数据库请求。
由于dbproxy日志会把每个客户端发来的sql(数据库请求)都记录下,当客户端并发执行的时候,dbproxy记录的日志是错乱,因此无法顺序回放dbproxy。对此,本发明提出了流量回放步骤,以实现测试时真正多用户并发。
具体地,基于用户与第一数据库的交互连接,将该用户对应的所述数据库请求按照预设置的并发数发送至线上仿真环境的第一数据库,以对所述第一数据库中的数据进行与所述数据库请求对应的数据处理操作,其中并发到第一数据库的数据库请求是按照图6所述的方式生成第一数据库的数据库请求。
这样,可以对日志文件中属于同一个用户的数据库请求进行分组,其中每个用户对应分组的数据库请求作为对第一数据库进行或操作的数据库请求。然后将每个用户对应分组的数据库请求按照预设置的并发数发送至第一数据库,即可实现对第一数据库的流量回放。
流量回放的时候,会把抓取到的第二数据库线上dbproxy日志对应生成的数据库请求以最大并发下发送压力,一般并发数设置在10-20个并发,通过放大压力回放,使待测试的第一数据库发挥最大性能。这样,假如在最大压力下第一数据库***评估都没有出现任何问题,那么,第一数据库***真实上线后也不会出现问题。
在一个示例中,本发明的用于数据库性能测试的方法还包括:在基于数据库请求对处于线上仿真环境的第一数据库进行相应的数据处理操作之前,在预设运行时长内,将数据库请求发送至处于线上仿真环境的第一数据库。
即利用数据库请求对处于线上仿真环境的第一数据库进行相应的数据处理操作以执行流量回放前,需要对第一数据库的服务器进行预热。预热过程是使用第二数据库的线上日志模拟第二数据库的线上真实流量,将从第二数据库获取的线上日志发送到第一数据库中并持续运行预定时间,例如5分钟,这样能够使测试第一数据库需要使用的大部分数据留在第一数据库缓存中。通过预热可以使得后续针对第一数据库测试的采集数据更为精确,避免缓存因素影响性能评估结果。
在一个示例中,进行流量回放的同时,会进行sql级别的性能测试评估,调用准入测试接口,检测每个sql是否存在需要优化的地方。即对数据库请求的例如语句规范性、准入测试接口等进行评估,以确定数据库请求是否存在需要优化的地方。
具体地,可以在基于用户对应的数据库请求按照预设置的并发数发送至线上仿真环境的第一数据库的同时,对发送的数据库请求进行分析,以得到第一数据库的请求语句评估结果,将所述请求语句评估结果确定为第一数据库的一种性能测试结果,该性能测试结果为sql级别的性能评估结果。
下面结合图7-8对本发明利用数据库请求执行流量回放步骤作出具体说明,其中图7为本发明实施例获取日志文件的格式示例图,图8为本发明实施例流量回放步骤具体示例图。
例如图7所示,从第二数据库获取的dbproxy日志格式为:
[时间戳][命令类型][客户的ip:port:user][耗时][]sql语句
本实施例的流量回放步骤包括:
(1)解析从第二数据库获取的dbproxy.conf配置文件,获取每个用户账户信息product_user对应的数据库db,例如:
Figure BDA0002347457980000161
(2)从头到尾,遍历每行dbproxy日志内容;
(3)根据ip:port作为键(key),将dbproxy日志文件中同一个key的所有查询(query)都组成一个组,从Cmd(命令)类型为conn(连接)开始,创建一个与MySQL的连接;
(4)获取该key的用户product_user对应的数据库db,将该组所有的查询按照用户指定的并发数,发送到后端的第一数据库;
(5)每个key对应的所有查询的发送过程是并发的。
具体的实现流程如图8:
步骤402,读取配置文件dbproxy.conf,获取任一个用户账户信息product_user对应的数据库db;
步骤404,确定并打开用户账户信息对应的dbproxy日志文件;
步骤406,判断打开位置是否位于文件尾;
步骤408,位于文件尾,则结束;
步骤410,未位于文件尾,读取一行日志;
步骤412,进一步判断命令Cmd是否为conn(连接);
步骤414,是,则按照ip:prt作为key,创建与第一数据库的连接,放入连接池,并返回步骤410;
步骤416,否,则进一步判断命令Cmd是否为quit(退出);
步骤418,是,则删除key对应的连接;
步骤420,否,进一步判断命令Cmd是否为query(请求);
步骤422,是,判断请求是否存在连接,否,则返回步骤406;
步骤424,是,获取该行日志的sql内容;
步骤426,将insert(***)类型的sql改成replace(替换)类型(这里更改sql类型是为了避免***的内容与已有的存在重复,导致报错而终止测试,替换之后流量回放不存在间断情况);
步骤428,按照用户配置的并发数将sql发送给第一数据库MySQL。在并发数据库请求进行流量回放时,第一数据库会对数据库请求进行处理,此时采集第一数据库在当前测试运行环境中运行时响应所述数据库请求时对应产生的IO信息确定为性能参数,以用于***性能评估。
IO信息采集可以使用数据抽样的方式,获取第一数据库服务器上所有模型监控项的监控数据,采集开始时间为发起第一数据库性能测试评估流程的时候(预热之后的某个时间),结束时间为第一数据库性能测试流程运行结束的时间。
其中IO信息采集涉及到监控项例如包括:
(1)LogWrite-Transaction commit(sync):日志写入-事务提交(同步)
当事务提交时,如果将日志缓冲区(log buffer)写入日志文件之后,会进行磁盘同步。将日志同步到日志文件上。
(2)FSYNC-User thread(sync):函数同步-用户线程(同步)
当用户线程将脏页刷盘后,会进行磁盘同步,将数据同步到磁盘上。
(3)DataRead-Undo(sync):数据读-撤销(同步)
如果用户配置了innodb_open_files,当打开的文件超过这个值时,有可能会将其他打开的文件进行磁盘同步,将更改的数据同步到磁盘文件上,然后关闭可关闭的文件,使得打开的文件数小于innodb_open_files。
当用户进行一致性读,读取老版本数据时,如果数据文件未打开,而此时打开的文件个数已经达到innodb_open_files,就可能需将其他文件的更改数据同步到磁盘。将此处的磁盘同步归类为Undo(sync)。
(4)DataRead-Ibuf(sync):数据读-***缓冲(同步)
当用户态线程由于***缓冲区(insert buffer)大小不满足条件,而进行***缓冲区合并(insert buffer merge)的过程,如果打开文件个数超过innodb_open_files,而将其他文件的数据同步到磁盘。这个同步归类为Ibuf(sync)。
(5)DataRead-Undo(async):数据读-撤销(异步)
后台线程进行撤销清理(undo purge)时,如果进行脏页刷盘之后,会将这些脏页同步到磁盘。将这里的磁盘同步归类为Undo(async)
(6)DataRead-Ibuf(async):数据读-***缓冲(异步)
后台线程进行***缓冲区合并(insert buffer merge)过程中,由于打开文件达到上限,而对其他打开文件进行磁盘同步
(7)LogWrite-Background thread(async):日志写入-后台线程(异步)
后台线程执行的磁盘为了能采集到MySQL的IO信息,需要在所有的测试机器上部署innodb数据库IO监控脚本。
在一个示例中,在分析第一数据库基于数据处理操作产生的性能参数之前,可以对性能参数进行抽样处理,以得到抽样值。
现在参考图9-10,图9为本发明实施例的性能参数采集数据抽样步骤流程图,图10为本发明实施例的某个监控项的性能参数采集数据曲线图.
如图9所示,性能参数采集数据抽样包括以下步骤:
步骤502,确定并剔除所述性能参数中的最大值和最小值;
步骤504,基于已剔除最大值和最小值中剩余的所有性能参数的平均值;
步骤506,以所述平均值为中值,按照性能参数的值大小将所述剩余的所有性能参数划分为两份;
步骤508,选取划分后所包含的性能参数的个数较多的一份,以基于该份中的性能参数的值,确定该份中性能参数的平均值,并将该平均值确定为所述抽样值。
最后,利用采集的性能参数进行第一数据库的数据库性能评估。这里需要指出的是,用于后续数据库性能评估的性能参数可以是上述根据图9-10实施例所述的性能参数的抽样值,当然也可以是第一数据库基于数据处理操作直接产生的、未经过抽样处理的性能参数,本发明不局限于该抽样化处理的性能参数的具体实施例。
图11为本发明实施例的性能分析步骤流程图,包括:
步骤522,根据所述性能参数、所述第一数据库的运行配置文件和所述服务器的运行配置文件,得到所述第一数据库的数据库性能评估结果;以及
步骤524,将所述数据库性能评估结果确定为所述第一数据库的一种性能测试结果,该性能测试结果为***级别的性能评估结果。
在一个示例中,若对性能参数进行抽样采集处理,则步骤522为根据所述性能参数的抽样值、预设值的第一数据库的运行配置文件和服务器的运行配置文件,得到所述第一数据库的数据库性能评估结果。
具体地,下面结合图12到图14示例进行说明。图12为本发明实施例的性能分析的建模示意图,图13为本发明实施例的性能分析的数据模型定义及之间的关系示意图,图14为本发明实施例的性能分析的模型计算流程图。
如图12所示,具体地,***级别的性能评估可根据性能参数的监控采样数据(抽样值)、第一数据库的运行配置文件和所述服务器的运行配置文件,构造数据模型,通过模型计算,给出***负载评估和性能合理优化建议。其中,每个模型的计算逻辑是一样的,只是使用的性能参数的监控项目不一样,即对于不同的性能参数监控项目,输入数据模型计算的输入参数不同。
在一个示例中,根据性能参数确定第一数据库的待优化项;基于第一数据库的运行配置文件和服务器的运行配置文件确定所述待优化项的优化建议信息。
***负载信息例如包括:读写QPS(每秒查询率)、IOPS(每秒的读写次数)、慢IO(慢查询请求数)。
数据库性能测试对应性能参数优化建议例如包括:
(1)innodb_buffer_poll(innodb数据库的缓冲区)是否需要调大,建议调大到什么值;
(2)刷脏页比率如何调整;
(3)log_buffer(日志缓冲区)是否需要调整;
(4)集群规模是否扩容。
数据模型是根据性能参数对应的IO监控项划分的,每个监控项都用一个模型类表示,进行模型计算的时候就是调用该类的运行(run)方法,运行完毕会返回该模型的评估结果,其中包括存在的问题和优化建议。
参考图13,由于IO信息分为用户态,后台态,因此也将模型分为用户模型42和后台模型44。
其中,用户模型42包括的监控项有数据读-***缓冲(同步4202、日志写入-用户线程(同步)4204、数据读-撤销(同步)4206、函数同步-撤销(同步)4208等;后台模型44包括的监控项有日志写入-后台线程(异步)4402、数据读-***缓冲(同步)4404、数据读-撤销(同步)4406、异步IO-异步数据写入4408等。
而影响数据库***性能的多数是用户模型42,因此在进行数据库***性能评估的时候,还可以进一步对两种模型42、44的权重进行区别。
在一个示例中,所有模型都存放在特性的目录analyse(分析)下,都继承模型基类40(BaseModel),当需要新增一个模型时,只需要在analyse目录下添加一个类文件,继承模型基类40,并且实现run方法即可。当进行模型计算的时候,会遍历analyse目录的所有模型类,将每个模型类的run方法都执行一遍即可。数据模型的定义及之间的关系如图11所示。
如上文所述,对于每个模型的计算方式都是一样的,会根据对应性能参数监控项(或者性能参数)的抽样值,以及第一数据库的运行配置文件参数和对应服务器的运行配置文件参数,然后运行run方式,计算完毕后,输出相关的数据库性能评估结果。
每种模型的数据库性能评估结果格式如下表1所示:
表1
Figure BDA0002347457980000211
下面以性能参数为FSYNC-User thread(sync):函数同步-用户线程(同步)监控项为例,该监控项属于用户模型42类,假如对应采集的抽样值等于N,那么该模型的计算流程如图14所示:
步骤601,判断是否采集的抽样数N=0;
步骤602,抽样值N=0,表示第一数据库的该性能参数对应的性能没有问题;
步骤603,抽样值不等于0,则输出磁盘同步的请求数或者慢查询请求数;
步骤604,判断抽样值N是否大于设定的抽样阈值;
步骤606,若大于抽样阈值,则进一步判断日志缓冲区(log_butter)大于最优值;
步骤608,若log_butter不大于最优值,则调大log_butter;
步骤610,若log_butter大于最优值,则判断日志文件log_file是否大于最优值;
步骤612,若log_file不大于最优值,则调大log_file;
步骤614,若log_file大于最优值,进一步判断最大脏页刷盘(max_dirty_page_pct)是否大于最优值;
步骤616,若max_dirty_page_pct不大于最优值,则调小max_dirty_page_pct是否大于最优值。
上述各参数的最优值(或者优化建议信息)来自于对应获取的第一数据库的运行配置文件及务器的运行配置文件。
这样,即可获得第一数据库的数据库性能评估结果,所述数据库性能评估结果可以确定为第一数据库的第一性能测试结果。
如上文所述,在将该用户对应的数据库请求按照预设置的并发数发送至线上仿真环境的第一数据库进行流量回放时,还可以对数据库请求进行分析,得到第一数据库的请求语句评估结果,所述请求语句评估结果确定为第一数据库的第二性能测试结果。
因此,在一个示例中,本发明的用于数据库性能测试的方法除了可以得到***级别的第一性能测试结果,还可以得到sql级别的第二性能测试结果。
在一个示例中,本发明的用于数据库性能测试的方法还可以输出对应得到的性能测试结果,以在用户终端进行显示,输出第一数据库的性能测试结果可以是第一性能测试结果和第二性能测试结果中至少一项。
通过上述整个流程,最终反馈给用户的将是一份测试评估报告,内容包括第一数据库对应sql级别和***级别存在的问题及优化方案,格式如下表2所示:
表2
Figure BDA0002347457980000221
Figure BDA0002347457980000231
如上,根据本发明实施例的用于数据库性能测试的方法,可以准确、方便、快捷、自动地给出数据库***性能评估报告和优化建议,减少大量人力物力的投入成本,并且将数据库研发专家经验的度量化,从而提高用于数据库性能测试的的可信度,保障***的稳定性。
在本发明另一个实施例中,还提供了一种用于数据库性能测试的装置2000,图15为本发明实施例的用于数据库性能测试的装置的结构方框图。
如图15所示,用于数据库性能测试的装置2000包括:环境部署模块2020、请求生成模块2040、数据处理模块2060、以及第一性能分析模块2080。
环境部署模块2020,用于对第一数据库部署测试运行环境,其中,所述第一数据库为待测试的数据库,所述测试运行环境为所述第一数据库的线上仿真环境。
请求生成模块2040,用于基于第二数据库的日志文件和配置文件生成对所述第一数据库的数据库请求,所述第二数据库为被仿真的数据库。
数据处理模块2060,用于基于所述数据库请求对处于所述线上仿真环境的第一数据库进行相应的数据处理操作。
第一性能分析模块2080,用于分析所述第一数据库基于所述数据处理操作产生的性能参数,以得到所述第一数据库的第一性能测试结果。
在一个示例中,如图15所示,所述用于数据库性能测试的装置2000还包括:
第二性能分析模块2110,用于在所述数据处理模块2060将与所述第一数据库交互连接的用户对应的数据库请求按照预设置的并发数发送至所述线上仿真环境的第一数据库,对所述数据库请求进行分析,以得到所述第一数据库的请求语句评估结果,以及将所述请求语句评估结果确定为所述第一数据库的第二性能测试结果。
在一个示例中,环境部署模块2020对第一数据库部署测试运行环境,包括:
确定用于运行和测试所述第一数据库的服务器;
将所述第一数据库的安装组件及测试工具包发送给所述服务器,以使所述服务器通过安装组件安装所述第一数据库和通过所述测试工具包安装对应的测试工具;
将预设置的所述第一数据库的运行配置文件、所述服务器的运行配置文件发送至所述服务器,以使所述服务器进行运行环境配置;
获取所述第二数据库上存储的数据,以将该数据写入所述服务器上安装好的第一数据库,用于仿真数据库的线上数据;
将预设的数据库更新脚本发送至所述服务器上安装好的第一数据库;
根据所述服务器上安装的第一数据库、测试工具、配置的运行环境、仿真的线上数据以及所述数据库更新脚本确定所述第一数据库的测试运行环境。
在一个示例中,所述装置2000还包括:
第一获取模块(图中未示出),用于在请求生成模块2040基于第二数据库的日志文件和配置文件生成对所述第一数据库的数据库请求之前,获取第二数据库的日志文件和配置文件;
其中,请求生成模块2040基于第二数据库的日志文件和配置文件生成对所述第一数据库的数据库请求,包括:
从获取到的所述第二数据库的日志文件中确定出包含有数据库读写请求的日志文件;
根据所述第二数据库的配置文件和所述包含有数据库读写请求的日志文件确定所述第一数据库的数据库请求。
在一个示例中,所述请求生成模块2040根据所述第二数据库的配置文件和所述包含有数据库读写请求的日志文件确定所述第一数据库的数据库请求,包括:
解析所述第二数据库的配置文件,以得到所述配置文件中的用户账户信息;
从所述包含有数据库读写请求的日志文件中确定出与任一个所述用户账户信息对应的日志文件;
在确定任一所述用户账户信息对应的日志文件的命令提示符为连接符时,针对任一个所述用户的用户账户信息,基于所述日志文件中的连接符创建该用户与所述第一数据库的交互连接;以及,
在确定任一所述用户账户信息对应的日志文件的命令提示符为查询命令符时,获取所述命令提示符为查询命令符的日志文件中的数据库读写请求信息;
并将所述命令提示符为查询命令符的日志文件中的数据库读写请求信息中的数据***操作变更为数据替换操作,以形成所述数据库请求。
在一个示例中,数据处理模块2060基于所述数据库请求对处于所述线上仿真环境的第一数据库进行相应的数据处理操作,包括:
基于所述用户与所述第一数据库的交互连接,将该用户对应的所述数据库请求按照预设置的并发数发送至所述线上仿真环境的第一数据库,以对所述第一数据库中的数据进行与所述数据库请求对应的数据处理操作。
在一个示例中,所述装置2000还包括:
发送模块(图中未示出),用于基于所述用户与所述第一数据库的交互连接,将该用户对应的所述数据库请求按照预设置的并发数发送至所述线上仿真环境的第一数据库;
请求分析模块(图中未示出),用于对所述数据库请求进行分析,以得到所述第一数据库的请求语句评估结果;
确定模块(图中未示出),用于将所述请求语句评估结果确定为所述第一数据库的第二性能测试结果。
在一个示例中,所述装置2000还包括:
第二获取模块(图中未示出),用于在所述第一性能分析模块2080分析所述第一数据库基于所述数据处理操作产生的性能参数之前,获取所述第一数据库响应所述数据库请求时产生的输入输出数据,以将所述输入输出数据确定为所述性能参数。
在一个示例中,所述第一性能分析模块2080分析所述第一数据库基于所述数据处理操作产生的性能参数,以得到所述第一数据库的第一性能测试结果,包括:
根据所述性能参数、所述第一数据库的运行配置文件和所述服务器的运行配置文件,得到所述第一数据库的数据库性能评估结果;
将所述数据库性能评估结果确定为所述第一数据库的第一性能测试结果。
在一个示例中,所述第一性能分析模块2080根据所述性能参数、所述第一数据库的运行配置文件和所述服务器的运行配置文件,得到所述第一数据库的数据库性能评估结果,包括:
根据所述性能参数确定所述第一数据库的待优化项;
基于所述第一数据库的运行配置文件和所述服务器的运行配置文件确定所述待优化项的优化建议信息。
在一个示例中,所述装置2000还包括:
抽样模块(图中未示出),用于在所述第一性能分析模块2080分析所述第一数据库基于所述数据处理操作产生的性能参数之前,对所述性能参数进行抽样处理,以得到抽样值;
所述第一性能分析模块2080分析所述第一数据库基于所述数据处理操作产生的性能参数,包括:
根据所述性能参数的抽样值、所述第一数据库的运行配置文件和所述服务器的运行配置文件,得到所述第一数据库的数据库性能评估结果;
将所述数据库性能评估结果确定为所述第一数据库的第一性能测试结果。
在一个示例中,所述抽样模块对所述性能参数进行抽样处理,以得到抽样值,包括:
确定并剔除所述性能参数中的最大值和最小值;
基于已剔除最大值和最小值中剩余的所有性能参数的平均值;
以所述平均值为中值,按照性能参数的值大小将所述剩余的所有性能参数划分为两份;
选取划分后所包含的性能参数的个数较多的一份,以基于该份中的性能参数的值,确定该份中性能参数的平均值,并将该平均值确定为所述抽样值。
在一个示例中,所述装置2000还包括:
预热模块(图中未示出),用于在所述基于所述数据库请求对处于所述线上仿真环境的第一数据库进行相应的数据处理操作之前,在预设运行时长内,将所述数据库请求发送至所述处于所述线上仿真环境的第一数据库。
在一个示例中,所述装置2000还包括:
第一输出模块(图中未示出),用于输出所述第一数据库的第一性能测试结果,以对所述第一数据库的第一性能测试结果进行显示。
在一个示例中,所述装置2000还包括:
第二输出模块(图中未示出),用于输出所述第一数据库的第二性能测试结果,以对所述第一数据库的第二性能测试结果进行显示。
利用本发明实施例的用于数据库性能测试的装置,只需要用户提出***性能测试评估申请,一键启动后,即可完成所有的***性能评估流程。
根据本发明的再一个实施例,还提供了一种电子设备,该电子设备3000可以是图1所示的电子设备1000。图16为本发明实施例的电子设备的结构方框图。
一方面,该电子设备3000可以包括前述的用于数据库性能测试的装置,用于实施本发明任意实施例的用于数据库性能测试的方法。
另一方面,如图16所示,电子设备3000可以包括存储器3200和处理器3400,存储器3200用于存储可执行的指令;该指令用于控制处理器3400执行前述的用于数据库性能测试的方法。
在本实施例中,电子设备3000可以是手机、平板电脑、掌上电脑、台式机、笔记本电脑、工作站、游戏机、服务器等任意具有存储器3200以及处理器3400的电子产品。
最后,根据本发明的又一个实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序在被处理器执行时实现根据本发明任意实施例所述的用于数据库性能测试的方法。
本发明可以是***、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人物来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人物来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人物能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。

Claims (18)

1.一种用于数据库性能测试的方法,其特征在于,包括:
对第一数据库部署测试运行环境,其中,所述第一数据库为待测试的数据库,所述测试运行环境为所述第一数据库的线上仿真环境;
基于第二数据库的日志文件和配置文件生成对所述第一数据库的数据库请求,所述第二数据库为被仿真的数据库;
基于所述数据库请求对处于所述线上仿真环境的第一数据库进行相应的数据处理操作;
分析所述第一数据库基于所述数据处理操作产生的性能参数,以得到所述第一数据库的第一性能测试结果。
2.根据权利要求1所述的方法,其特征在于,所述对第一数据库部署测试运行环境,包括:
确定用于运行和测试所述第一数据库的服务器;
将所述第一数据库的安装组件及测试工具包发送给所述服务器,以使所述服务器通过安装组件安装所述第一数据库和通过所述测试工具包安装对应的测试工具;
将预设置的所述第一数据库的运行配置文件、所述服务器的运行配置文件发送至所述服务器,以使所述服务器进行运行环境配置;
获取所述第二数据库上存储的数据,以将该数据写入所述服务器上安装好的第一数据库,用于仿真数据库的线上数据;
将预设的数据库更新脚本发送至所述服务器上安装好的第一数据库;
根据所述服务器上安装的第一数据库、测试工具、配置的运行环境、仿真的线上数据以及所述数据库更新脚本确定所述第一数据库的测试运行环境。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述基于第二数据库的日志文件和配置文件生成对所述第一数据库的数据库请求之前,获取第二数据库的日志文件和配置文件;
所述基于第二数据库的日志文件和配置文件生成对所述第一数据库的数据库请求,包括:
从获取到的所述第二数据库的日志文件中确定出包含有数据库读写请求的日志文件;
根据所述第二数据库的配置文件和所述包含有数据库读写请求的日志文件确定所述第一数据库的数据库请求。
4.根据权利要求3所述的方法,其特征在于,所述根据所述第二数据库的配置文件和所述包含有数据库读写请求的日志文件确定所述第一数据库的数据库请求,包括:
解析所述第二数据库的配置文件,以得到所述配置文件中的用户账户信息;
从所述包含有数据库读写请求的日志文件中确定出与任一个所述用户账户信息对应的日志文件;
在确定任一所述用户账户信息对应的日志文件的命令提示符为连接符时,针对任一个所述用户的用户账户信息,基于所述日志文件中的连接符创建该用户与所述第一数据库的交互连接;以及,
在确定任一所述用户账户信息对应的日志文件的命令提示符为查询命令符时,获取所述命令提示符为查询命令符的日志文件中的数据库读写请求信息;
并将所述命令提示符为查询命令符的日志文件中的数据库读写请求信息中的数据***操作变更为数据替换操作,以形成所述数据库请求。
5.根据权利要求4所述的方法,其特征在于,所述基于所述数据库请求对处于所述线上仿真环境的第一数据库进行相应的数据处理操作,包括:
基于所述用户与所述第一数据库的交互连接,将该用户对应的所述数据库请求按照预设置的并发数发送至所述线上仿真环境的第一数据库,以对所述第一数据库中的数据进行与所述数据库请求对应的数据处理操作。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
基于所述用户与所述第一数据库的交互连接,将该用户对应的所述数据库请求按照预设置的并发数发送至所述线上仿真环境的第一数据库;
对所述数据库请求进行分析,以得到所述第一数据库的请求语句评估结果;
将所述请求语句评估结果确定为所述第一数据库的第二性能测试结果。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在分析所述第一数据库基于所述数据处理操作产生的性能参数之前,获取所述第一数据库响应所述数据库请求时产生的输入输出数据,以将所述输入输出数据确定为所述性能参数。
8.根据权利要求7所述的方法,其特征在于,所述分析所述第一数据库基于所述数据处理操作产生的性能参数,以得到所述第一数据库的第一性能测试结果,包括:
根据所述性能参数、所述第一数据库的运行配置文件和所述服务器的运行配置文件,得到所述第一数据库的数据库性能评估结果;
将所述数据库性能评估结果确定为所述第一数据库的第一性能测试结果。
9.根据权利要求8所述的方法,其特征在于,所述根据所述性能参数、所述第一数据库的运行配置文件和所述服务器的运行配置文件,得到所述第一数据库的数据库性能评估结果,包括:
根据所述性能参数确定所述第一数据库的待优化项;
基于所述第一数据库的运行配置文件和所述服务器的运行配置文件确定所述待优化项的优化建议信息。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述分析所述第一数据库基于所述数据处理操作产生的性能参数之前,对所述性能参数进行抽样处理,以得到抽样值;
所述分析所述第一数据库基于所述数据处理操作产生的性能参数,包括:
根据所述性能参数的抽样值、所述第一数据库的运行配置文件和所述服务器的运行配置文件,得到所述第一数据库的数据库性能评估结果;
将所述数据库性能评估结果确定为所述第一数据库的第一性能测试结果。
11.根据权利要求10所述的方法,其特征在于,所述对所述性能参数进行抽样处理,以得到抽样值,包括:
确定并剔除所述性能参数中的最大值和最小值;
基于已剔除最大值和最小值中剩余的所有性能参数的平均值;
以所述平均值为中值,按照性能参数的值大小将所述剩余的所有性能参数划分为两份;
选取划分后所包含的性能参数的个数较多的一份,以基于该份中的性能参数的值,确定该份中性能参数的平均值,并将该平均值确定为所述抽样值。
12.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述基于所述数据库请求对处于所述线上仿真环境的第一数据库进行相应的数据处理操作之前,在预设运行时长内,将所述数据库请求发送至所述处于所述线上仿真环境的第一数据库。
13.根据权利要求1-12中任一项所述的方法,其特征在于,所述方法还包括:
输出所述第一数据库的第一性能测试结果,以对所述第一数据库的第一性能测试结果进行显示。
14.根据权利要求6所述的方法,其特征在于,所述方法还包括:
输出所述第一数据库的第二性能测试结果,以对所述第一数据库的第二性能测试结果进行显示。
15.一种用于数据库性能测试的装置,其特征在于,包括:
环境部署模块,用于对第一数据库部署测试运行环境,其中,所述第一数据库为待测试的数据库,所述测试运行环境为所述第一数据库的线上仿真环境;
请求生成模块,用于基于第二数据库的日志文件和配置文件生成对所述第一数据库的数据库请求,所述第二数据库为被仿真的数据库;
数据处理模块,用于基于所述数据库请求对处于所述线上仿真环境的第一数据库进行相应的数据处理操作;
第一性能分析模块,用于分析所述第一数据库基于所述数据处理操作产生的性能参数,以得到所述第一数据库的第一性能测试结果。
16.根据权利要求15所述的装置,其特征在于,所述装置还包括:
第二性能分析模块,用于将与所述第一数据库交互连接的用户对应的数据库请求按照预设置的并发数发送至所述线上仿真环境的第一数据库,对所述数据库请求进行分析,以得到所述第一数据库的请求语句评估结果,以及将所述请求语句评估结果确定为所述第一数据库的第二性能测试结果。
17.一种电子设备,其特征在于,包括:
根据权利要求15或16所述的用于数据库性能测试的装置;或者,
处理器和存储器,所述存储器用于存储可执行的指令,所述指令用于控制所述处理器执行根据权利要求1至14中任一权利要求所述的用于数据库性能测试的方法。
18.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1至14中任一权利要求所述的用于数据库性能测试的方法。
CN201911400939.6A 2019-12-30 2019-12-30 用于数据库性能测试的方法、装置、电子设备及存储介质 Active CN113127312B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911400939.6A CN113127312B (zh) 2019-12-30 2019-12-30 用于数据库性能测试的方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911400939.6A CN113127312B (zh) 2019-12-30 2019-12-30 用于数据库性能测试的方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN113127312A true CN113127312A (zh) 2021-07-16
CN113127312B CN113127312B (zh) 2024-04-05

Family

ID=76768208

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911400939.6A Active CN113127312B (zh) 2019-12-30 2019-12-30 用于数据库性能测试的方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN113127312B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113609145A (zh) * 2021-08-04 2021-11-05 北京百度网讯科技有限公司 数据库处理方法、装置、电子设备、存储介质及产品
CN118093121A (zh) * 2024-01-23 2024-05-28 上海邮电设计咨询研究院有限公司 基于Kubernetes的数据库性能测试方法及***

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102385582A (zh) * 2010-08-31 2012-03-21 中兴通讯股份有限公司 生产测试数据处理方法、服务器及***
CN103729361A (zh) * 2012-10-12 2014-04-16 百度在线网络技术(北京)有限公司 一种数据库性能测试方法及装置
CN107145432A (zh) * 2017-03-30 2017-09-08 华为技术有限公司 一种建立模型数据库的方法以及客户端
US20180246945A1 (en) * 2017-02-27 2018-08-30 Sap Se Workload Capture and Replay for Replicated Database Systems
CN109460349A (zh) * 2018-09-19 2019-03-12 武汉达梦数据库有限公司 一种基于日志的测试用例生成方法和装置
CN110389900A (zh) * 2019-07-10 2019-10-29 深圳市腾讯计算机***有限公司 一种分布式数据库集群测试方法、装置及存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102385582A (zh) * 2010-08-31 2012-03-21 中兴通讯股份有限公司 生产测试数据处理方法、服务器及***
CN103729361A (zh) * 2012-10-12 2014-04-16 百度在线网络技术(北京)有限公司 一种数据库性能测试方法及装置
US20180246945A1 (en) * 2017-02-27 2018-08-30 Sap Se Workload Capture and Replay for Replicated Database Systems
CN107145432A (zh) * 2017-03-30 2017-09-08 华为技术有限公司 一种建立模型数据库的方法以及客户端
CN109460349A (zh) * 2018-09-19 2019-03-12 武汉达梦数据库有限公司 一种基于日志的测试用例生成方法和装置
CN110389900A (zh) * 2019-07-10 2019-10-29 深圳市腾讯计算机***有限公司 一种分布式数据库集群测试方法、装置及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
李现艳;赵书俊;初元萍;: "基于MySQL的数据库服务器性能测试", 核电子学与探测技术, no. 01 *
李现艳;赵书俊;初元萍;: "基于MySQL的数据库服务器性能测试", 核电子学与探测技术, no. 01, 20 January 2011 (2011-01-20) *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113609145A (zh) * 2021-08-04 2021-11-05 北京百度网讯科技有限公司 数据库处理方法、装置、电子设备、存储介质及产品
CN113609145B (zh) * 2021-08-04 2023-07-04 北京百度网讯科技有限公司 数据库处理方法、装置、电子设备、存储介质及产品
CN118093121A (zh) * 2024-01-23 2024-05-28 上海邮电设计咨询研究院有限公司 基于Kubernetes的数据库性能测试方法及***

Also Published As

Publication number Publication date
CN113127312B (zh) 2024-04-05

Similar Documents

Publication Publication Date Title
US10997222B2 (en) Conversational agent dialog flow user interface
CN107341098B (zh) 软件性能测试方法、平台、设备及存储介质
CN108804306B (zh) 用于自动测试***的方法和***
US8752023B2 (en) System, method and program product for executing a debugger
WO2018120720A1 (zh) 客户端程序的测试错误定位方法、电子装置及存储介质
US9336116B2 (en) Automatic correlation accelerator
CN111241111B (zh) 数据查询方法及装置、数据对比方法及装置、介质及设备
CN107193747B (zh) 代码测试方法、装置和计算机设备
CN109344277A (zh) 图片处理方法、装置、介质和计算设备
CN111666201A (zh) 回归测试方法、装置、介质及电子设备
CN113127312B (zh) 用于数据库性能测试的方法、装置、电子设备及存储介质
CN105512276B (zh) 一种构建垃圾文件的方法、装置及电子设备
CN113495843B (zh) 用于测试视频播放器的起播性能的方法和装置
CN113986719A (zh) 基于云服务的大规模集群性能自动化测试方法及***
CN115994085A (zh) 代码覆盖率的测试处理方法、装置、设备及存储介质
CN109491904B (zh) 一种SparkSQL应用程序的自动化测试方法和装置
CN111400117B (zh) 一种自动化测试Ceph集群的方法
CN114924963A (zh) 网页兼容性测试的分布式执行方法、装置、设备及介质
CN112783789A (zh) 一种适配测试方法、设备及计算机可读存储介质
CN112965910A (zh) 自动化回归测试方法、装置、电子设备、存储介质
CN108960433B (zh) 用于运行机器学习建模过程的方法及***
CN113342632A (zh) 仿真数据自动化处理方法、装置、电子设备及存储介质
Ostermueller Troubleshooting Java Performance: Detecting Anti-Patterns with Open Source Tools
CN114328159A (zh) 异常语句的确定方法、装置、设备及计算机可读存储介质
CN114116291B (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