CN103729361A - 一种数据库性能测试方法及装置 - Google Patents

一种数据库性能测试方法及装置 Download PDF

Info

Publication number
CN103729361A
CN103729361A CN201210385871.0A CN201210385871A CN103729361A CN 103729361 A CN103729361 A CN 103729361A CN 201210385871 A CN201210385871 A CN 201210385871A CN 103729361 A CN103729361 A CN 103729361A
Authority
CN
China
Prior art keywords
pressure
database
performance information
database performance
sql 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.)
Pending
Application number
CN201210385871.0A
Other languages
English (en)
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 Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and 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 Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201210385871.0A priority Critical patent/CN103729361A/zh
Publication of CN103729361A publication Critical patent/CN103729361A/zh
Pending legal-status Critical Current

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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Abstract

本发明提供了一种数据库性能测试方法,包括:压力模型生成模块依据预先生成的SQL语句生成压力测试数据;压力执行模块采用一个以上线程发送所述生成的压力测试数据给数据库集群;监控模块采集数据库性能信息;分析模块判断采集的数据库性能信息是否位于预设的合理区间内,依据判断结果生成第一测试分析报告;本发明还提供一种数据库性能测试装置。根据本发明提供的技术方案,方便、灵活地实现数据库性能测试。

Description

一种数据库性能测试方法及装置
【技术领域】
本发明涉及互联网领域的测试技术,尤其涉及一种数据库性能测试方法及装置。
【背景技术】
所有互联网运营商都面临数据库类型选择、数据库版本选择的问题,解决这些问题需要依赖于对数据库进行性能测试,得到大量真实的测试数据。此外,数据库以及应用开发同样需要进行数据库的性能测试,用于排除数据库的瓶颈。
目前,业界普遍利用第三方提供的测试工具直接进行数据库性能测试,例如,Sysbench、Supersmach、Benchmark SQL和Jmeter等测试工具。这种数据库性能测试方法中,存在以下问题:
1、用于进行测试的结构化查询语言(SQL,Structured Query Language)语句不是利用实际数据得到的,无法模拟实际场景得到与实际数据相似的测试数据,仿真性较差,导致测试结果不精确。
2、第三方提供的测试工具中框架复杂,组件繁多,因此在安装测试工具时操作复杂,需要进行大量的人工部署,移植性较差。
3、第三方提供的测试工具的测试规则固定,运营商不能针对不同业务对测试工具进行二次开发,因此第三方提供的测试工具不能够灵活应用于多种业务的数据库测试。
例如,利用测试工具Sysbench对数据库进行性能测试时,安装Sysbench需要依赖于make以及MySQL的lib库,且不能够实现单机的多进程测试。虽然能够指定测试的数据库,但是也只能发送固定规则的SQL压力文件;而且即使能够实现引擎类型、并发数量、提交模式、读写类型的配置,但是无法指定具体的与业务相关的SQL语句,仅能够实现联机事务处理系统(OLTP,On-Line Transaction Processing)测试,无法模拟实际场景中的实际数据。而且利用第三方的测试工具测试时,每次测试都是独立行为,无法进行测试结果的相关,不能够指导以后的测试操作。
【发明内容】
本发明提供了一种数据库性能测试方法及装置,方便、灵活地实现数据库性能测试。
本发明的具体技术方案如下:
根据本发明一优选实施例,一种数据库性能测试方法,包括:
压力模型生成模块依据预先生成的SQL语句生成压力测试数据;
压力执行模块采用一个以上线程发送所述生成的压力测试数据给数据库集群;
监控模块采集数据库性能信息;
分析模块判断采集的数据库性能信息是否位于预设的合理区间内,依据判断结果生成第一测试分析报告。
上述方法中,所述压力模型生成模块依据预先生成SQL语句生成压力测试数据,具体为:
依据预设的测试压力比对预先生成的SQL语句进行复制,生成压力测试数据。
上述方法中,所述预先生成SQL语句的方法为:
压力模型生成模块从指定目录下的指定文件中获取业务的工作日志;
压力模型生成模块从获取的业务的工作日志中提取SQL语句。
上述方法中,
所述业务的工作日志为业务的实时访问日志或业务的历史访问日志;
所述业务的实时访问日志由后台服务器存储到所述指定目录下的指定文件;
所述业务的历史访问日志由用户导入到所述指定目录下的指定文件。
上述方法中,所述预先生成SQL语句的方法为:
压力模型生成模块接收导入的配置文件以及SQL语句模板;
压力模型生成模块用所述配置文件中的信息替换所述SQL语句模板中的默认参数,生成SQL语句。
上述方法中,所述监控模块采集数据库性能信息,具体为:
在压力执行模块发送压力测试数据给数据库集群的过程中,监控模块依据预先配置的采集频率,调用所述数据库集群中数据库所在设备的操作系统提供的访问接口,以及所述数据库提供的访问接口,采集数据库性能信息;所述数据库性能信息包括操作系统负载信息和数据库负载信息。
上述方法中,该方法还包括:
分析模块向反馈模块发送第二测试分析报告,所述第二测试分析报告包括判断结果为不位于合理区间的数据库性能信息及对应的合理区间;
反馈模块判断数据库性能信息是大于合理范围的上限值,还是小于合理范围的下限值;
当判断结果中仅有大于所述合理范围的上限值的数据库性能信息时,或,当判断结果中有大于所述合理范围的上限值的数据库性能信息和小于所述合理范围的下限值的数据库性能信息时,反馈模块指示压力模型生成模块减小测试压力比;当判断结果中仅有小于所述合理范围的下限值的数据库性能信息时,反馈模块指示压力模型生成模块增大测试压力比。
一种数据库性能测试装置,包括:
压力模型生成模块,用于依据预先生成的SQL语句生成压力测试数据;
压力执行模块,用于采用一个以上线程发送所述生成的压力测试数据给数据库集群;
监控模块,用于采集数据库性能信息;
分析模块,用于判断采集的数据库性能信息是否位于预设的合理区间内,依据判断结果生成第一测试分析报告。
上述装置中,所述压力模型生成模块依据预先生成SQL语句生成压力测试数据,具体为:依据预设的测试压力比对预先生成的SQL语句进行复制,生成压力测试数据。
上述装置中,所述压力模型生成模块预先生成SQL语句具体为:
从指定目录下的指定文件中获取业务的工作日志;
从获取的业务的工作日志中提取SQL语句。
上述装置中,
所述业务的工作日志为业务的实时访问日志或业务的历史访问日志;
所述业务的实时访问日志由后台服务器存储到所述指定目录下的指定文件;
所述业务的历史访问日志由用户导入到所述指定目录下的指定文件。
上述装置中,所述压力模型生成模块预先生成SQL语句具体为:
接收导入的配置文件以及SQL语句模板;
用所述配置文件中的信息替换所述SQL语句模板中的默认参数,生成SQL语句。
上述装置中,所述监控模块采集数据库性能信息,具体为:
在压力执行模块发送压力测试数据给数据库集群的过程中,依据预先配置的采集频率,调用所述数据库集群中数据库所在设备的操作系统提供的访问接口,以及所述数据库提供的访问接口,采集数据库性能信息;所述数据库性能信息包括操作系统负载信息和数据库负载信息。
上述装置中,该装置还包括反馈模块;
所述分析模块,用于向反馈模块发送第二测试分析报告,所述第二测试分析报告包括判断结果为不位于合理区间的数据库性能信息及对应的合理区间;
所述反馈模块,用于判断数据库性能信息是大于合理范围的上限值,还是小于合理范围的下限值;当判断结果中仅有大于所述合理范围的上限值的数据库性能信息时,或,当判断结果中有大于所述合理范围的上限值的数据库性能信息和小于所述合理范围的下限值的数据库性能信息时,指示压力模型生成模块减小测试压力比;当判断结果中仅有小于所述合理范围的下限值的数据库性能信息时,指示压力模型生成模块增大测试压力比。
由以上技术方案可以看出,本发明提供的具有以下有益效果:
本发明的上述技术方案中,避免使用第三方提供的测试工具,从而避免复杂的安装操作以及人工部署,能够方便的应用于各个操作系统的数据库,实现数据库性能测试。此外,能够对用于测试的SQL语句、并发数、采集频率、合理区间进行灵活配置,能够应用于多种业务的数据库测试。
【附图说明】
图1是本发明实现数据库性能测试装置的优选实施例的结构示意图;
图2是本发明实现数据库性能测试方法的优选实施例的流程示意图;
图3是本发明优选实施例中压力模型生成模块的工作原理示意图;
图4是本发明优选实施例中压力执行模块的工作原理示意图;
图5是本发明优选实施例中反馈模块的工作原理示意图。
【具体实施方式】
本发明的基本思想是:压力模型生成模块依据预先生成的SQL语句生成压力测试数据;压力执行模块采用一个以上线程发送所述生成的压力测试数据给数据库集群;监控模块采集数据库性能信息;分析模块判断采集的数据库性能信息是否位于预设的合理区间内,依据判断结果生成第一测试分析报告。
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
本发明提供一种数据库性能测试装置,图1是本发明实现数据库性能测试装置的优选实施例的结构示意图,如图1所示,该装置包括:压力模型生成模块10、压力执行模块11、监控模块12、分析模块13、反馈模块14。
基于上述系统,本发明还提供一种数据库性能测试方法,图2是本发明实现数据库性能测试方法的优选实施例的流程示意图,如图2所示,该优选实施例包括以下步骤:
步骤201,压力模型生成模块依据预先生成的SQL语句生成压力测试数据。
具体的,图3是本发明优选实施例中压力模型生成模块的工作原理示意图,如图3所示,业务的工作日志可以是业务的实时访问日志,也可以是数据库中存储的业务的历史访问日志;业务的工作日志是线上业务的实际工作日志,并不是由用户配置的模拟日志,使得后续生成的用于测试的压力文件更加真实可靠。对于业务的实时访问日志,可以由后台服务器将业务的实时访问日志存储到指定目录下的指定文件中;对于数据库中存储的业务的历史访问日志,可以由用户将数据库中存储的业务的历史访问日志导入到指定目录下的指定文件中;压力模型生成模块根据预先配置的指定目录的地址和指定文件的地址,实时地从指定目录下的指定文件中读取业务的工作日志。
获取到业务的工作日志后,压力模型生成模块从业务的工作日志中提取出SQL语句,并依据提取出的SQL语句生成压力测试数据,将该压力测试数据保存到SQL压力文件中;这里,依据提取出的SQL语句生成压力测试数据时,可以直接将提取出的SQL语句作为压力测试数据;也可以依据测试压力比对生成的SQL语句进行复制,复制的次数等于测试压力比,将复制得到的SQL语句作为压力测试数据,将该压力测试数据保存到SQL压力文件中。
或,当业务是后台服务器中新上线的业务,还没有实际的工作日志时,用户可以预先在压力模型生成模块中导入配置文件以及SQL语句模板;其中,所述配置文件中包括表类型、结构、SQL类型和数量等信息;压力模型生成模块用配置文件中的信息替换SQL语句模板中的默认参数,生成SQL语句;一般情况下,压力模型生成模块利用这种方式生成的SQL语句不能用来直接作为压力测试数据,因为生成的SQL语句的数量不足以用于数据库性能测试时需要的SQL语句,因此压力模型生成模块还需要依据测试压力比对生成的SQL语句进行复制,复制的次数等于测试压力比,将复制得到的SQL语句作为压力测试数据,并将该压力测试数据保存到SQL压力文件中;例如,生成的SQL语句的数量为10,但是数据库性能测试时需要利用100个SQL语句,因此可以将测试压力比设置为9,然后压力模型生成模块就可以依据测试压力比,对生成的每个SQL语句进行9次复制,得到100个SQL语句,将该100个SQL语句作为压力测试数据保存到SQL压力文件中。
其中,将压力测试数据保存到SQL压力文件时,可以依据获取的业务的工作日志,将从同一个业务的工作日志中提取的SQL语句保存到一个SQL压力文件,也可以依据配置的数量生成对应的SQL压力文件,例如,只配置一个SQL压力文件的名称,则这里只生成一个SQL压力文件。压力模型生成模块将上述生成的SQL压力文件存储到预先配置的存储目录中。其中,所述测试压力比的初始值可以依据测试需求预先在压力模型生成模块中配置,反馈模块依据测试分析结果对所述测试压力比进行调节,如此,通过依据压力测试比控制SQL语句的数量,实现对数据库性能测试的测试压力进行控制,得到适宜的测试压力比;本优选实施例中,可以生成一个以上SQL压力文件,每个SQL压力文件都保存有压力测试数据,压力测试数据为压力模型生成模块生成的SQL语句的集合。
步骤202,压力执行模块采用一个以上线程发送生成的压力测试数据给数据库集群。
具体的,图4是本发明优选实施例中压力执行模块的工作原理示意图,如图4所示,压力执行模块包括一个以上客户机,每个客户机包括一个以上客户端,可以实现多线程;用户可以将压力模型生成模块中用于存储SQL压力文件的存储目录的路径预先配置在压力执行模块;压力执行模块的客户端依据配置的存储目录的路径,从压力模型生成模块中读取SQL压力文件;客户端从读取的SQL压力文件中获取压力测试数据,进一步读取出压力测试数据中包含的SQL语句,将读取出的SQL语句发送给数据库集群,所述数据库集群中包括一个以上待测试的数据库。
其中,当存在一个SQL压力文件时,客户端将按照SQL语句的顺序读取SQL语句;当存在两个以上SQL压力文件时,客户端依据预先配置的读取顺序,随机读取SQL压力文件或依据配置读取指定的SQL压力文件;因为SQL语句的顺序将会影响数据库的性能,所以客户端需要从读取的SQL压力文件中顺序读取SQL语句。发送SQL语句给数据库集群的客户端的数量,即压力执行模块的并发数,可以依据测试需求进行配置,例如,可以只有一个客户端发送SQL语句给数据库集群,也可以为了实现多线程,配置两个以上客户端同时发送SQL语句给数据库集群;对于每个客户端,可以依据测试需求配置发送SQL语句的数量,例如,可以只发送一个SQL语句,也可以发送两个以上SQL语句。例如,可以由一个客户端发送100个SQL语句给数据库集群,也可以由100个客户端同时发送,每个客户端发送一个SQL语句给数据库集群;如此,压力执行模块可以多进程和多线程地向数据库集群发送测试压力,最大限度的仿真线上业务压力。
步骤203,在压力执行模块发送压力测试数据的过程中,监控模块采集数据库性能信息。
具体的,在压力执行模块发送SQL压力文件中保存的压力测试数据中包含的SQL语句给数据库集群的过程中,监控模块负责监控数据库集群中的数据库,监控模块可以依据预先配置的采集频率,通过调用数据库集群中数据库所在设备的操作系统提供的访问接口,以及数据库集群中数据库提供的访问接口,采集数据库性能信息;这里,由于数据库是部署在设备上,而设备的运行依赖于操作系统,因此数据库的一部分性能需要通过操作系统的指标体现,例如,数据库的压力较大时将会占用操作系统的内存,因此,通过操作系统中内存的使用量或使用率可以获知数据库的性能;其中,操作系统可以是TCP、IOSTAT、TOP等,数据库可以是show status等;监控模块将采集到的数据库性能信息存储到数据库,或存储到指定的文件中。其中,可以将数据库集群中数据库所在设备的操作系统提供的访问接口的地址,以及数据库集群中数据库提供的访问接口的地址,预先配置在监控模块中。
其中,所述数据库性能信息包括操作系统负载信息和数据库负载信息;操作系统负载信息包括CPU的负载信息、内存的负载信息、网卡的负载信息;所述CPU的负载信息包括CPU的占用率(CUP_IDLE)、CPU等待I/O的时间(CPU_WA)以及CPU的负载平均值(SERVER_LOADAVG),所述内存的负载信息包括内存使用率(MEM_URATE)和内存使用量(MEM_USED);网卡的负载状态包括流入流量(NIC_TOTAL_IN)和流出流量(NIC_TOTAL_OUT);所述数据库负载信息包括每秒查询速率(QPS,QueryPer Second)、主从延迟、慢查询(SLOW_QUERIES_PT)和连接数;QPS包括读取速率(COM_READS)和写入速率(COM_WRITES);主从延迟指的是主从数据库的时间差,如果主从数据库的时间不一致,则将导致从主从数据库中读出的数据不同;连接数包括打开的连接数量(THREADS_CONNECTED)和打开的连接中利用SQL语句访问数据库的连接数量(THREADS_RUNNING),一般情况下THREADS_RUNNING的值小于THREADS_CONNECTED的值。
步骤204,分析模块判断采集的数据库性能信息是否位于预设的合理区间内,依据判断结果生成第一测试分析报告。
具体的,预先用shell命令语言编写分析脚本,并将该分析脚本配置到分析模块中;其中,该分析脚本包括为数据库性能信息设置的测试维度,该测试维度指的是数据库正常工作场景下数据库性能信息的合理区间,可以依据以往数据库工作时的经验值设置该合理区间。
分析模块从数据库或指定文件中获取数据库性能信息,然后依据配置的分析脚本,对获取的数据库性能信息进行分析,判断采集的数据库性能信息是否位于所述合理区间中,然后生成第一测试分析报告,该第一测试分析报告中包括数据库性能信息、合理区间以及判断结果,分析模块将第一测试分析报告发送到用户邮箱;其中,判断结果包括位于合理区间和不位于合理区间,其中位于合理区间表示获取的数据库性能信息位于预设的合理区间内,不位于合理区间表示获取的数据库性能信息超出测预设的合理区间。同时,分析模块发送第二测试分析报告给反馈模块,该第二测试分析报告包括判断结果为不位于合理区间的数据库性能信息及对应的合理区间,此时进一步执行步骤205。
例如,预设的合理范围包括COM_WRITESQPS≤1000,表示写入速率(COM_WRITES)应该小于等于1000,分析模块从获取的数据库性能信息中提取写入速率COM_WRITES这一项数据库性能信息,然后将提取的写入速率COM_WRITES的值与1000比较,如果写入速率COM_WRITES的值大于1000,则判断结果为不位于,如果写入速率COM_WRITES的值小于或等于1000,则判断结果为位于。
步骤205,反馈模块判断数据库性能信息是大于合理范围的上限值,还是小于合理范围的下限值;当判断结果中仅有小于所述合理范围的下限值的数据库性能信息时,反馈模块指示压力模型生成模块增大测试压力比;当判断结果中仅有大于所述合理范围的上限值的数据库性能信息时,反馈模块指示压力模型生成模块减小测试压力比;当判断结果中有大于所述合理范围的上限值的数据库性能信息,以及小于所述合理范围的下限值的数据库性能信息时,反馈模块指示压力模型生成模块减小测试压力比。
具体的,图5是本发明优选实施例中反馈模块的工作原理示意图,如图5所示,如果反馈模块从分析模块收到第二测试分析报告后,进一步判断数据库性能信息是大于合理范围的上限值,还是小于合理范围的下限值。
当判断结果中仅有大于所述合理范围的上限值的数据库性能信息时,表示该数据库性能信息过大,超过预期,需要减小测试压力比,则反馈模块指示压力模型生成模块减小测试压力比。
当判断结果中仅有小于所述合理范围的下限值的数据库性能信息时,表示数据库性能信息过小,没有达到预期,则需要增大测试压力比,反馈模块将增大测试压力比的指示信息发送给压力模型生成模块。
当判断结果中既有大于所述合理范围的上限值的数据库性能信息,也有小于所述合理范围的下限值的数据库性能信息时,依据数据库的运维规律,需要保证所有数据库性能信息都在合理范围之下,因此,需要减小测试压力比,反馈模块指示压力模型生成模块减小测试压力比。
压力模型生成模块依据收到的指示以及预先配置的调整幅度,对当前的测试压力比进行增大或减小的调整,并依据调整后的测试压力比生成压力测试数据。
本优选实施例中,如果采集的数据库性能信息不在合理区间内,表示模拟出的当前数据库的工作场景下,数据库不能够正常工作,为了确定数据库正常工作的场景,需要进一步进行调整测试压力比,使得压力模型生成模块对生成的压力测试数据进行调整,以获取数据库正常工作的场景,达到数据库性能测试的目的。
为实现上述方法,如图1所示,所述数据库性能测试装置中:
压力模型生成模块10,用于依据预先生成的SQL语句生成压力测试数据;
压力执行模块11,用于采用一个以上线程发送所述生成的压力测试数据给数据库集群;
监控模块12,用于采集数据库性能信息;
分析模块13,用于判断采集的数据库性能信息是否位于预设的合理区间内,依据判断结果生成第一测试分析报告;
所述分析模块13,还用于向反馈模块14发送第二测试分析报告,所述第二测试分析报告包括判断结果为不位于合理区间的数据库性能信息及对应的合理区间;
所述反馈模块14,用于判断数据库性能信息是大于合理范围的上限值,还是小于合理范围的下限值;当判断结果中仅有大于所述合理范围的上限值的数据库性能信息时,或,当判断结果中有大于所述合理范围的上限值的数据库性能信息和小于所述合理范围的下限值的数据库性能信息时,指示压力模型生成模块减小测试压力比;当判断结果中仅有小于所述合理范围的下限值的数据库性能信息时,指示压力模型生成模块增大测试压力比。
其中,所述压力模型生成模块10依据预先生成SQL语句生成压力测试数据,具体为:依据预设的测试压力比对预先生成的SQL语句进行复制,生成压力测试数据。
其中,所述压力模型生成模块10预先生成SQL语句具体为:从指定目录下的指定文件中获取业务的工作日志;从获取的业务的工作日志中提取SQL语句。
所述业务的工作日志为业务的实时访问日志或业务的历史访问日志;
所述业务的实时访问日志由后台服务器存储到所述指定目录下的指定文件;
所述业务的历史访问日志由用户导入到所述指定目录下的指定文件。
或,所述压力模型生成模块10预先生成SQL语句具体为:接收导入的配置文件以及SQL语句模板;用所述配置文件中的信息替换所述SQL语句模板中的默认参数,生成SQL语句。
其中,所述监控模块12采集数据库性能信息,具体为:在压力执行模块发送压力测试数据给数据库集群的过程中,依据预先配置的采集频率,调用所述数据库集群中数据库所在设备的操作系统提供的访问接口,以及所述数据库提供的访问接口,采集数据库性能信息;所述数据库性能信息包括操作系统负载信息和数据库负载信息。
本发明的上述技术方案中,SQL语句是依据业务的实际的工作日志获取的,因此是依据实际的线上数据来进行数据库性能测试,能够实现通过模拟实际场景来测试数据库性能,仿真性较高,测试结果精确。同时,利用上述技术方案就可以避免使用第三方提供的测试工具,避免进行复杂的安装操作以及人工部署,能够方便的应用于各个操作系统的数据库,实现数据库性能测试。此外,能够对用于测试的SQL语句、并发数、采集频率、合理区间进行灵活配置,使得上述方法和装置可以灵活应用于多种业务的数据库测试。反馈模块能够依据测试分析结果,调整压力模型生成模块中的测试压力比,进一步控制对数据库的测试压力,因此能够自动化、智能的对后续的测试进行调整,尽早发现数据库的瓶颈问题,提高数据库性能测试效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (14)

1.一种数据库性能测试方法,其特征在于,该方法包括:
压力模型生成模块依据预先生成的SQL语句生成压力测试数据;
压力执行模块采用一个以上线程发送所述生成的压力测试数据给数据库集群;
监控模块采集数据库性能信息;
分析模块判断采集的数据库性能信息是否位于预设的合理区间内,依据判断结果生成第一测试分析报告。
2.根据权利要求1所述的方法,其特征在于,所述压力模型生成模块依据预先生成SQL语句生成压力测试数据,具体为:
依据预设的测试压力比对预先生成的SQL语句进行复制,生成压力测试数据。
3.根据权利要求1或2所述的方法,其特征在于,所述预先生成SQL语句的方法为:
压力模型生成模块从指定目录下的指定文件中获取业务的工作日志;
压力模型生成模块从获取的业务的工作日志中提取SQL语句。
4.根据权利要求3所述的方法,其特征在于,
所述业务的工作日志为业务的实时访问日志或业务的历史访问日志;
所述业务的实时访问日志由后台服务器存储到所述指定目录下的指定文件;
所述业务的历史访问日志由用户导入到所述指定目录下的指定文件。
5.根据权利要求2所述的方法,其特征在于,所述预先生成SQL语句的方法为:
压力模型生成模块接收导入的配置文件以及SQL语句模板;
压力模型生成模块用所述配置文件中的信息替换所述SQL语句模板中的默认参数,生成SQL语句。
6.根据权利要求1所述的方法,其特征在于,所述监控模块采集数据库性能信息,具体为:
在压力执行模块发送压力测试数据给数据库集群的过程中,监控模块依据预先配置的采集频率,调用所述数据库集群中数据库所在设备的操作系统提供的访问接口,以及所述数据库提供的访问接口,采集数据库性能信息;所述数据库性能信息包括操作系统负载信息和数据库负载信息。
7.根据权利要求2所述的方法,其特征在于,该方法还包括:
分析模块向反馈模块发送第二测试分析报告,所述第二测试分析报告包括判断结果为不位于合理区间的数据库性能信息及对应的合理区间;
反馈模块判断数据库性能信息是大于合理范围的上限值,还是小于合理范围的下限值;
当判断结果中仅有大于所述合理范围的上限值的数据库性能信息时,或,当判断结果中有大于所述合理范围的上限值的数据库性能信息和小于所述合理范围的下限值的数据库性能信息时,反馈模块指示压力模型生成模块减小测试压力比;当判断结果中仅有小于所述合理范围的下限值的数据库性能信息时,反馈模块指示压力模型生成模块增大测试压力比。
8.一种数据库性能测试装置,其特征在于,该装置包括:
压力模型生成模块,用于依据预先生成的SQL语句生成压力测试数据;
压力执行模块,用于采用一个以上线程发送所述生成的压力测试数据给数据库集群;
监控模块,用于采集数据库性能信息;
分析模块,用于判断采集的数据库性能信息是否位于预设的合理区间内,依据判断结果生成第一测试分析报告。
9.根据权利要求8所述的装置,其特征在于,所述压力模型生成模块依据预先生成SQL语句生成压力测试数据,具体为:
依据预设的测试压力比对预先生成的SQL语句进行复制,生成压力测试数据。
10.根据权利要求8或9所述的装置,其特征在于,所述压力模型生成模块预先生成SQL语句具体为:
从指定目录下的指定文件中获取业务的工作日志;
从获取的业务的工作日志中提取SQL语句。
11.根据权利要10所述的装置,其特征在于,
所述业务的工作日志为业务的实时访问日志或业务的历史访问日志;
所述业务的实时访问日志由后台服务器存储到所述指定目录下的指定文件;
所述业务的历史访问日志由用户导入到所述指定目录下的指定文件。
12.根据权利要求9所述的装置,其特征在于,所述压力模型生成模块预先生成SQL语句具体为:
接收导入的配置文件以及SQL语句模板;
用所述配置文件中的信息替换所述SQL语句模板中的默认参数,生成SQL语句。
13.根据权利要求8所述的装置,其特征在于,所述监控模块采集数据库性能信息,具体为:
在压力执行模块发送压力测试数据给数据库集群的过程中,依据预先配置的采集频率,调用所述数据库集群中数据库所在设备的操作系统提供的访问接口,以及所述数据库提供的访问接口,采集数据库性能信息;所述数据库性能信息包括操作系统负载信息和数据库负载信息。
14.根据权利要求9所述的装置,其特征在于,该装置还包括反馈模块;
所述分析模块,用于向反馈模块发送第二测试分析报告,所述第二测试分析报告包括判断结果为不位于合理区间的数据库性能信息及对应的合理区间;
所述反馈模块,用于判断数据库性能信息是大于合理范围的上限值,还是小于合理范围的下限值;当判断结果中仅有大于所述合理范围的上限值的数据库性能信息时,或,当判断结果中有大于所述合理范围的上限值的数据库性能信息和小于所述合理范围的下限值的数据库性能信息时,指示压力模型生成模块减小测试压力比;当判断结果中仅有小于所述合理范围的下限值的数据库性能信息时,指示压力模型生成模块增大测试压力比。
CN201210385871.0A 2012-10-12 2012-10-12 一种数据库性能测试方法及装置 Pending CN103729361A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210385871.0A CN103729361A (zh) 2012-10-12 2012-10-12 一种数据库性能测试方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210385871.0A CN103729361A (zh) 2012-10-12 2012-10-12 一种数据库性能测试方法及装置

Publications (1)

Publication Number Publication Date
CN103729361A true CN103729361A (zh) 2014-04-16

Family

ID=50453439

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210385871.0A Pending CN103729361A (zh) 2012-10-12 2012-10-12 一种数据库性能测试方法及装置

Country Status (1)

Country Link
CN (1) CN103729361A (zh)

Cited By (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103970876A (zh) * 2014-05-15 2014-08-06 浪潮电子信息产业股份有限公司 一种基于Informix数据库服务器性能评估实现方法
CN104636257A (zh) * 2015-03-13 2015-05-20 胡兢玉 基于sql覆盖的数据库应用软件自动化测试方法
CN105389401A (zh) * 2015-12-25 2016-03-09 北京奇虎科技有限公司 数据库性能测试方法与装置
CN105446825A (zh) * 2014-06-12 2016-03-30 阿里巴巴集团控股有限公司 数据库测试方法及装置
CN105589803A (zh) * 2014-10-24 2016-05-18 阿里巴巴集团控股有限公司 一种测试工具的生成方法和终端设备
CN105912681A (zh) * 2016-04-14 2016-08-31 国家电网公司 电力营销用数据库老化测试方法及系统
CN105975603A (zh) * 2016-05-11 2016-09-28 深圳市永兴元科技有限公司 数据库性能测试方法及装置
CN106055464A (zh) * 2016-05-26 2016-10-26 努比亚技术有限公司 数据缓存集群压力测试装置及方法
CN106383786A (zh) * 2016-09-27 2017-02-08 北京金山安全软件有限公司 一种接口压力性能测试方法、装置及电子设备
CN107402810A (zh) * 2016-05-20 2017-11-28 阿里巴巴集团控股有限公司 线程分配方法及装置
CN107819649A (zh) * 2017-11-16 2018-03-20 北京卫星信息工程研究所 一种基于海量终端的卫星通信网络的私有协议测试方法
CN107861881A (zh) * 2017-11-30 2018-03-30 五八有限公司 压力测试方法及装置
CN108319711A (zh) * 2018-02-07 2018-07-24 腾讯科技(深圳)有限公司 数据库的事务一致性测试方法、装置、存储介质及设备
CN108334521A (zh) * 2017-01-19 2018-07-27 阿里巴巴集团控股有限公司 一种数据库容量预测方法及装置
CN108334442A (zh) * 2017-01-20 2018-07-27 武汉斗鱼网络科技有限公司 一种模拟搜索主播的测试方法和装置
CN108572916A (zh) * 2018-03-22 2018-09-25 平安科技(深圳)有限公司 基于Jmeter的压力测试方法、装置、设备及存储介质
CN108984374A (zh) * 2017-06-01 2018-12-11 腾讯科技(深圳)有限公司 一种数据库性能的测试方法和系统
CN109189661A (zh) * 2018-10-11 2019-01-11 上海电气集团股份有限公司 一种工业实时数据库的性能测试方法
CN109241154A (zh) * 2018-07-05 2019-01-18 武汉迎风聚智科技有限公司 一种分布式数据库监控分析方法及系统
CN109783331A (zh) * 2018-12-12 2019-05-21 深圳智链物联科技有限公司 数据库集群的压力测试方法和装置
CN109783334A (zh) * 2018-12-14 2019-05-21 平安普惠企业管理有限公司 压力测试报告生成方法、装置、计算机设备和存储介质
CN109918547A (zh) * 2019-03-08 2019-06-21 山东浪潮通软信息科技有限公司 一种数据库会话管理方法及装置
CN110147328A (zh) * 2019-05-24 2019-08-20 深圳市网心科技有限公司 一种数据库性能测试方法、系统、电子设备和存储介质
CN110209567A (zh) * 2018-04-09 2019-09-06 腾讯科技(深圳)有限公司 一种性能测试方法及装置
CN110427329A (zh) * 2019-08-13 2019-11-08 杭州有赞科技有限公司 一种数据库sql性能数据的采集方法及系统
CN110554958A (zh) * 2019-08-01 2019-12-10 北京百度网讯科技有限公司 图数据库测试方法、系统、设备和存储介质
CN111026622A (zh) * 2018-10-10 2020-04-17 华为技术有限公司 测试被测系统最大服务请求量的方法及装置
CN111045903A (zh) * 2019-10-25 2020-04-21 武汉迎风聚智科技有限公司 高并发的tpc-e测试方法以及装置
CN111090572A (zh) * 2019-12-18 2020-05-01 紫光云(南京)数字技术有限公司 一种对MySQL数据库进行性能测试的系统和方法
CN111309576A (zh) * 2020-02-18 2020-06-19 北京达佳互联信息技术有限公司 一种压力测试方法和装置
CN111563014A (zh) * 2019-02-13 2020-08-21 北京京东尚科信息技术有限公司 接口服务性能测试方法、装置、设备和存储介质
CN111625458A (zh) * 2020-05-27 2020-09-04 泰康保险集团股份有限公司 业务系统测试方法、装置及设备
CN112732571A (zh) * 2021-01-05 2021-04-30 中国工商银行股份有限公司 一种测试数据生成方法及装置
CN112783785A (zh) * 2021-02-01 2021-05-11 紫光云技术有限公司 一种Nosql数据库性能的通用测试方法
CN113127312A (zh) * 2019-12-30 2021-07-16 北京金山云网络技术有限公司 用于数据库性能测试的方法、装置、电子设备及存储介质
CN113204451A (zh) * 2021-03-22 2021-08-03 北京中交兴路信息科技有限公司 一种对Redis集群的压力测试方法、系统、存储介质及终端
CN113656299A (zh) * 2021-08-12 2021-11-16 北京百度网讯科技有限公司 极限qps的确定方法、装置、电子设备及可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1648874A (zh) * 2005-03-18 2005-08-03 中国工商银行 一种银行主机运行压力测试系统
CN101093462A (zh) * 2006-06-22 2007-12-26 上海全成通信技术有限公司 数据库应用集群压力测试自动化方法
US20080228859A1 (en) * 2005-11-29 2008-09-18 Gridone, Co. Ltd Grid Computing System for Testing Application Program Capacity of Server
CN101789002A (zh) * 2010-01-22 2010-07-28 浪潮(北京)电子信息产业有限公司 一种服务器上数据库兼容性的测试的装置及方法
CN102054043A (zh) * 2010-12-30 2011-05-11 畅捷通软件有限公司 大数据生成方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1648874A (zh) * 2005-03-18 2005-08-03 中国工商银行 一种银行主机运行压力测试系统
US20080228859A1 (en) * 2005-11-29 2008-09-18 Gridone, Co. Ltd Grid Computing System for Testing Application Program Capacity of Server
CN101093462A (zh) * 2006-06-22 2007-12-26 上海全成通信技术有限公司 数据库应用集群压力测试自动化方法
CN101789002A (zh) * 2010-01-22 2010-07-28 浪潮(北京)电子信息产业有限公司 一种服务器上数据库兼容性的测试的装置及方法
CN102054043A (zh) * 2010-12-30 2011-05-11 畅捷通软件有限公司 大数据生成方法和装置

Cited By (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103970876A (zh) * 2014-05-15 2014-08-06 浪潮电子信息产业股份有限公司 一种基于Informix数据库服务器性能评估实现方法
CN105446825A (zh) * 2014-06-12 2016-03-30 阿里巴巴集团控股有限公司 数据库测试方法及装置
CN105589803A (zh) * 2014-10-24 2016-05-18 阿里巴巴集团控股有限公司 一种测试工具的生成方法和终端设备
CN105589803B (zh) * 2014-10-24 2018-12-28 阿里巴巴集团控股有限公司 一种测试工具的生成方法和终端设备
CN104636257A (zh) * 2015-03-13 2015-05-20 胡兢玉 基于sql覆盖的数据库应用软件自动化测试方法
CN104636257B (zh) * 2015-03-13 2017-10-27 胡兢玉 基于sql覆盖的数据库应用软件自动化测试方法
CN105389401A (zh) * 2015-12-25 2016-03-09 北京奇虎科技有限公司 数据库性能测试方法与装置
CN105389401B (zh) * 2015-12-25 2019-05-31 北京奇虎科技有限公司 数据库性能测试方法与装置
CN105912681A (zh) * 2016-04-14 2016-08-31 国家电网公司 电力营销用数据库老化测试方法及系统
CN105975603A (zh) * 2016-05-11 2016-09-28 深圳市永兴元科技有限公司 数据库性能测试方法及装置
CN107402810A (zh) * 2016-05-20 2017-11-28 阿里巴巴集团控股有限公司 线程分配方法及装置
CN107402810B (zh) * 2016-05-20 2020-07-14 阿里巴巴集团控股有限公司 线程分配方法及装置
CN106055464A (zh) * 2016-05-26 2016-10-26 努比亚技术有限公司 数据缓存集群压力测试装置及方法
CN106055464B (zh) * 2016-05-26 2018-11-20 努比亚技术有限公司 数据缓存集群压力测试装置及方法
CN106383786A (zh) * 2016-09-27 2017-02-08 北京金山安全软件有限公司 一种接口压力性能测试方法、装置及电子设备
CN106383786B (zh) * 2016-09-27 2019-05-17 北京金山安全软件有限公司 一种接口压力性能测试方法、装置及电子设备
CN108334521B (zh) * 2017-01-19 2022-04-19 阿里巴巴集团控股有限公司 一种数据库容量预测方法及装置
CN108334521A (zh) * 2017-01-19 2018-07-27 阿里巴巴集团控股有限公司 一种数据库容量预测方法及装置
CN108334442A (zh) * 2017-01-20 2018-07-27 武汉斗鱼网络科技有限公司 一种模拟搜索主播的测试方法和装置
CN108334442B (zh) * 2017-01-20 2021-05-28 武汉斗鱼网络科技有限公司 一种模拟搜索主播的测试方法和装置
CN108984374B (zh) * 2017-06-01 2021-05-07 腾讯科技(深圳)有限公司 一种数据库性能的测试方法和系统
CN108984374A (zh) * 2017-06-01 2018-12-11 腾讯科技(深圳)有限公司 一种数据库性能的测试方法和系统
CN107819649B (zh) * 2017-11-16 2020-12-04 北京卫星信息工程研究所 一种基于海量终端的卫星通信网络的私有协议测试方法
CN107819649A (zh) * 2017-11-16 2018-03-20 北京卫星信息工程研究所 一种基于海量终端的卫星通信网络的私有协议测试方法
CN107861881A (zh) * 2017-11-30 2018-03-30 五八有限公司 压力测试方法及装置
CN108319711B (zh) * 2018-02-07 2021-07-27 腾讯科技(深圳)有限公司 数据库的事务一致性测试方法、装置、存储介质及设备
CN108319711A (zh) * 2018-02-07 2018-07-24 腾讯科技(深圳)有限公司 数据库的事务一致性测试方法、装置、存储介质及设备
CN108572916B (zh) * 2018-03-22 2021-09-28 平安科技(深圳)有限公司 基于Jmeter的压力测试方法、装置、设备及存储介质
CN108572916A (zh) * 2018-03-22 2018-09-25 平安科技(深圳)有限公司 基于Jmeter的压力测试方法、装置、设备及存储介质
CN110209567B (zh) * 2018-04-09 2021-09-10 腾讯科技(深圳)有限公司 一种性能测试方法及装置
CN110209567A (zh) * 2018-04-09 2019-09-06 腾讯科技(深圳)有限公司 一种性能测试方法及装置
CN109241154A (zh) * 2018-07-05 2019-01-18 武汉迎风聚智科技有限公司 一种分布式数据库监控分析方法及系统
CN111026622A (zh) * 2018-10-10 2020-04-17 华为技术有限公司 测试被测系统最大服务请求量的方法及装置
CN111026622B (zh) * 2018-10-10 2021-10-22 华为技术有限公司 测试被测系统最大服务请求量的方法及装置
CN109189661A (zh) * 2018-10-11 2019-01-11 上海电气集团股份有限公司 一种工业实时数据库的性能测试方法
CN109783331B (zh) * 2018-12-12 2022-05-13 深圳智链物联科技有限公司 数据库集群的压力测试方法和装置
CN109783331A (zh) * 2018-12-12 2019-05-21 深圳智链物联科技有限公司 数据库集群的压力测试方法和装置
CN109783334A (zh) * 2018-12-14 2019-05-21 平安普惠企业管理有限公司 压力测试报告生成方法、装置、计算机设备和存储介质
CN111563014A (zh) * 2019-02-13 2020-08-21 北京京东尚科信息技术有限公司 接口服务性能测试方法、装置、设备和存储介质
CN109918547A (zh) * 2019-03-08 2019-06-21 山东浪潮通软信息科技有限公司 一种数据库会话管理方法及装置
CN110147328A (zh) * 2019-05-24 2019-08-20 深圳市网心科技有限公司 一种数据库性能测试方法、系统、电子设备和存储介质
CN110554958A (zh) * 2019-08-01 2019-12-10 北京百度网讯科技有限公司 图数据库测试方法、系统、设备和存储介质
CN110427329B (zh) * 2019-08-13 2023-04-25 杭州有赞科技有限公司 一种数据库sql性能数据的采集方法及系统
CN110427329A (zh) * 2019-08-13 2019-11-08 杭州有赞科技有限公司 一种数据库sql性能数据的采集方法及系统
CN111045903A (zh) * 2019-10-25 2020-04-21 武汉迎风聚智科技有限公司 高并发的tpc-e测试方法以及装置
CN111090572A (zh) * 2019-12-18 2020-05-01 紫光云(南京)数字技术有限公司 一种对MySQL数据库进行性能测试的系统和方法
CN113127312A (zh) * 2019-12-30 2021-07-16 北京金山云网络技术有限公司 用于数据库性能测试的方法、装置、电子设备及存储介质
CN113127312B (zh) * 2019-12-30 2024-04-05 北京金山云网络技术有限公司 用于数据库性能测试的方法、装置、电子设备及存储介质
CN111309576A (zh) * 2020-02-18 2020-06-19 北京达佳互联信息技术有限公司 一种压力测试方法和装置
CN111625458A (zh) * 2020-05-27 2020-09-04 泰康保险集团股份有限公司 业务系统测试方法、装置及设备
CN112732571A (zh) * 2021-01-05 2021-04-30 中国工商银行股份有限公司 一种测试数据生成方法及装置
CN112732571B (zh) * 2021-01-05 2024-01-26 中国工商银行股份有限公司 一种测试数据生成方法及装置
CN112783785A (zh) * 2021-02-01 2021-05-11 紫光云技术有限公司 一种Nosql数据库性能的通用测试方法
CN113204451A (zh) * 2021-03-22 2021-08-03 北京中交兴路信息科技有限公司 一种对Redis集群的压力测试方法、系统、存储介质及终端
CN113656299A (zh) * 2021-08-12 2021-11-16 北京百度网讯科技有限公司 极限qps的确定方法、装置、电子设备及可读存储介质
CN113656299B (zh) * 2021-08-12 2023-08-22 北京百度网讯科技有限公司 极限qps的确定方法、装置、电子设备及可读存储介质

Similar Documents

Publication Publication Date Title
CN103729361A (zh) 一种数据库性能测试方法及装置
US10515000B2 (en) Systems and methods for performance testing cloud applications from multiple different geographic locations
US6792393B1 (en) System and method for diagnosing computer system operational behavior
CN103390066B (zh) 一种数据库全局性自动化优化预警装置及其处理方法
CN100589418C (zh) 告警相关性规则的生成方法及生成系统
US7945657B1 (en) System and method for emulating input/output performance of an application
CN111124850A (zh) Mqtt服务器性能测试方法、系统、计算机设备及存储介质
CN108470228A (zh) 财务数据稽核方法及稽核系统
CN106055464B (zh) 数据缓存集群压力测试装置及方法
CN106302350B (zh) Url监测方法、装置及设备
CN107733735B (zh) 一种植入于压测宝中的脚本录制系统及方法
CN103592907A (zh) 一种网络采集系统
CN110175118A (zh) 软件性能测试方法和装置
CN102541885A (zh) 一种检测数据库阻塞的方法及装置
JP2016100006A (ja) パフォーマンス試験のためのベンチマーク・アプリケーションを生成する方法および装置
CN113420009B (zh) 一种基于大数据的电磁数据分析装置、系统及方法
CN102929899A (zh) 一种基于中间表的分布式报表系统
CN106933715A (zh) 一种基于不同测试场景的服务器性能测试方法
CN106294128B (zh) 一种导出报表数据的自动化测试方法及装置
CN103984634A (zh) 一种linux服务器的内存非稳态压力测试方法
CN107656851A (zh) 一种基于部件能耗模型的云服务器能耗测算方法及系统
CN109933581A (zh) 一种数据质量检测方法及系统
CN105975603A (zh) 数据库性能测试方法及装置
CN104281523A (zh) 一种需求可测性分析方法及系统
CN110377519A (zh) 大数据系统的性能容量测试方法、装置、设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20140416

RJ01 Rejection of invention patent application after publication