CN117112540B - 数据库性能测试方法和装置 - Google Patents

数据库性能测试方法和装置 Download PDF

Info

Publication number
CN117112540B
CN117112540B CN202311384208.3A CN202311384208A CN117112540B CN 117112540 B CN117112540 B CN 117112540B CN 202311384208 A CN202311384208 A CN 202311384208A CN 117112540 B CN117112540 B CN 117112540B
Authority
CN
China
Prior art keywords
data
test
database
instructions
grammar
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
Application number
CN202311384208.3A
Other languages
English (en)
Other versions
CN117112540A (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.)
Honor Device Co Ltd
Original Assignee
Honor Device 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 Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202311384208.3A priority Critical patent/CN117112540B/zh
Publication of CN117112540A publication Critical patent/CN117112540A/zh
Application granted granted Critical
Publication of CN117112540B publication Critical patent/CN117112540B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • 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/3684Test management for test design, e.g. generating new test cases
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种数据库性能测试方法和装置,涉及人工智能领域。从源数据库的日志中获取操作指令,从源数据库的数据集中获取数据,并根据从源数据库获取的数据集和操作指令生成符合目标数据库语法的数据操作命令,采用符合目标数据库语法的数据操作命令对目标数据库进行性能测试。由于数据操作命令来源于现有的源数据库,数据操作命令更符合实际生产场景;并且数据操作命令适配目标数据库语法,使得该方法可以适用于各种类型的数据库。

Description

数据库性能测试方法和装置
技术领域
本申请涉及人工智能领域,尤其涉及一种数据库性能测试方法和装置。
背景技术
随着时代发展,各种新架构的数据库如雨后春笋出现。在众多数据库中,究竟选择哪个数据库来使用,是需要经过严密的性能测试的。
例如,在技术选型或演进的时候,往往需要做数据库的性能测试。具体的,模拟相同的数据集和操作指令,对现网数据库和若干备选数据库分别进行性能测试,比较现网数据库和若干备选数据库的性能优劣。
例如,在举办促销活动的时候,购物网站业务量激增,相应的购物网站的数据库承受的读写压力会骤然增加。需要模拟这种场景,基于现实情况以较大倍数数据量进行压力测试,以验证当前数据库是否能承受对应的压力。
在实际生产场景,不同业务领域、不同场景的数据操作差异极大,数据库的种类各式各样,目前还没有一种测试方法能够较好得适用于种类繁多、场景复杂的各种数据库测试场景。
发明内容
本申请实施例提供一种数据库性能测试方法和装置,能够快速、高效地生成贴近实际生产场景的数据操作命令,用于对数据库进行性能测试;这些数据操作命令可以适用于各种类型的数据库。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,提供了一种数据库性能测试方法,该方法包括:从源数据库的日志中提取M条操作指令;将M条操作指令中每一条分别重构为满足目标数据库语法的测试指令;从源数据库的数据文件中获取数据集;根据数据集生成N组测试数据;按照M条测试指令的执行时序,根据M条测试指令与N组测试数据生成多条数据操作命令;按照多条数据操作命令对应的执行时序,对目标数据库执行多条数据操作命令,获取目标数据库执行多条数据操作命令的运行信息。其中,M大于或等于1;N大于或等于1。
在该方法中,从现有的数据库(源数据库)的日志中获取操作指令,从源数据库的数据集中获取数据,并根据从源数据库获取的操作对象(数据)和操作指令生成符合目标数据库(需要测试的数据库)语法的数据操作命令,采用符合目标数据库语法的数据操作命令对目标数据库进行性能测试。由于数据操作命令(测试指令和测试数据)来源于现有数据库,数据操作命令更符合实际生产场景;并且数据操作命令适配目标数据库语法,使得该方法可以适用于各种类型的数据库。
基于第一方面,在一种可能的实施方式中,将M条操作指令中每一条分别重构为满足目标数据库语法的测试指令包括:分别对M条操作指令中每一条进行命令解析,生成每一条操作指令对应的语法树;对每一个语法树进行语法重构,生成语法树对应的满足目标数据库语法的测试指令。
在该方法中,对操作指令的语法树进行语法重构,生成符合目标数据库语法的测试指令;是对语法树进行操作,通用性强,效率高;相比按照映射规则进行操作指令与测试指令的映射,大大降低了维护人员不断优化映射规则带来的工作量,使得该性能测试方法可以适用于各种不同类型的数据库。
基于第一方面,在一种可能的实施方式中,分别对M条操作指令中每一条进行命令解析,生成每一条操作指令对应的语法树包括:基于ALL(*)算法分别对M条操作指令中每一条进行命令解析,将每一条操作指令分别分解为对应的语法树。
基于第一方面,在一种可能的实施方式中,根据数据集生成N组测试数据包括:将数据集中每一条数据分别与一个随机数组合,生成训练数据集;根据训练数据集训练隐马尔可夫模型;将N个随机数作为种子输入训练后的隐马尔可夫模型,获得N组测试数据。
在该方法中,这些训练数据集来源于源数据库,更符合实际生产场景。并且,由于引入了随机数,测试数据不是对源数据库中数据的简单复制,在符合实际的同时还增加了随机性。并且,通过该方式构建训练数据集,需要生成几组测试数据,就将几个随机数作为种子输入训练后的隐马尔可夫模型,可以根据需要获取相应数量的不重复的测试数据。方便、快捷地生成大量不重复且贴近实际生产场景的测试数据。
基于第一方面,在一种可能的实施方式中,根据数据集生成N组测试数据包括:将数据集中N条数据作为N组测试数据。
这种实现方式方便快捷、简单易实现。
基于第一方面,在一种可能的实施方式中,根据M条测试指令与N组测试数据生成多条数据操作命令包括:将M条所述测试指令中每一条测试指令分别与N组测试数据中一组测试数据组合,生成M条所述测试指令对应的M条数据操作命令;其中,不同测试指令对应不同的测试数据。
在该方法中,按照1:1的比例生成测试指令对应的数据操作命令。
基于第一方面,在一种可能的实施方式中,根据M条测试指令与N组测试数据生成多条数据操作命令包括:将M条测试指令中每一条测试指令分别与N组测试数据组合,生成M条测试指令对应的M*N条数据操作命令。
在该方法中,按照1:N的比例生成测试指令对应的数据操作命令。可以快速构建出大量不重复且贴近实际生产场景的数据操作命令,避免了因数据操作命令简单重复导致的可信度降低的问题。
基于第一方面,在一种可能的实施方式中,数据操作命令为结构化查询语言SQL命令。
基于第一方面,在一种可能的实施方式中,运行信息包括:执行效率、计算资源占用率中至少一项。
基于第一方面,在一种可能的实施方式中,源数据库为大规模并行处理MPP数据库。
第二方面,提供了一种电子设备,该电子设备具有实现上述第一方面所述的数据库性能测试方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
第三方面,提供了一种电子设备,包括:处理器和存储器;该存储器用于存储计算机执行指令,当该电子设备运行时,该处理器执行该存储器存储的该计算机执行指令,以使该电子设备执行如上述第一方面中任一项所述的数据库性能测试方法。
第四方面,提供了一种电子设备,包括:处理器;所述处理器用于与存储器耦合,并读取存储器中的指令之后,根据所述指令执行如上述第一方面中任一项所述的数据库性能测试方法。
第五方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机可以执行上述第一方面中任一项所述的数据库性能测试方法。
第六方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机可以执行上述第一方面中任一项所述的数据库性能测试方法。
第七方面,提供了一种装置(例如,该装置可以是芯片系统),该装置包括处理器,用于支持电子设备实现上述第一方面中所涉及的功能。在一种可能的设计中,该装置还包括存储器,该存储器,用于保存电子设备必要的程序指令和数据。该装置是芯片系统时,可以由芯片构成,也可以包含芯片和其他分立器件。
其中,第二方面至第七方面中任一种设计方式所带来的技术效果可参见第一方面中不同设计方式所带来的技术效果,此处不再赘述。
附图说明
图1为本申请实施例提供的数据库性能测试方法所适用的一种电子设备的硬件结构示意图;
图2为本申请实施例提供的数据库性能测试方法的一种流程示意图;
图3为本申请实施例提供的数据库性能测试方法的一种流程示意图;
图4为一种生成数据操作命令的实现方式示意图;
图5为本申请实施例提供的数据库性能测试方法的一种流程示意图;
图6为本申请实施例提供的数据库性能测试方法的一种场景实例示意图;
图7为循环神经网络模型的一种结构示意图;
图8为生成数据操作命令的两种实现方式的流程示意图;
图9为执行本申请实施例提供的数据库性能测试方法的装置的一种模块划分示意图;
图10为本申请实施例提供的一种电子设备结构组成示意图。
具体实施方式
在本申请实施例的描述中,以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一种”、“所述”、“上述”、“该”和“这一”旨在也包括例如“一个或多个”这种表达形式,除非其上下文中明确地有相反指示。还应当理解,在本申请以下各实施例中,“至少一个”、“一个或多个”是指一个或两个以上(包含两个)。术语“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系;例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。术语“连接”包括直接连接和间接连接,除非另外说明。“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
数据库性能测试即,模拟各种数据操作场景(例如,读取数据、写入数据、删除数据、合并数据等),向数据库下发大量数据操作命令,得到数据库执行这些数据操作命令的性能(比如,执行时长、计算资源占用率等)。其中,数据操作命令用于对数据库中的一条或多条数据进行读取、写入、删除、合并等操作。
进行数据库性能测试前,通常需要先构建各种数据操作场景的数据操作命令。数据操作命令一般包括操作对象(数据)和操作指令,执行数据操作命令即在操作目标(数据库的表)中对操作对象(数据)执行操作指令。在一种示例中,数据操作命令为结构化查询语言(Structured Query Language,SQL)命令。
示例性的,一条SQL命令为insert into table_a values(a,b,c);表示在table_a中插入数据a,b,c。其中,insert into * values(*)为操作指令,table_a为操作目标,a,b,c为操作对象(数据)。
目前常用的数据库性能测试方法有以下几种。
通用标准测试:
例如TPC-C、TPC-H等。通用标准测试方法中,预先定义标准的数据操作命令(包括数据和操作指令),向需要测试的数据库下发标准的数据操作命令集,来进行性能测试。通用标准测试方法适合作为数据库性能的基准测试。在实际生产环境,不同业务领域、不同场景的数据操作差异极大,无法预先定义覆盖全部场景的标准数据操作命令,标准的数据操作命令不能真实反映业务在不同数据库上的性能。
基础压测工具:
使用Sysbench、Jmeter等多线程压测(压力测试)工具,把固定的数据操作命令以一定并发量向数据库下发。由于较大并发量是由一些基础数据操作命令重复而来,因此基础压测工具仅适用于比较固定且单一的场景,对于复杂场景无法覆盖全部分支,不能模拟复杂场景的数据操作命令下发。
镜像测试:
关系型数据库一般会在日志中记录完整的数据操作命令。镜像测试即解析关系型数据库的日志,直接将日志中记录的数据操作命令应用于需要测试的新的关系型数据库上,来测试新的关系型数据库的性能。但是,镜像测试仅适用于相同种类数据库在不同配置下的性能对比,不支持不同种类数据库间的比较;而且并不是所有类型的数据库都会在日志中记录完整的数据操作命令,也就无法从日志中获得用于测试的数据操作命令。比如,大规模并行处理(massively parallel processor,MPP)数据库的日志中仅保存操作指令,而不保存操作对象(数据),也就是说,MPP数据库的日志中未保存完整的数据操作命令。可见,镜像测试并不能使用于各种类型的数据库。
通过上述示例可以看出,目前的数据库性能测试方法不能适用于种类繁多、场景复杂的各种数据库测试场景。
本申请实施例提供一种数据库性能测试方法,从现有的数据库(本申请实施例中称为源数据库)的日志中获取操作指令,从源数据库的数据集中获取数据,并根据从源数据库获取的操作对象(数据)和操作指令生成符合目标数据库(需要测试的数据库)语法的数据操作命令,采用符合目标数据库语法的数据操作命令对目标数据库进行性能测试。由于数据操作命令来源于现有数据库,数据操作命令更符合实际生产场景;并且数据操作命令适配目标数据库语法,使得数据操作命令可以适用于各种类型的数据库。
本申请实施例提供的数据库性能测试方法可以应用于具备大数据处理能力的电子设备。上述电子设备可以包括服务器、平板电脑、笔记本电脑、个人电脑(personalcomputer,PC)、超级移动个人计算机(ultra-mobile personal computer,UMPC)、手持计算机、上网本、手机、个人数字助理(personal digital assistant,PDA)、车载设备等,本申请实施例对此不做任何限制。在本申请实施例中,上述电子设备是可以运行操作系统,安装应用程序的电子设备。可选地,电子设备运行的操作系统可以是安卓®系统,Windows®系统,iOS®系统等。
示例性的,请参考图1,其示出了一种电子设备100的结构示意图。电子设备100可包括处理器110,外部存储器接口120,内部存储器121,音频模块130,扬声器130A,麦克风130B,显示屏140,通信模块150,电源模块160,输入装置170,传感器模块180等。其中,传感器模块180可以包括压力传感器、触摸传感器等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元。例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),和/或神经网络处理器(neural-networkprocessing unit,NPU)等。其中,不同的处理单元可以是独立的部件,也可以集成在一个或多个处理器中。在一些实施例中,电子设备100也可以包括一个或多个处理器110。
其中,控制器是电子设备100的神经中枢和指挥中心。可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
应用处理器上可以运行电子设备100的操作系统,用于管理电子设备100的硬件与软件资源。比如,管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络、管理文件系统、管理驱动程序等。操作系统也可以用于提供一个让用户与系统交互的操作界面。其中,操作系统内可以安装各类软件,比如,驱动程序,应用程序(application,App)等。
NPU为神经网络(neural-network ,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路间(inter-integrated circuit,I2C)接口,集成电路间音频(integrated circuit sound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,SIM卡接口,和/或USB接口等。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储一个或多个计算机程序,该一个或多个计算机程序包括指令。处理器110可以通过运行存储在内部存储器121的上述指令,从而使得电子设备100执行本申请一些实施例中所提供的应用运行方法,以及各种应用以及数据管理等。内部存储器121可以包括代码存储区和数据存储区。其中,数据存储区可存储电子设备100使用过程中所创建的数据等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如一个或多个磁盘存储部件,闪存部件,通用闪存存储器(universalflash storage,UFS)等。在一些实施例中,处理器110可以通过运行存储在内部存储器121的指令,和/或存储在设置于处理器110中的存储器的指令,来使得电子设备100执行本申请实施例中所提供的应用运行方法,以及其他应用及数据管理。
电子设备100可以通过音频模块130,扬声器130A,麦克风130B,以及应用处理器等实现音频功能。例如音乐播放,录音等。音频模块130用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块130还可以用于对音频信号编码和解码。在一些实施例中,音频模块130可以设置于处理器110中,或将音频模块130的部分功能模块设置于处理器110中。
扬声器130A,也称“喇叭”,用于将音频电信号转换为声音信号。
麦克风130B,也称“话筒”,“传声器”,用于将声音信号转换为电信号。用户可以通过人嘴靠近麦克风130B发声,将声音信号输入到麦克风130B。
电子设备100的通信功能可以通过天线1,天线2以及通信模块150等实现。
通信模块150可以提供应用在电子设备100上的包括蜂窝,Wi-Fi,蓝牙(bluetooth,BT),无线数传模块(例如,433MHz,868MHz,915MHz)等无线通信的解决方案。通信模块150可以是集成至少一个通信处理模块的一个或多个器件。通信模块150经由天线1或者天线2接收电磁波,将电磁波信号滤波以及调频处理,将处理后的信号发送到处理器110。通信模块150还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线1或者天线2转为电磁波辐射出去。例如,电子设备100可以通过通信模块150获取源数据库、目标数据库。其中,源数据库是现有的数据库,源数据库的日志中保存了源数据库在一段时间内执行的操作指令,源数据库还包括数据集;根据源数据库的日志和数据集就可以构建出完整的数据操作命令。目标数据库是需要测试的数据库。采用构建出的数据操作命令向目标数据库下发,获取目标数据库执行这些数据操作命令的执行效率、计算资源占用率等参数,就实现了对目标数据库的性能测试。
电子设备100通过GPU,显示屏140,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏140和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏140用于显示图像,视频等。显示屏140包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏140,N为大于1的正整数。本申请实施例中,显示屏140可以用于显示用户界面,以及接收用户在用户界面的操作。例如,显示屏140上可以显示根据本申请实施例提供的方法获取到的目标数据库的性能参数。
在一些实施例中,显示屏140上设置有压力传感器、触摸传感器等。压力传感器用于感受压力信号,可以将压力信号转换成电信号。当有触摸操作作用于显示屏140,电子设备100根据压力传感器检测所述触摸操作强度。电子设备100也可以根据压力传感器的检测信号计算触摸的位置。触摸传感器,也称“触控面板”,可以与显示屏140组成触摸屏,也称“触控屏”。触摸传感器用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。还可以通过显示屏140提供与触摸操作相关的视觉输出。
电源模块160,可以用于向电子设备100包含的各个部件供电。在一些实施例中,该电源模块160可以是电池,如可充电电池。
输入装置170可以包括键盘、鼠标器等。键盘用于将英文字母、数字、标点符号等输入电子设备100,从而向电子设备100发出命令,输入数据等。鼠标器是电子设备100显示系统纵横坐标定位的指示器,用于向电子设备100输入指令等。其中,输入装置170可以通过有线连接方式连接电子设备100,比如,输入装置170通过GPIO接口、USB接口等连接电子设备100。输入装置170还可以通过无线方式连接电子设备100,比如,输入装置170通过蓝牙、红外等方式连接电子设备100。
示例性的,图2示出了本申请实施例提供的数据库性能测试方法的一种流程示意图。
如图2所示,本申请实施例提供的数据库性能测试方法,确定一个源数据库和一个目标数据库。源数据库可以是已使用的数据库。源数据库在运行过程中保存了相应的日志,源数据库的日志中记录了源数据库运行过程中的相关信息,例如源数据库执行的操作指令、执行操作指令的时刻等。源数据库还包括对应的数据集,数据集为源数据库中保存的数据的集合。目标数据库是性能测试的对象。在一种示例中,源数据库的数据集以数据文件的形式进行保存。
一方面,从源数据库的日志中提取操作指令。在一种示例中,MPP数据库的日志中不会记录完整的数据操作命令,会记录操作指令。可以从日志中提取这些操作指令。然后,对这些操作指令进行命令解析,获取到操作指令对应的语法树。之后,将操作指令对应的语法树进行重构,生成符合目标数据库语法的测试指令。
另一方面,从源数据库的数据文件中提取数据集。在一种实现方式中,直接使用源数据库的数据文件中提取的数据集作为测试数据集。在另一种实现方式中,基于隐马尔可夫模型,根据从数据文件中提取的数据集生成测试数据集,避免因数据简单重复导致的可信度减低的问题。
进一步的,将测试指令与测试数据集输入命令生成器。命令生成器按照测试指令的执行时序,根据测试指令和测试数据生成用于测试的数据操作命令。在一种实现方式中,按照M条测试指令的执行时序,将M条测试指令分别与N条测试数据进行组合,生成M*N条数据操作命令。这样,可以生成N倍于操作指令的测试指令,生成大量的数据操作命令,用于对目标数据库进行压力测试。
进一步的,命令生成器生成的数据操作命令输入命令执行器,命令执行器按照数据操作命令对应的执行时序对目标数据库执行这些数据操作命令,获取目标数据库执行这些数据操作命令的运行信息,例如获取目标数据库执行这些数据操作命令的执行效率、计算资源占用率等参数,就实现了对目标数据库的性能测试。
本申请实施例提供的数据库性能测试方法,对从源数据库获取的操作指令进行重构,生成的测试指令符合目标数据库的语法,使得该性能测试方法可以适用于不同种类的数据库。并且,测试指令与测试数据集都来源于源数据库,是生产场景中产生的真实数据,更符合实际生产场景。
下面结合具体示例,详细介绍本申请实施例提供的数据库性能测试方法。
示例性的,参考图3,本申请实施例提供的数据库性能测试方法可以包括:
S201、获取源数据库的日志。
源数据库可以是现有的数据库,比如现网正在使用的数据库。
通常来说,数据库的日志中会记录数据库使用过程中的相关信息,例如,用户对数据库执行的操作指令、执行操作指令的时刻等。
在一种示例中,源数据库为MPP数据库。
S202、从源数据库的日志中提取M条操作指令。
数据操作命令一般包括操作对象(数据)和操作指令,执行数据操作命令即在数据库中对操作对象(数据)执行操作指令。例如,常见的数据操作命令为SQL命令。以下实施例中,以数据操作命令为SQL命令为例进行描述。
一些种类的数据库日志中记录完整的SQL命令,可以从完整的SQL命令中提取出操作指令。一些种类的数据库(例如MPP数据库)日志中仅记录操作指令,不记录操作对象(数据),可以直接从日志中读取操作指令。
在一种实现方式中,从源数据库日志中读取M条操作指令。其中,M可以根据需要进行设置。在一种示例中,读取数据库日志中保存的全部操作指令。比如,源数据库日志中保存了20000条操作指令,则M的值为20000。在另一种示例中,源数据库日志中保存的操作指令条数大于M,按照预设规则提取源数据库日志中记录的M条操作指令。比如,预设规则为按照执行时间的先后顺序,倒序提取M条操作指令。在另一种示例中,提取源数据库日志中记录的执行时间在预设时长内的操作指令。比如,提取源数据库日志中记录的执行时间在距离当前时刻24小时之内的操作指令。
S203、将M条操作指令分别重构为满足目标数据库语法的测试指令。
目前,业界存在一些通过已有数据库的日志获取用于测试的数据操作命令的方法。在一种实现方式中,例如镜像测试方法,为了在模拟的生产环境进行压测,可以对源数据库的日志进行解析,获取源数据库对应的SQL命令,直接将获取的SQL命令作为目标数据库的数据操作命令集合。这种方案的实现方式简单,易于操作;但是这种实现方案仅支持相同种类数据库的性能比较,对于语法不兼容的数据库无法进行有效的测试。并且,对于大型MPP数据库等数据库,由于其架构特点,日志不会记录具体操作对象(数据),即不能从日志中直接获取到完整的可执行SQL。也就是说,这种实现方案不适用于MPP数据库等日志中不记录完整数据操作命令的数据库。在另一种实现方式中,如图4所示,从源数据库的日志中提取出SQL命令,预先设定映射规则,根据映射规则对这些SQL命令进行语法映射,获取符合目标数据库语法的SQL命令。采用符合目标数据库语法的SQL命令对目标数据库进行性能测试。这种实现方案可以支持不同种类数据库的性能比较,但是由于需要根据映射规则进行映射,对于映射规则中未定义的SQL命令不能进行映射,因此支持的SQL命令有限,不容易覆盖全部场景;想要支持较多SQL命令,就需要在映射规则中枚举大量SQL命令,维护映射规则的工作量较大。并且,对于大型MPP数据库等数据库,日志不会记录具体操作对象(数据),这种实现方案不适用于MPP数据库等日志中不记录完整数据操作命令的数据库。在另一种实现方式中,对源数据库的日志进行解析,获取源数据库对应的SQL命令,然后将SQL命令输入语言模型,输出语言转换后的测试命令。但是,直接基于语言模型转换的方式存在准确率不够高的问题。
本申请实施例提供的数据库性能测试方法中,将从源数据库日志中获取的操作指令重构为满足目标数据库语法的测试指令。这样,根据测试指令生成的用于测试的数据操作命令就可以适用于各种不同类型的数据库。
示例性的,如图5所示,该步骤(S203)可以包括S2031- S2032:
S2031、对从源数据库日志中获取的操作指令进行命令解析,生成操作指令对应的语法树。
在一种实现方式中,基于ALL(*)算法对操作指令进行命令解析,将操作指令分解为语法树。
在一种示例中,先对操作指令进行关键字标定。预先定义关键字标定规则,关键字标定规则中预先定义一些关键字或关键字组合,可以根据关键字标定规则将操作指令中的关键字或关键字组合标定出来。然后对操作指令进行语法匹配,在一种示例中,预先定义全量的语法匹配规则,每个语法匹配规则唯一对应一个优先级,按照语法匹配规则的优先级,根据语法匹配规则,按照从左到右的顺序对操作指令进行规则匹配,逐级分解直至匹配完成,就生成了对应的语法树。
示例性的,下面示出对一条操作指令进行解析的一种具体示例。
操作指令为:select * from s1.t1 a left join s2.t2 b on a.id1 = b.id2。
第1步,关键字标定。将操作指令中包含的关键字标记出来。关键字可以预先在关键字标定规则进行定义。
示例性的,select * from s1.t1 a left join s2.t2 b on a.id1 = b.id2中的关键字从左到右依次为:“select”、“from”、“.”、“left join”、“.”、“on”、“.”、“=”、“.”。
第2步,进行第1次规则匹配。
将select * from s1.t1 a left join s2.t2 b on a.id1 = b.id2识别为SELECT类型。
第3步,第1次规则匹配后,操作指令拆分为3部分:分支1.1、分支1.2、分支1.3和分支1.4。
其中,分支1.1为:(select);分支1.2为:(*);分支1.3为:(from);分支1.4为:(s1.t1 a left join s2.t2 b on a.id1 = b.id2)。
第4步,对于第3步的拆分结果继续拆分;其中分支1.1、分支1.2与分支1.3已经无法继续拆分,而分支1.4可以继续进行拆分。第2次规则匹配后,分支1.4拆分为:
分支1.4.1:(s1.t1 a);分支1.4.2:(left join);分支1.4.3:(s2.t2 b on a.id1= b.id2)。
第5步,对于第4步拆分结果的分支1.4.1继续拆分,拆分结果为:
分支1.4.1.1:(s1.t1);分支1.4.1.2:(a)。
第6步,对于第5步拆分结果的分支1.4.1.1继续拆分,拆分结果为:
分支1.4.1.1.1:(s1);分支1.4.1.1.2:(.);分支1.4.1.1.3:(t1)。
第7步,对于第4步拆分结果的分支1.4.3继续拆分,拆分结果为:
分支1.4.3.1:(s2.t2 b);分支1.4.3.2:(on);分支1.4.3.3:(a.id1 = b.id2)。
第8步,对于第7步拆分结果的分支1.4.3.1继续拆分,拆分结果为:
分支1.4.3.1.1:(s2.t2);分支1.4.3.1.2:(b)。
第9步,对于第7步拆分结果的分支1.4.3.3继续拆分,拆分结果为:
分支1.4.3.3.1:(a.id1);分支1.4.3.3.2:(=);分支1.4.3.3.3:(b.id2)。
第10步,对于第9步拆分结果的分支1.4.3.3.1继续拆分,拆分结果为:
分支1.4.3.3.1.1:(a);分支1.4.3.3.1.2:(.);分支1.4.3.3.1.3:(id1)。
第11步,对于第9步拆分结果的分支1.4.3.3.3继续拆分,拆分结果为:
分支1.4.3.3.3.1:(b);分支1.4.3.3.3.2:(.);分支1.4.3.3.3.3:(id2)。
经过上述步骤,将操作指令select * from s1.t1 a left join s2.t2 b ona.id1 = b.id2拆分为语法树。示例性的,该操作指令对应的语法树如图6所示。
S2032、对语法树进行语法重构,生成符合目标数据库语法的测试指令。
在一种实现方式中,预先基于循环神经网络进行训练。示例性的,先获取符合目标数据库语法的一些操作指令,作为训练指令。对每个训练指令进行命令解析,生成训练指令对应的语法树。对每个训练指令对应的语法树以“类型”为单位进行拆解。在一种示例中,将语法树中的“类型”与其对应的叶子节点作为输入向量x,将“类型”的父节点作为结果y,拆解语法树;这样就获取了根据训练指令对应的语法树生成的输入向量x的集合X以及结果y的集合Y。
仍然以图6所示语法树为例,虚线框①中,“类型”identifier:1与其对应的叶子节点IDENTIFIER:b作为输入向量x1,“类型”identifier:1的父节点tableIdentifier作为结果y1(结果值为:b)。虚线框②中,“类型”identifier:1与其对应的叶子节点IDENTIFIER:id2作为输入向量x2,“类型”identifier:1的父节点nestedIdentifier作为结果集y2(结果值为:id2)。虚线框③中,虚线框①的结果(b)和虚线框②的结果(id2)及节点DOT:.和“类型”节点columnIdentifier作为输入向量x3,“类型”节点columnIdentifier的父节点为结果y3(结果值为b.id2)。依次类推,就可以将大量的语法树拆解为循环神经网络的训练数据(包括输入向量的集合X和结果的集合Y)。
将输入向量的集合X作为循环神经网络的输入,将结果的集合Y作为循环神经网络的输出,对循环神经网络模型进行训练,得到训练后的循环神经网络模型。示例性的,图7示出了循环神经网络模型的一种结构示意图。如图7所示,循环神经网络模型包括输入层、隐藏层和输出层。可以理解的,图7所示循环神经网络模型仅为一种示例,在实际应用中,循环神经网络模型可以为其他结构。
在S2031获取到操作指令对应的语法树后,基于训练后的循环神经网络模型,对操作指令对应的语法树按照叶子节点到结点最后到根节点逐层计算的方式,获得符合目标数据库语法的测试指令。
本申请实施例中,对操作指令的语法树进行语法重构,生成符合目标数据库语法的测试指令;是对语法树进行操作,通用性强,效率高;相比按照映射规则进行操作指令与测试指令的映射,大大降低了维护人员不断优化映射规则带来的工作量,使得该性能测试方法可以适用于各种不同类型的数据库。
继续参考图3,本申请实施例提供的数据库性能测试方法还包括:
S301、获取源数据库的数据集。
在一种实现方式中,获取源数据库的数据文件,数据文件中保存了源数据库的数据集。
S302、根据源数据库的数据集与随机因子生成训练数据集。
示例性的,源数据库的数据集如表1所示。数据集中每一条数据包括“名字”和“年龄”两列。其中,每一列作为一个分词。
表1
将每一条数据与一个随机数(随机因子)组合,生成一条训练数据。在一种实现方式中,将随机因子作为一条训练数据中第一个分子。示例性的,生成的训练数据集如表2所示。
表2
S303、根据生成的训练数据集训练隐马尔可夫模型,得到训练后的隐马尔可夫模型。
S304、任意生成N个随机因子,将N个随机因子作为种子输入训练后的隐马尔可夫模型,获得N组测试数据。
示例性的,生成6(N=6)个随机因子,分别为:
3cc0855b5fb844c8887e9e3726127841,
16bb436d66aa4c5f83b325831fdac15b,
d20a95413dc745e38ec4b7c610a0c878,
c8e8a39134e64522adca3b251f9c661e,
145f67c5b2234c399b2802aa8ef5691e,
0fde6586224c4fd99b6e4e885cd4b9eb。
将这6个随机因子作为种子输入训练后的隐马尔可夫模型,引导出6组测试数据。分别为:
('张三', '23'); --3cc0855b5fb844c8887e9e3726127841;
('张四', '32'); --16bb436d66aa4c5f83b325831fdac15b;
('王七', '12'); --d20a95413dc745e38ec4b7c610a0c878;
('李八', '87'); --c8e8a39134e64522adca3b251f9c661e;
('张五', '52'); --145f67c5b2234c399b2802aa8ef5691e;
('谢一', '33'); --0fde6586224c4fd99b6e4e885cd4b9eb。
这些训练数据集来源于源数据库,更符合实际生产场景。并且,由于引入了随机因子,测试数据不是对源数据库中数据的简单复制,在符合实际的同时还增加了随机性。并且,通过该方式构建训练数据集,需要生成几组测试数据,就将几个随机因子作为种子输入训练后的隐马尔可夫模型,可以根据需要获取相应数量的不重复的测试数据。方便、快捷地生成大量不重复且贴近实际生产场景的测试数据。
S401、按照测试指令的执行时序,根据测试指令和测试数据生成用于测试的数据操作命令。
在一种实现方式中,按照M条测试指令的执行时序,将M条测试指令与N条测试数据进行组合,生成数据操作命令。其中,M大于或等于1,N大于或等于1。
在一种示例中,每一条测试指令分别与一条测试数据组合,生成M条测试指令对应的M条数据操作命令。其中,不同测试指令对应不同的测试数据。
示例性的,N=M=3,3条测试指令分别为:
insert into s.tbl(name, age) values(name1, age1);
delete from s.tbl where name = name2 and age = age2;
select * from s.tbl where name = name3 and age = age3;
3组测试数据分别为:
('张三', '23'); --3cc0855b5fb844c8887e9e3726127841;
('张四', '32'); --16bb436d66aa4c5f83b325831fdac15b;
('王七', '12'); --d20a95413dc745e38ec4b7c610a0c878;
生成的3条数据操作命令为:
insert into s.tbl(name, age) values ('张三', '23');--3cc0855b5fb844c8887e9e3726127841。
delete from s.tbl where name = '张四' and age = '32';--16bb436d66aa4c5f83b325831fdac15b。
select*from s.tbl where name ='王七' and age = '12';--d20a95413dc745e38ec4b7c610a0c878。
在另一种示例中,每一条测试指令与N条测试数据组合,生成M条测试指令对应的M*N条数据操作命令。
示例性的,执行S201-S203构建出一个insert语句insert into s.tbl(name,age) values(name1, age1)。按性能测试需求,需要同一时间构建出6个数据操作命令进行压力测试。将该insert语句与S304中生成的6个测试数据组合,构建出6个SQL命令如下:
insert into s.tbl(name, age) values ('张三', '23'); --3cc0855b5fb844c8887e9e3726127841。
insert into s.tbl(name, age) values ('张四', '32'); --16bb436d66aa4c5f83b325831fdac15b。
insert into s.tbl(name, age) values ('王七', '12'); --d20a95413dc745e38ec4b7c610a0c878。
insert into s.tbl(name, age) values ('李八', '87'); --c8e8a39134e64522adca3b251f9c661e。
insert into s.tbl(name, age) values ('张五', '52'); --145f67c5b2234c399b2802aa8ef5691e。
insert into s.tbl(name, age) values ('谢一', '33'); --0fde6586224c4fd99b6e4e885cd4b9eb。
按照数据操作命令(SQL命令)对应的执行时序对目标数据库执行这些数据操作命令,获取目标数据库执行这些数据操作命令的运行信息,例如获取目标数据库执行这些数据操作命令的执行效率、计算资源占用率等参数,就实现了对目标数据库的性能测试。
本申请实施例提供的数据库性能测试方法,高效地生成大量不重复且贴近实际生产场景的数据操作命令,避免了因数据简单重复导致的可信度降低的问题。例如,在一种实现方式中,参考图8的(a),测试人员自定义用于压测的SQL命令或从源数据库提取SQL命令后,对SQL命令进行简单复制构建SQL命令并发,然后执行复制生成的SQL命令。这种实现方式中,同一个SQL命令重复执行,可能由于数据库本身的缓存机制导致缓存命中率异常升高,不能体现数据库的真实性能;并且,写入数据高度重复可能极大提高数据的压缩率,极大提升底层数据块顺序写入的概率,降低了性能对比的可信度。
而本申请实施例提供的数据库性能测试方法,参考图8的(b),解析源数据库的数据文件获取训练数据集,根据训练数据集训练隐马尔可夫模型。再通过训练后的隐马尔可夫模型生成测试数据。这样就可以根据测试数据生成用于测试的数据操作命令。对目标数据库执行用于测试的数据操作命令,获取到目标数据库的性能参数。由于测试数据贴近实际生产场景且不重复,就可以构建出大量不重复且贴近实际生产场景的数据操作命令,避免了因数据操作命令简单重复导致的可信度降低的问题。
可以理解的是,本申请实施例提供的电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
本申请实施例可以根据上述方法示例对上述电子设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在一种示例中,请参考图9,其示出了执行本申请实施例提供的数据库性能测试方法的装置的一种模块划分示意图。该装置800包括指令重构模块810、数据构建模块820和命令产生模块830。
其中,指令重构模块810包括日志采集模块811、语法解析器812和语法生成器813;日志采集模块811用于从源数据库的日志中采集原始的操作指令和操作指令的执行时间,语法解析器812用于将原始的操作指令解析为语法树,语法生成器813用于基于目标数据库的语法对语法树进行重构,生成符合目标数据库语法的测试指令。
数据构建模块820包括数据采集模块821和模型模块822;数据采集模块821用于读取源数据库的数据文件,获取原始的数据集;模型模块822用于根据原始的数据集训练隐马尔可夫模型,还用于基于训练好的隐马尔可夫模型生成测试数据。
命令产生模块830包括命令生成器831和命令执行器832;命令生成器831用于根据测试指令和测试数据生成用于测试的数据操作命令,命令执行器832用于在目标数据库执行生成的数据操作命令。
在一种示例中,请参考图10,其示出了上述实施例中所涉及的电子设备的一种可能的结构示意图。该电子设备900包括:处理单元910和存储单元920。
其中,处理单元910,用于对电子设备900的动作进行控制管理。存储单元920用于保存电子设备900的程序代码和数据,处理单元910调用存储单元920存储的程序代码,以执行以上方法实施例中的各个步骤。
当然,上述电子设备900中的单元模块包括但不限于上述处理单元910和存储单元920。例如,电子设备900中还可以包括显示单元、通信单元、电源单元等。显示单元用于显示电子设备900的用户界面,例如,显示根据本申请实施例提供的方法获取到的目标数据库的性能参数。通信单元用于电子设备900与其他电子设备进行通信;例如,电子设备900可以通过通信单元从其他设备获取源数据库的日志和数据文件等;再例如,电子设备900可以通过通信单元向其他设备发送性能测试获取到的参数。电源单元用于对电子设备900供电。
其中,处理单元910可以是处理器或控制器,例如可以是中央处理器(centralprocessing unit,CPU),图形处理器(graphics processing unit,GPU),数字信号处理器(digital signal processor,DSP),专用集成电路(application-specific integratedcircuit,ASIC),现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。存储单元920可以是存储器。显示单元可以是显示屏等。
例如,处理单元910为处理器(如图1所示的处理器110),存储单元920可以为存储器(如图1所示的内部存储器121),显示单元可以为显示屏(如图1所示的显示屏140)。本申请实施例所提供的电子设备900可以为图1所示的电子设备100。其中,上述处理器、存储器、显示屏等可以连接在一起,例如通过总线连接。处理器调用存储器存储的程序代码,以执行以上方法实施例中的各个步骤。
本申请实施例还提供一种芯片系统(例如,片上系统(system on a chip,SoC)),该芯片系统包括至少一个处理器和至少一个接口电路。处理器和接口电路可通过线路互联。例如,接口电路可用于从其它装置(例如电子设备的存储器)接收信号。又例如,接口电路可用于向其它装置(例如处理器或者电子设备的触摸屏)发送信号。示例性的,接口电路可读取存储器中存储的指令,并将该指令发送给处理器。当所述指令被处理器执行时,可使得电子设备执行上述实施例中的各个步骤。当然,该芯片系统还可以包含其他分立器件,本申请实施例对此不作具体限定。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括计算机指令,当所述计算机指令在上述电子设备上运行时,使得该电子设备执行上述方法实施例中各个功能或者步骤。
本申请实施例还提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行上述方法实施例中各个功能或者步骤。
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (8)

1.一种数据库性能测试方法,其特征在于,包括:
从源数据库的日志中提取M条操作指令;M大于或等于1;
将所述M条操作指令中每一条分别重构为满足目标数据库语法的测试指令;
从所述源数据库的数据文件中获取数据集;
根据所述数据集生成N组测试数据;N大于或等于1;
按照M条所述测试指令的执行时序,根据M条所述测试指令与所述N组测试数据生成多条数据操作命令;
按照所述多条数据操作命令对应的执行时序,对所述目标数据库的表执行所述多条数据操作命令,获取所述目标数据库执行所述多条数据操作命令的运行信息;
其中,所述将所述M条操作指令中每一条分别重构为满足目标数据库语法的测试指令包括:分别对所述M条操作指令中每一条进行命令解析,生成每一条操作指令对应的语法树;对每一个所述语法树进行语法重构,生成语法树对应的满足目标数据库语法的测试指令;
所述根据所述数据集生成N组测试数据包括:将所述数据集中每一条数据分别与一个随机数组合,生成训练数据集;根据所述训练数据集训练隐马尔可夫模型;将N个随机数作为种子输入训练后的隐马尔可夫模型,获得所述N组测试数据;
所述根据M条所述测试指令与所述N组测试数据生成多条数据操作命令包括:
将所述M条所述测试指令中每一条测试指令分别与所述N组测试数据中一组测试数据组合,生成所述M条所述测试指令对应的M条数据操作命令,其中,不同测试指令对应不同的测试数据;或者,
将所述M条所述测试指令中每一条测试指令分别与所述N组测试数据组合,生成M条所述测试指令对应的M*N条数据操作命令。
2.根据权利要求1所述的方法,其特征在于,所述分别对所述M条操作指令中每一条进行命令解析,生成每一条操作指令对应的语法树包括:
基于ALL(*)算法分别对所述M条操作指令中每一条进行命令解析,将每一条操作指令分别分解为对应的语法树。
3.根据权利要求1所述的方法,其特征在于,所述根据所述数据集生成N组测试数据包括:
将所述数据集中N条数据作为所述N组测试数据。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述数据操作命令为结构化查询语言SQL命令。
5.根据权利要求1-3中任一项所述的方法,其特征在于,所述运行信息包括:执行效率、计算资源占用率中至少一项。
6.根据权利要求1-3中任一项所述的方法,其特征在于,所述源数据库为大规模并行处理MPP数据库。
7.一种电子设备,其特征在于,包括:处理器和存储器;所述存储器中存储有一个或多个计算机程序,所述一个或多个计算机程序包括指令,当所述指令被所述电子设备执行时,使得所述电子设备执行如权利要求1-6中任一项所述的方法。
8.一种计算机可读存储介质,其特征在于,包括计算机指令;当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-6中任一项所述的方法。
CN202311384208.3A 2023-10-24 2023-10-24 数据库性能测试方法和装置 Active CN117112540B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311384208.3A CN117112540B (zh) 2023-10-24 2023-10-24 数据库性能测试方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311384208.3A CN117112540B (zh) 2023-10-24 2023-10-24 数据库性能测试方法和装置

Publications (2)

Publication Number Publication Date
CN117112540A CN117112540A (zh) 2023-11-24
CN117112540B true CN117112540B (zh) 2024-07-05

Family

ID=88795172

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311384208.3A Active CN117112540B (zh) 2023-10-24 2023-10-24 数据库性能测试方法和装置

Country Status (1)

Country Link
CN (1) CN117112540B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109344056A (zh) * 2018-09-07 2019-02-15 武汉达梦数据库有限公司 一种测试方法以及测试装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190094779A (ko) * 2018-02-06 2019-08-14 엘에스산전 주식회사 Plc 명령어 컴파일러 테스트케이스 자동 생성 장치
CN112286741A (zh) * 2020-10-09 2021-01-29 湖南中联重科智能技术有限公司 一种硬件测试方法、装置、电子设备及存储介质
CN116166700A (zh) * 2023-02-01 2023-05-26 阿里云计算有限公司 查询方法、装置、系统、电子设备及存储介质
CN116431452A (zh) * 2023-03-23 2023-07-14 度小满科技(北京)有限公司 数据库的压力测试方法、装置、电子设备和可读存储介质

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109344056A (zh) * 2018-09-07 2019-02-15 武汉达梦数据库有限公司 一种测试方法以及测试装置

Also Published As

Publication number Publication date
CN117112540A (zh) 2023-11-24

Similar Documents

Publication Publication Date Title
CN106960219B (zh) 图片识别方法及装置、计算机设备及计算机可读介质
US20210019665A1 (en) Machine Learning Model Repository Management and Search Engine
US11030149B2 (en) File format for accessing data quickly and efficiently
CN109471851B (zh) 数据处理方法、装置、服务器和存储介质
CN111309760A (zh) 数据检索方法、系统、设备及存储介质
JP5791149B2 (ja) データベース・クエリ最適化のためのコンピュータで実装される方法、コンピュータ・プログラム、およびデータ処理システム
KR20060093018A (ko) 항목들 사이의 관계와의 상호작용을 위한 시스템 및 방법
US11030402B2 (en) Dictionary expansion using neural language models
US10171311B2 (en) Generating synthetic data
Rabl et al. Just can't get enough: Synthesizing Big Data
US20180365294A1 (en) Artificial intelligence driven declarative analytic platform technology
WO2005038587A3 (en) Drug model explorer
CN111930615A (zh) 代码质量评估方法及装置
CN112970011B (zh) 记录查询优化中的谱系
US20240256537A1 (en) Techniques for building data lineages for queries
CN112541091A (zh) 图像搜索方法、装置、服务器和存储介质
CN117573519A (zh) 重复代码检测方法、装置、终端设备及存储介质
CN114841138A (zh) 行间的机器阅读
CN117112540B (zh) 数据库性能测试方法和装置
US20210027157A1 (en) Unsupervised concept discovery and cross-modal retrieval in time series and text comments based on canonical correlation analysis
US9280582B2 (en) Optimization of join queries for related data
CN116306672A (zh) 一种数据处理方法及其装置
CN108073643B (zh) 任务处理方法和装置
CN111159203B (zh) 一种数据关联分析的方法、平台、电子设备及存储介质
US20170351738A1 (en) Automatic conversion stage discovery

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