CN112115118B - 数据库压测的优化方法及装置、存储介质、电子设备 - Google Patents
数据库压测的优化方法及装置、存储介质、电子设备 Download PDFInfo
- Publication number
- CN112115118B CN112115118B CN202010842921.8A CN202010842921A CN112115118B CN 112115118 B CN112115118 B CN 112115118B CN 202010842921 A CN202010842921 A CN 202010842921A CN 112115118 B CN112115118 B CN 112115118B
- Authority
- CN
- China
- Prior art keywords
- pressure measurement
- subtask
- database
- timing
- storage space
- 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
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/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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
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)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Measuring Fluid Pressure (AREA)
Abstract
本发明公开了一种数据库压测的优化方法及装置、存储介质、电子设备,涉及计算机技术领域,主要目的在于解决现有数据库压测效率较低的问题。其中方法主要包括:启动至少一个压测子任务,并创建与所述压测子任务匹配的协程;配置所述协程中所述压测子任务的锁状态,并对所述协程执行所述压测子任务的压测进行计时;当计时时间大于预设定时时间,则统计解析所述压测的压测结果,并释放所述锁状态。主要用于数据库压测的优化。
Description
技术领域
本发明涉及一种计算机技术领域,尤其是涉及一种数据库压测的优化方法及装置、存储介质、电子设备。
背景技术
在开发、测试、灰度、生产环境下,会对未上线的业务系统、以及运行中的业务系统,通过数据库数据同步技术,将源数据库数据同步至目标数据库,对目标数据库进行压力测试,简称压测,以通过源数据库与目标数据库中的硬件资源、参数配置等信息的一致性,确定源数据库中的数据库性能。
目前,现有会通过数据库压力测试工具,如压测系统,在物理机或云环境中分别进行基线压测、业务压测,模拟并回放至压测数据库,直到通过数据库平均响应时间衡量压测数据库已不满足业务系统的性能需求为止,取此时操作压测数据库的操作内容作为业务压测的最优测试结果。然而,压测系统在并发量过大时,物理机上无法进行基线压测,物理机上也无法灵活的提供压测参数模拟不同的业务场景,导致业务压测较为固守,并且,压测系统无法较为有效、便捷的部署较为前言技术的云环境的基线压测、业务压测,得到的压测结果较慢,经常出现压测结果无响应等情况,使得数据库压测效率较低。
发明内容
本发明实施例所要解决的一个技术问题是现有数据库压测效率较低的问题。
依据本发明一个方面,提供了一种数据库压测的优化方法,包括:
启动至少一个压测子任务,并创建与所述压测子任务匹配的协程;
配置所述协程中所述压测子任务的锁状态,并对所述协程执行所述压测子任务的压测进行计时;
当计时时间大于预设定时时间,则统计解析所述压测的压测结果,并释放所述锁状态。
进一步地,所述启动至少一个压测子任务之前,所述方法还包括:
基于并行器为压测子任务分配用于存储压测结果、以及执行状态的存储空间;
所述启动至少一个压测子任务,并创建与所述压测子任务匹配的协程包括:
启动与接收到的压测参数匹配的至少一个压测子任务;
从待进行压测的主线程中创建与所述压测子任务的个数匹配的管道资源,并基于所述管道资源为所述压测子任务创建协程。
进一步地,所述配置所述协程中所述压测子任务的锁状态,并对所述协程执行所述压测子任务的压测进行计时包括:
通过超时器配置所述协程中所述压测子任务的锁状态;
基于所述协程启动所述压测子任务的压测,并通过所述超时器对所述压测子任务进行计时。
进一步地,所述通过超时器配置所述协程中所述压测子任务的锁状态之前,所述方法还包括:
将与所述压测子任务的存储空间匹配的序列信息传输至所述超时器,所述序列信息为包含有所述压测子任务的序列号、所述存储空间的地址信息的单向链表。
进一步地,所述基于所述协程启动所述压测子任务的压测,并通过所述超时器对所述压测子任务进行计时包括:
更新所述序列信息对应存储空间中的执行状态,并指示对SQL文本进行循环访问;
基于所述循环访问的结果确定压测结果、执行状态,更新至所述序列信息的对应存储空间中,并通过所述超时器对所述循环访问进行计时。
进一步地,所述统计解析所述压测的结果包括:
获取所述序列信息中所述压测子任务对应存储空间的执行状态、压测结果,根据所述执行状态、所述压测结果计算压测指标参数,确定所述压测的结果。
进一步地,所述压测指标参数至少包括数据库成功请求量、数据库失败请求量、数据库总请求量、数据库总消耗时间、平均数据库响应时间、最大数据库响应时间、最小数据库响应时间中之一。
依据本发明另一个方面,提供了一种数据库压测的优化装置,包括:
创建模块,用于启动至少一个压测子任务,并创建与所述压测子任务匹配的协程;
配置模块,用于配置所述协程中所述压测子任务的锁状态,并对所述协程执行所述压测子任务的压测进行计时;
统计模块,用于当计时时间大于预设定时时间,则统计解析所述压测的压测结果,并释放所述锁状态。
进一步地,所述装置还包括:分配模块,
所述分配模块,用于基于并行器为压测子任务分配用于存储压测结果、以及执行状态的存储空间;
所述创建模块包括:
启动单元,用于启动与接收到的压测参数匹配的至少一个压测子任务;
创建单元,用于从待进行压测的主线程中创建与所述压测子任务的个数匹配的管道资源,并基于所述管道资源为所述压测子任务创建协程。
进一步地,所述配置模块包括:
配置单元,用于通过超时器配置所述协程中所述压测子任务的锁状态;
计时单元,用于基于所述协程启动所述压测子任务的压测,并通过所述超时器对所述压测子任务进行计时。
进一步地,所述装置还包括:
传输模块,用于将与所述压测子任务的存储空间匹配的序列信息传输至所述超时器,所述序列信息为包含有所述压测子任务的序列号、所述存储空间的地址信息的单向链表。
进一步地,所述计时单元包括:
指示子单元,用于更新所述序列信息对应存储空间中的执行状态,并指示对SQL文本进行循环访问;
计时子单元,用于基于所述循环访问的结果确定压测结果、执行状态,更新至所述序列信息的对应存储空间中,并通过所述超时器对所述循环访问进行计时。
进一步地,所述统计模块,具体用于获取所述序列信息中所述压测子任务对应存储空间的执行状态、压测结果,根据所述执行状态、所述压测结果计算压测指标参数,确定所述压测的结果。
进一步地,所述压测指标参数至少包括数据库成功请求量、数据库失败请求量、数据库总请求量、数据库总消耗时间、平均数据库响应时间、最大数据库响应时间、最小数据库响应时间中之一。
根据本发明的又一方面,提供了一种存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如上述数据库压测的优化方法对应的操作。
根据本发明的再一方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述数据库压测的优化方法对应的操作。
借由上述技术方案,本发明实施例提供的技术方案至少具有下列优点:
本发明提供了一种数据库压测的优化方法及装置、存储介质、电子设备,与现有技术相比,本发明实施例通过启动至少一个压测子任务,并创建与所述压测子任务匹配的协程;配置所述协程中所述压测子任务的锁状态,并对所述协程执行所述压测子任务的压测进行计时;当计时时间大于预设定时时间,则统计解析所述压测的压测结果,并释放所述锁状态,利用协程解决了高并发下压测的无响应问题,并支持兼容更多数据库的压测任务,提高物理机上的压测性能,使得满足对压测数据性能分析的高需求,从而提高数据库的压测效率。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
构成说明书的一部分的附图描述了本发明的实施例,并且连同描述一起用于解释本发明的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本发明,其中:
图1示出了本发明实施例提供的一种数据库压测的优化方法流程图;
图2示出了本发明实施例提供的另一种数据库压测的优化方法流程图;
图3示出了本发明实施例提供的一种协程、线程、进程之间的资源关系示意图;
图4示出了本发明实施例提供的一种压测系统流程示意图;
图5示出了本发明实施例提供的一种系统功能结构的示意图;
图6示出了本发明实施例提供的一种数据库压测的优化装置组成框图;
图7示出了本发明实施例提供的另一种数据库压测的优化装置组成框图;
图8示出了本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本发明实施例可以应用于计算机系统/服务器,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与计算机系统/服务器一起使用的众所周知的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
计算机系统/服务器可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
本发明实施例提供了一种数据库压测的优化方法,如图1所示,该方法包括:
101、启动至少一个压测子任务,并创建与所述压测子任务匹配的协程。
其中,所述压测子任务用于表征待进行压测的单个任务,可以包括对一个数据库进行压测的一个任务,本发明实施例中,当前系统中根据用户录入的压测参数确定启动至少一个压测子任务,例如,一组压测参数启动一个压测子任务等,本发明实施例不做具体限定。另外,为了满足高并发需求,利用协程作为执行压测子任务的最小执行单元,因此,当前系统中获取一个进程,通过进程中的一个线程创建匹配压测子任务的协程,即创建协程的个数与压测子任务的个数相同。
需要说明的是,为了使当前系统支持物理机、虚拟机、云原生环境等技术背景,为了实现直接编辑机器码,不再依赖其他数据库的语言,本发明实施例中选取静态强类型、编译型语言Golang作为本发明实施例程序设计的底层核心开发语言。
102、配置所述协程中所述压测子任务的锁状态,并对所述协程执行所述压测子任务的压测进行计时。
其中,所述锁状态用于表征对压测子任务的主线程执行状态的限制,即为使执行压测子任务的主线程进行阻塞,以使完成压测子任务后释放主线程,进入下一个任务流程。具体的,配置压测子任务的锁状态可以通过调取循环函数接口,将当前主线程注入到循环函数中,或者可以直接对主线程执行的内容进行挂起等操作,本发明实施例不做具体限定。另外,为了满足高并发需求以及可控串行需求下对压测时间的精准控制,对协程执行压测子任务的压测进行计时,具体可通过一个超时器进行计时,本发明实施例不做具体限定。
103、当计时时间大于预设定时时间,则统计解析所述压测的压测结果,并释放所述锁状态。
本发明实施例中,在通过对协程中执行压测子任务的压测进行计时过程中,通过超时器中预先设定的预设定时时间进行对比,当计时时间大于预设定时时间,完成压测,释放锁状态,使得执行压测子任务的协程退出压测程序,进行主线程中的下一个任务流程。另外,对于结束压测子任务,为了提高压测性能,可以直接对协程中进行压测过程中已得到的压测结果进行一次统计解析,以提高压测效率。具体的,各协程中完成压测的压测成功次数、压测执行次数作为压测结果进行统计解析,如包括对压测指标参数至少包括数据库成功请求量、数据库失败请求量、数据库总请求量、数据库总消耗时间、平均数据库响应时间、最大数据库响应时间、最小数据库响应时间中之一进行统计,本发明实施例不做具体限定。
本发明实施例提供了一种数据库压测的优化方法,与现有技术相比,本发明实施例通过启动至少一个压测子任务,并创建与所述压测子任务匹配的协程;配置所述协程中所述压测子任务的锁状态,并对所述协程执行所述压测子任务的压测进行计时;当计时时间大于预设定时时间,则统计解析所述压测的压测结果,并释放所述锁状态,利用协程解决了高并发下压测的无响应问题,并支持兼容更多数据库的压测任务,提高物理机上的压测性能,使得满足对压测数据性能分析的高需求,从而提高数据库的压测效率。
本发明实施例提供了另一种数据库压测的优化方法,如图2所示,该方法包括:
201、基于并行器为压测子任务分配用于存储压测结果、以及执行状态的存储空间。
对于本发明实施例,为了满足高并发需求,对每个待进行压测的压测子任务分配存储空间,用于存储压测结果、执行状态。其中,压测结果为执行压测的次数,执行状态为压测是否执行成功的状态,如执行成功、执行失败,具体的,基于并行器按照高并发数量进行为压测子任务分配存储空间,并得到存储空间的序列信息。所述序列信息为包含有所述压测子任务的序列号、所述存储空间的地址信息的单向链表,例如,压测子任务的序号、存储空间的地址信息以Key、Vaule的数据结构有序地写入不同的单向链表中,且压测结果与执行状态分别对应压测结果链表R,执行状态链表S,本发明实施例不做具体限定。
需要说明的是,由于是对压测子任务分配用于存储压测结果、执行状态的存储空间,对于存储空间的大小、类型、适用语言可以根据各压测子任务进行压测的大小、类型、适用语言进行配置,本发明实施例不做具体限定。
202、启动与接收到的压测参数匹配的至少一个压测子任务。
203、从待进行压测的主线程中创建与所述压测子任务的个数匹配的管道资源,并基于所述管道资源为所述压测子任务创建协程。
本发明实施例中,为了解决压测过程中的高并发问题,本发明实施例中创建压测子任务的个数匹配的管道资源,以通过管道资源为压测子任务创建协程,从而实现高并发问题下对压测子任务的压测。其中,如图3所示协程、线程、进程之间的资源关系,创建的协程可以根据当前系统的操作进行调度给对应的压测子任务,从而减少了上、下文切换的繁琐性,提高效率,且本发明实施例中的协程预先配置为1k,相对于线程更为轻量,以便在相同的系统内存中启动多个压测子任务进行压测,满足高并发需求。
需要说明的是,待进行压测的主线程中除进行压测外,还可以进行其他操作的执行,因此,本发明实施例基于压测子任务的个数,在执行压测的线程中创建管道资源,进而通过管道资源创建匹配个数的协程,使得在同一个线程中创建协程执行对应的压测子任务,避免各压测子任务的压测相互影响,本发明实施例不做具体限定。
204、通过超时器配置所述协程中所述压测子任务的锁状态。
本发明实施例中,为了实现时间的精准控制,以提高压测的效率,通过预先配置的超时器配置协程中压测子任务的锁状态。具体的,由于压测子任务的锁状态用于使执行压测子任务的主线程进行阻塞,因此,本发明实施例中,预先配置一个阻塞程序,用于对压测子任务的主线程进行阻塞,即当启动协程中的压测子任务时,通过超时器启动阻塞程序来阻塞主线程,并启动协程中压测子任务,使得压测子任务处于锁定执行状态。另外,由于协程的创建为基于主线程,因此,若任意一个线程中的协程的压测子任务处于锁状态,则会阻塞此线程的执行,从而解决高并发的问题。
需要说明的是,若一个进程中的多个线程中存在任意一个协程中压测子任务的锁状态,则分别会对主线程进行阻塞,至到全部的压测子任务完成后,超时器释放锁,则继续执行主线程,本发明实施例不做具体限定。
205、基于所述协程启动所述压测子任务的压测,并通过所述超时器对所述压测子任务进行计时。
本发明实施例中,当主线程处于阻塞状态下,启动协程中的压测子任务进行压测,即为如图4所示的压测系统流程图,进入压测逻辑中进行压力测试,并利用超时器对压测子任务的执行进行计时。
进一步地,本发明实施例,所述通过超时器配置所述协程中所述压测子任务的锁状态之前,所述方法还包括:将与所述压测子任务的存储空间匹配的序列信息传输至所述超时器。
本发明实施例中,在分配存储空间时,会得到存储有压测结果、执行状态的存储空间,为了使超时器完整的对各压测子任务进行计时,将存储空间的序列信息传输至超时器,以便超时器在计时过程中,根据得到的序列信息将压测结果、执行状态更新至序列信息对应的存储空间中。具体的,启动压测子任务时,唤醒并发器,并将并发器分配给各压测子任务的压测结果链表R,执行状态链表S传递至超时器,以指示超时器配置压测子任务的锁状态,并按照自旋方式轮询监听压测子任务的运行时间,以便将压测子任务中每次压测的压测结果、执行状态更新至序列信息对应的存储空间。其中,所述序列信息为包含有所述压测子任务的序列号、所述存储空间的地址信息的单向链表,即可以基于序列信息确定压测子任务的序列号,对应序列号的压测子任务压测得到的压测结果、执行状态对应存储空间的地桩信息,进行存储,本发明实施例不做具体限定。
对于本发明实施例,为了进一步限定及说明压测执行内容,步骤205具体可以为:更新所述序列信息对应存储空间中的执行状态,并指示对SQL文本进行循环访问;基于所述循环访问的结果确定压测结果、执行状态,更新至所述序列信息的对应存储空间中,并通过所述超时器对所述循环访问进行计时。
具体的,当通过所述超时器对所述压测子任务进行计时,对于循环进行压测的压测子任务,生成每次压测的压测结果,以及执行状态,如压测一次成功,为了使压测更为高效、满足压测的高性能需求,在压测开始时,更新序列信息对应存储空间中的执行状态,以实现清空存储空间的目的,并指示对SQL文本进行循环访问,说明本发明实施例中的压测为基于SQL语言进行的,如图5所示的系统功能结构图,通过压测子任务的子任务连接器连接至各个SQL语言的数据库中进行循环访问,完成压测。并根据循环访问的每次访问的结果确定压测结果、执行状态,如图4所示,读取SQL文本请求访问数据库,若成功,则确定压测结果为1,执行状态为成功,更新至序列信息中压测子任务序列号、执行状态、压测结果对应的存储空间中,并基于超时器持续对循环访问进行计时。例如,序列信息为压测子任务a的压测结果链表、执行状态链表,分别记录有压测子任务a序列号,压测结果存储空间地址信息,执行状态存储空间地址信息,当得到压测子任务a读取SQL文件请求访问数据库后,将压测1次成功分别更新至压测结果存储空间地址信息对应的压测结果存储空间中,以及执行状态存储空间地址信息对应的执行状态存储空间中,本发明实施例中的更新可以包括数量累计的更新,如成功次数、失败次数累计的更新,本发明实施例不做具体限定。
进一步地,访问数据库成功的响应时间、访问次数同样会更新至单向链表中,以便统计下一次访问数据库时,更新响应时间、访问次数,本发明实施例不做具体限定。另外,若连接数据库、执行数据库超时等原因时压测失败,压测子任务可以通过追加更新错误计数的值,直到压测子任务到达预设定时时间。
需要说明的是,如图5所示,用户输入压测参数后,利用参数解析器进行解析,子任务生成器为各个压测子任务分配协程启动超时器配置锁状态,子任务执行器执行压测子任务,将压测结果、执行状态反馈指标分析模块中进行统计,其中,子任务连接器在执行压测时,连接有各个数据库进行压测,本发明实施例不做具体限定。
206、当计时时间大于预设定时时间,则获取所述序列信息中所述压测子任务对应存储空间的执行状态、压测结果,根据所述执行状态、所述压测结果计算压测指标参数,确定所述压测的结果。
对于本发明实施例,若计时时间大于预设时间,即说明压测子任务的压测执行完毕,从而实现以超时器来提高压测性能的目的,因此,根据在超时器计时过程中更新在存储空间的执行状态、压测结果计算压测指标参数,从而完整、高效的确定压测的结果。其中,所述压测指标参数至少包括数据库成功请求量、数据库失败请求量、数据库总请求量、数据库总消耗时间、平均数据库响应时间、最大数据库响应时间、最小数据库响应时间中之一,具体的,首先定义并发数量、数据库超时时间、执行总时间,为用户输入的参数值,对于数据库成功请求量的计算方法为所有压测子任务的成功访问次数的和,数据库失败请求量的计算方法为所有压测子任务的失败访问次数的和,数据库总请求量的计算方法为数据库成功请求量与数据库失败请求量的和,数据库总消耗时间的计算方法为所有压测子任务的响应时间的和,平均数据库响应时间的计算方法为数据库总消耗时间除以数据库成功请求量,最大数据库响应时间的计算方法为查询所有压测子任务中单次执行最慢的响应时间,最小数据库响应时间的计算方法为查询所有压测子任务中单次执行最快的响应时间。需要说明的是,当完成压测子任务后,即执行时间大于预设定时时间,则停止协程,超时器释放锁状态,使得主线程执行下一个任务,完成压测,为了提高压测处理效率,基于数据库成功请求量、数据库失败请求量、数据库总请求量、数据库总消耗时间、平均数据库响应时间、最大数据库响应时间、最小数据库响应时间中的至少一个生成压测的结果,以示完成压测。
本发明实施例提供了另一种数据库压测的优化方法,与现有技术相比,本发明实施例通过启动至少一个压测子任务,并创建与所述压测子任务匹配的协程;配置所述协程中所述压测子任务的锁状态,并对所述协程执行所述压测子任务的压测进行计时;当计时时间大于预设定时时间,则统计解析所述压测的压测结果,并释放所述锁状态,利用协程解决了高并发下压测的无响应问题,并支持兼容更多数据库的压测任务,提高物理机上的压测性能,使得满足对压测数据性能分析的高需求,从而提高数据库的压测效率。
进一步的,作为对上述图1所示方法的实现,本发明实施例提供了一种数据库压测的优化装置,如图6所示,该装置包括:
创建模块31,用于启动至少一个压测子任务,并创建与所述压测子任务匹配的协程;
配置模块32,用于配置所述协程中所述压测子任务的锁状态,并对所述协程执行所述压测子任务的压测进行计时;
统计模块33,用于当计时时间大于预设定时时间,则统计解析所述压测的压测结果,并释放所述锁状态。
本发明实施例提供了一种数据库压测的优化装置,与现有技术相比,本发明实施例通过启动至少一个压测子任务,并创建与所述压测子任务匹配的协程;配置所述协程中所述压测子任务的锁状态,并对所述协程执行所述压测子任务的压测进行计时;当计时时间大于预设定时时间,则统计解析所述压测的压测结果,并释放所述锁状态,利用协程解决了高并发下压测的无响应问题,并支持兼容更多数据库的压测任务,提高物理机上的压测性能,使得满足对压测数据性能分析的高需求,从而提高数据库的压测效率。
进一步的,作为对上述图2所示方法的实现,本发明实施例提供了另一种数据库压测的优化装置,如图7所示,该装置包括:
创建模块41,用于启动至少一个压测子任务,并创建与所述压测子任务匹配的协程;
配置模块42,用于配置所述协程中所述压测子任务的锁状态,并对所述协程执行所述压测子任务的压测进行计时;
统计模块43,用于当计时时间大于预设定时时间,则统计解析所述压测的压测结果,并释放所述锁状态。
进一步地,所述装置还包括:分配模块44,
所述分配模块44,用于基于并行器为压测子任务分配用于存储压测结果、以及执行状态的存储空间;
所述创建模块41包括:
启动单元4101,用于启动与接收到的压测参数匹配的至少一个压测子任务;
创建单元4102,用于从待进行压测的主线程中创建与所述压测子任务的个数匹配的管道资源,并基于所述管道资源为所述压测子任务创建协程。
进一步地,所述配置模块42包括:
配置单元4201,用于通过超时器配置所述协程中所述压测子任务的锁状态;
计时单元4202,用于基于所述协程启动所述压测子任务的压测,并通过所述超时器对所述压测子任务进行计时。
进一步地,所述装置还包括:
传输模块45,用于将与所述压测子任务的存储空间匹配的序列信息传输至所述超时器,所述序列信息为包含有所述压测子任务的序列号、所述存储空间的地址信息的单向链表。
进一步地,所述计时单元4202包括:
指示子单元420201,用于更新所述序列信息对应存储空间中的执行状态,并指示对SQL文本进行循环访问;
计时子单元420202,用于基于所述循环访问的结果确定压测结果、执行状态,更新至所述序列信息的对应存储空间中,并通过所述超时器对所述循环访问进行计时。
进一步地,所述统计模块43,具体用于获取所述序列信息中所述压测子任务对应存储空间的执行状态、压测结果,根据所述执行状态、所述压测结果计算压测指标参数,确定所述压测的结果。
进一步地,所述压测指标参数至少包括数据库成功请求量、数据库失败请求量、数据库总请求量、数据库总消耗时间、平均数据库响应时间、最大数据库响应时间、最小数据库响应时间中之一。
本发明实施例提供了另一种数据库压测的优化装置,与现有技术相比,本发明实施例通过启动至少一个压测子任务,并创建与所述压测子任务匹配的协程;配置所述协程中所述压测子任务的锁状态,并对所述协程执行所述压测子任务的压测进行计时;当计时时间大于预设定时时间,则统计解析所述压测的压测结果,并释放所述锁状态,利用协程解决了高并发下压测的无响应问题,并支持兼容更多数据库的压测任务,提高物理机上的压测性能,使得满足对压测数据性能分析的高需求,从而提高数据库的压测效率。
根据本发明一个实施例提供了一种存储介质,所述存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的数据库压测的优化方法。
图8示出了根据本发明一个实施例提供的一种电子设备的结构示意图,本发明具体实施例并不对电子设备的具体实现做限定。
如图8所示,该电子设备可以包括:处理器(processor)502、通信接口(Communications Interface)504、存储器(memory)506、以及通信总线508。
其中:处理器502、通信接口504、以及存储器506通过通信总线508完成相互间的通信。
通信接口504,用于与其它设备比如客户端或其它服务器等的网元通信。
处理器502,用于执行程序510,具体可以执行上述数据库压测的优化方法实施例中的相关步骤。
具体地,程序510可以包括程序代码,该程序代码包括计算机操作指令。
处理器502可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。电子设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器506,用于存放程序510。存储器506可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序510具体可以用于使得处理器502执行以下操作:
启动至少一个压测子任务,并创建与所述压测子任务匹配的协程;
配置所述协程中所述压测子任务的锁状态,并对所述协程执行所述压测子任务的压测进行计时;
当计时时间大于预设定时时间,则统计解析所述压测的压测结果,并释放所述锁状态。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
可能以许多方式来实现本发明的方法和系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和系统。用于所述方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
Claims (12)
1.一种数据库压测的优化方法,其特征在于,包括:
启动至少一个压测子任务,并创建与所述压测子任务匹配的协程;
配置所述协程中所述压测子任务的锁状态,并对所述协程执行所述压测子任务的压测进行计时;
当计时时间大于预设定时时间,则统计解析所述压测的压测结果,并释放所述锁状态;
其中,所述配置所述协程中所述压测子任务的锁状态,并对所述协程执行所述压测子任务的压测进行计时包括:
通过超时器配置所述协程中所述压测子任务的锁状态;
基于所述协程启动所述压测子任务的压测,并通过所述超时器对所述压测子任务进行计时;
所述通过超时器配置所述协程中所述压测子任务的锁状态之前,所述方法还包括:
将与所述压测子任务的存储空间匹配的序列信息传输至所述超时器,所述序列信息为包含有所述压测子任务的序列号、所述存储空间的地址信息的单向链表。
2.根据权利要求1所述的方法,其特征在于,所述启动至少一个压测子任务之前,所述方法还包括:
基于并行器为压测子任务分配用于存储压测结果、以及执行状态的存储空间;
所述启动至少一个压测子任务,并创建与所述压测子任务匹配的协程包括:
启动与接收到的压测参数匹配的至少一个压测子任务;
从待进行压测的主线程中创建与所述压测子任务的个数匹配的管道资源,并基于所述管道资源为所述压测子任务创建协程。
3.根据权利要求2所述的方法,其特征在于,所述基于所述协程启动所述压测子任务的压测,并通过所述超时器对所述压测子任务进行计时包括:
更新所述序列信息对应存储空间中的执行状态,并指示对SQL文本进行循环访问;
基于所述循环访问的结果确定压测结果、执行状态,更新至所述序列信息的对应存储空间中,并通过所述超时器对所述循环访问进行计时。
4.根据权利要求3所述的方法,其特征在于,所述统计解析所述压测的结果包括:
获取所述序列信息中所述压测子任务对应存储空间的执行状态、压测结果,根据所述执行状态、所述压测结果计算压测指标参数,确定所述压测的结果。
5.根据权利要求4所述的方法,其特征在于,所述压测指标参数至少包括数据库成功请求量、数据库失败请求量、数据库总请求量、数据库总消耗时间、平均数据库响应时间、最大数据库响应时间、最小数据库响应时间中之一。
6.一种数据库压测的优化装置,其特征在于,包括:
创建模块,用于启动至少一个压测子任务,并创建与所述压测子任务匹配的协程;
配置模块,用于配置所述协程中所述压测子任务的锁状态,并对所述协程执行所述压测子任务的压测进行计时;
统计模块,用于当计时时间大于预设定时时间,则统计解析所述压测的压测结果,并释放所述锁状态;
其中,所述配置模块包括:
配置单元,用于通过超时器配置所述协程中所述压测子任务的锁状态;
计时单元,用于基于所述协程启动所述压测子任务的压测,并通过所述超时器对所述压测子任务进行计时;
所述装置还包括:
传输模块,用于将与所述压测子任务的存储空间匹配的序列信息传输至所述超时器,所述序列信息为包含有所述压测子任务的序列号、所述存储空间的地址信息的单向链表。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:分配模块,
所述分配模块,用于基于并行器为压测子任务分配用于存储压测结果、以及执行状态的存储空间;
所述创建模块包括:
启动单元,用于启动与接收到的压测参数匹配的至少一个压测子任务;
创建单元,用于从待进行压测的主线程中创建与所述压测子任务的个数匹配的管道资源,并基于所述管道资源为所述压测子任务创建协程。
8.根据权利要求7所述的装置,其特征在于,所述计时单元包括:
指示子单元,用于更新所述序列信息对应存储空间中的执行状态,并指示对SQL文本进行循环访问;
计时子单元,用于基于所述循环访问的结果确定压测结果、执行状态,更新至所述序列信息的对应存储空间中,并通过所述超时器对所述循环访问进行计时。
9.根据权利要求8所述的装置,其特征在于,
所述统计模块,具体用于获取所述序列信息中所述压测子任务对应存储空间的执行状态、压测结果,根据所述执行状态、所述压测结果计算压测指标参数,确定所述压测的结果。
10.根据权利要求9所述的装置,其特征在于,所述压测指标参数至少包括数据库成功请求量、数据库失败请求量、数据库总请求量、数据库总消耗时间、平均数据库响应时间、最大数据库响应时间、最小数据库响应时间中之一。
11.一种存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求1-5中任一项所述的数据库压测的优化方法对应的操作。
12.一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-5中任一项所述的数据库压测的优化方法对应的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010842921.8A CN112115118B (zh) | 2020-08-20 | 2020-08-20 | 数据库压测的优化方法及装置、存储介质、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010842921.8A CN112115118B (zh) | 2020-08-20 | 2020-08-20 | 数据库压测的优化方法及装置、存储介质、电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112115118A CN112115118A (zh) | 2020-12-22 |
CN112115118B true CN112115118B (zh) | 2023-09-22 |
Family
ID=73805230
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010842921.8A Active CN112115118B (zh) | 2020-08-20 | 2020-08-20 | 数据库压测的优化方法及装置、存储介质、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112115118B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112882883B (zh) * | 2021-02-25 | 2024-06-21 | 中国工商银行股份有限公司 | 停机测试方法和装置、电子设备和计算机可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107707638A (zh) * | 2017-06-01 | 2018-02-16 | 云智慧(北京)科技有限公司 | 一种分布式云压测机资源管理系统及方法 |
CN108845954A (zh) * | 2018-08-31 | 2018-11-20 | 中国联合网络通信集团有限公司 | 压力测试方法、系统及存储介质 |
CN109241039A (zh) * | 2018-09-19 | 2019-01-18 | 武汉斗鱼网络科技有限公司 | 一种全局唯一参数化文件的实现方法、系统、服务器及存储介质 |
CN109669979A (zh) * | 2018-12-18 | 2019-04-23 | 网易(杭州)网络有限公司 | 数据的处理方法及装置、存储介质 |
CN109739708A (zh) * | 2019-01-02 | 2019-05-10 | 网易(杭州)网络有限公司 | 测试压力的方法、装置和系统 |
CN111400015A (zh) * | 2020-03-24 | 2020-07-10 | 深圳前海微众银行股份有限公司 | 一种任务调度方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10491460B2 (en) * | 2016-04-15 | 2019-11-26 | Arista Networks, Inc. | Method and system for detecting abnormalities in network element operation |
-
2020
- 2020-08-20 CN CN202010842921.8A patent/CN112115118B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107707638A (zh) * | 2017-06-01 | 2018-02-16 | 云智慧(北京)科技有限公司 | 一种分布式云压测机资源管理系统及方法 |
CN108845954A (zh) * | 2018-08-31 | 2018-11-20 | 中国联合网络通信集团有限公司 | 压力测试方法、系统及存储介质 |
CN109241039A (zh) * | 2018-09-19 | 2019-01-18 | 武汉斗鱼网络科技有限公司 | 一种全局唯一参数化文件的实现方法、系统、服务器及存储介质 |
CN109669979A (zh) * | 2018-12-18 | 2019-04-23 | 网易(杭州)网络有限公司 | 数据的处理方法及装置、存储介质 |
CN109739708A (zh) * | 2019-01-02 | 2019-05-10 | 网易(杭州)网络有限公司 | 测试压力的方法、装置和系统 |
CN111400015A (zh) * | 2020-03-24 | 2020-07-10 | 深圳前海微众银行股份有限公司 | 一种任务调度方法及装置 |
Non-Patent Citations (1)
Title |
---|
四叉树空间索引技术在江苏电网GIS中的应用研究;王鹏飞;丁正阳;滕爱国;袁国泉;;电力信息与通信技术(第07期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112115118A (zh) | 2020-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11659020B2 (en) | Method and system for real-time modeling of communication, virtualization and transaction execution related topological aspects of monitored software applications and hardware entities | |
US12007866B2 (en) | System and method for database replication benchmark testing using a pipeline-based microservices model | |
US11036576B2 (en) | Automatically reconfiguring a performance test environment | |
Burns et al. | Design patterns for container-based distributed systems | |
US9582312B1 (en) | Execution context trace for asynchronous tasks | |
US6708324B1 (en) | Extensible automated testing software | |
CN112463144B (zh) | 分布式存储的命令行服务方法、系统、终端及存储介质 | |
CN108733464B (zh) | 一种确定计算任务的调度方案的方法及装置 | |
CN102880503A (zh) | 数据分析系统及数据分析方法 | |
Graur et al. | Cachew: Machine learning input data processing as a service | |
CN102955721A (zh) | 一种测试用的压力生成方法及装置 | |
US10810220B2 (en) | Platform and software framework for data intensive applications in the cloud | |
Pi et al. | Profiling distributed systems in lightweight virtualized environments with logs and resource metrics | |
CN113157411B (zh) | 一种基于Celery的可靠可配置任务系统及装置 | |
CN112650676A (zh) | 软件测试方法、装置、设备及存储介质 | |
CN112000466A (zh) | 数据库压力测试方法、装置及系统 | |
CN112433916A (zh) | 一种消息中间件系统状态的检查方法、装置、设备及存储介质 | |
CN111984505A (zh) | 一种运维数据采集引擎及采集方法 | |
CN110494849B (zh) | 用于确定跨平台应用迁移的成功的系统和方法 | |
CN112115118B (zh) | 数据库压测的优化方法及装置、存储介质、电子设备 | |
CN112948255B (zh) | 分布式的内核模糊测试系统及方法 | |
CN111290942A (zh) | 压力测试方法、装置以及计算机可读介质 | |
US10592277B2 (en) | System and method for determining the success of a cross-platform application migration | |
US10521272B1 (en) | Testing in grid computing systems | |
US11720348B2 (en) | Computing node allocation based on build process specifications in continuous integration environments |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100102 201 / F, block C, 2 lizezhong 2nd Road, Chaoyang District, Beijing Applicant after: Beijing Shuidi Technology Group Co.,Ltd. Address before: 100102 201, 2 / F, block C, No.2 lizezhong 2nd Road, Chaoyang District, Beijing Applicant before: Beijing Health Home Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |