CN108984374A - 一种数据库性能的测试方法和系统 - Google Patents

一种数据库性能的测试方法和系统 Download PDF

Info

Publication number
CN108984374A
CN108984374A CN201710402874.3A CN201710402874A CN108984374A CN 108984374 A CN108984374 A CN 108984374A CN 201710402874 A CN201710402874 A CN 201710402874A CN 108984374 A CN108984374 A CN 108984374A
Authority
CN
China
Prior art keywords
sql statement
database
thread
judge
application program
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
CN201710402874.3A
Other languages
English (en)
Other versions
CN108984374B (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201710402874.3A priority Critical patent/CN108984374B/zh
Publication of CN108984374A publication Critical patent/CN108984374A/zh
Application granted granted Critical
Publication of CN108984374B publication Critical patent/CN108984374B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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

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

一种数据库性能的测试方法和系统
技术领域
本发明涉及数据库技术领域,具体涉及一种数据库性能的测试方法和系统。
背景技术
数据持久化是一种数据存储方式,可以理解为将数据保存到硬盘中,使得应用程序或者设备重启之后可以继续访问之前保存的数据。对于智能终端(例如手机、平板电脑等)而言,数据库是用于实现数据持久化功能的最常用方式之一,其在插入和查询数据等方面使用简单,且效率较高。轻型结构化查询语言数据库(SQLite,Structured QueryLanguage Lite)为一款嵌入式数据库,其常用于作为动态库嵌入到应用程序中,为应用程序所使用。应用程序在上线后,随着用户的不断使用,需要持久化存储的数据越来越多,此时数据库操作的性能将对应用程序的整体性能有至关重要的影响,是引起应用程序卡顿的主要原因之一。
因此,应用程序在上线前,通常需要对应用程序的数据库性能进行测试,避免应用程序上线之后才发现数据库性能问题而导致用户投诉等问题。现有的测试方式中,通常是开发人员将智能终端的数据库文件复制到计算机上,然后通过人工分析结构化查询语言(SQL,Structured Query Language)语句使用的执行计划,以查找数据库性能问题。
在对现有技术的研究和实践过程中,本发明的发明人发现,现有方式需要人工获取测试数据以及人工分析数据库性能问题,导致测试效率低,且测试结果可能会受人为的主观因素影响而准确性较低。
发明内容
本发明实施例提供一种数据库性能的测试方法和系统,能够提高测试效率和测试结果的准确性。
本发明实施例提供一种数据库性能的测试方法,包括:
监测应用程序在运行过程中的数据库访问事件;
当监测到数据库访问事件时,获取所述数据库访问事件对应的数据库操作信息,所述数据库操作信息包括结构化查询语言SQL语句、所述SQL语句的执行计划、应用程序在执行所述SQL语句时磁盘的写入量和读取量、以及应用程序执行所述SQL语句的线程信息;
根据预定的分析规则对所述数据库操作信息进行分析,以对数据库的性能进行测试。
相应地,本发明实施例提供一种数据库性能的测试系统,包括:
监测模块,用于监测应用程序在运行过程中的数据库访问事件;
获取模块,用于当监测到数据库访问事件时,获取所述数据库访问事件对应的数据库操作信息,所述数据库操作信息包括结构化查询语言SQL语句、所述SQL语句的执行计划、应用程序在执行所述SQL语句时磁盘的写入量和读取量、以及应用程序执行所述SQL语句的线程信息;
处理模块,用于根据预定的分析规则对所述数据库操作信息进行分析,以对数据库的性能进行测试。
可选地,所述处理模块具体用于判断所述执行计划中是否存在全表扫描标记,若存在,则判断所述SQL语句未使用索引,若不存在,则判断所述SQL语句使用了索引。
可选地,还包括:
判断模块,用于分别判断所述磁盘的写入量和读取量是否大于阈值,若所述写入量和读取量中的至少一个大于阈值,则使所述处理模块判断所述SQL语句中是否存在事务标识。
可选地,所述获取模块用于获取应用程序执行所述SQL语句的进程信息、以及执行所述SQL语句的线程的名称,以获取所述线程信息;
所述处理模块具体用于:
根据所述进程信息判断执行所述SQL语句的进程是否为前台进程;
当执行所述SQL语句的进程为前台进程时,判断所述线程的名称是否为主线程名称;
当执行所述SQL语句的进程不是前台进程,则判断执行所述SQL语句的线程不是主线程;
当所述线程的名称为主线程名称,则判断执行所述SQL语句的线程为主线程;
当所述线程的名称不是主线程名称,则判断执行所述SQL语句的线程不是主线程。
可选地,还包括输出模块,用于根据分析结果输出数据库性能测试报告。
可选地,所述处理模块具体用于将所述数据库操作信息发送给服务器,以使所述服务器根据预定的分析规则对所述数据库操作信息进行分析。
本发明实施例的数据库性能测试方法中,对应用程序在运行过程中的数据库访问事件进行监测,当监测到数据库访问事件时,获取数据库访问事件对应的数据库操作信息,然后根据预定的分析规则对数据库操作信息进行分析,以对数据库的性能进行测试,本方案在数据库性能的测试过程中,只需根据预定的分析规则对数据库操作信息进行分析,从而实现数据库性能的测试,由此不要人工收集数据和分析数据,能够减少人工投入和缩短测试时间,有利于提高测试效率和测试结果的准确性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本发明实施例提供的数据库性能的测试方法的框架图;
图1b是本发明实施例提供的数据库性能的测试方法的一流程图;
图2是本发明实施例提供的数据库性能的测试方法的另一流程图;
图3a是本发明实施例提供的数据库性能的测试系统的一结构示意图;
图3b是本发明实施例提供的数据库性能的测试系统的另一结构示意图;
图4是本发明实施例提供的服务器的结构示意图;
图5是本发明实施例提供的终端的结构示意图。
具体实施方式
请参照图式,其中相同的组件符号代表相同的组件,本发明的原理是以实施在一适当的运算环境中来举例说明。以下的说明是基于所例示的本发明具体实施例,其不应被视为限制本发明未在此详述的其它具体实施例。
在以下的说明中,本发明的具体实施例将参考由一部或多部计算机所执行的步骤及符号来说明,除非另有述明。因此,这些步骤及操作将有数次提到由计算机执行,本文所指的计算机执行包括了由代表了以一结构化型式中的数据的电子信号的计算机处理单元的操作。此操作转换该数据或将其维持在该计算机的内存系统中的位置处,其可重新配置或另外以本领域测试人员所熟知的方式来改变该计算机的运作。该数据所维持的数据结构为该内存的实体位置,其具有由该数据格式所定义的特定特性。但是,本发明原理以上述文字来说明,其并不代表为一种限制,本领域测试人员将可了解到以下所述的多种步骤及操作亦可实施在硬件当中。
本文所使用的术语「模块」可看做为在该运算系统上执行的软件对象。本文所述的不同组件、模块、引擎及服务可看做为在该运算系统上的实施对象。而本文所述的装置及方法优选的以软件的方式进行实施,当然也可在硬件上进行实施,均在本发明保护范围之内。
本发明实施例提供一种数据库性能的测试方法和系统。
其中,本发明实施例涉及的应用程序为运行于终端上的应用程序,终端例如可以是智能手机、平板电脑或个人计算机等,该数据库性能的测试系统可以作为一个功能模块集成在应用程序中,也可以作为一个功能模块独立于应用程序而集成在终端中,或者该测试系统还可以包括一个采集装置和一个分析装置,其中采集装置可以作为一个功能模块集成在应用程序中,而分析装置可以集成在服务器等设备中。
例如,以数据库性能的测试系统作为一个功能模块集成在应用程序中为例,参阅图1a,该数据库性能的测试系统可以监测应用程序在运行过程中的数据库访问事件,例如对数据库写入数据或者读取数据库中的数据,等等,当监测到数据库访问事件时,获取数据库访问事件对应的数据库操作信息,例如SQL语句、SQL语句的执行计划、线程信息以及执行SQL语句时磁盘的IO信息(写入量和读取量)等等,然后根据预定的分析规则对数据库操作信息进行分析,以对数据库的性能进行测试,从而测试过程无需人工收集数据和分析数据,能够减少人力投入和缩短测试时间,有利于提高测试效率和测试结果的准确性。
以下分别进行详细说明。需说明的是,以下实施例的序号不作为对实施例优选顺序的限定。
实施例一、
本实施例将从数据库性能的测试系统的角度进行描述,该测试系统具体是作为一个功能模块集成在应用程序中。
如图1b所示,该数据库性能的测试方法具体可以包括以下步骤:
S101:监测应用程序在运行过程中的数据库访问事件。
在测试过程中,当检测到应用程序运行,即应用程序处于开启状态时,实时监测应用程序的数据库访问事件。数据库访问事件例如可以是对数据库的写操作事件、读操作事件或者读写操作事件,等等,写操作事件例如包括对数据库进行插入数据、修改数据、删除数据等,读操作事件例如包括对数据库进行查询等。
例如,可以通过测试人员对应用程序输入数据库操作指令以触发应用程序产生数据库访问事件,数据库操作指令如可以是查询指令或修改指令等等,如对应用程序输入查询最近三天的聊天记录的查询指令,从而应用程序根据测试人员输入的数据库操作指令进行相关的数据库操作,如在数据库中查找最近三天的聊天记录,由此触发应用程序产生数据库访问事件。
或者,还可以设计为使应用程序自动运行并在自动运行过程中根据预先设置的数据库操作指令对数据库发起访问,从而自动产生数据库访问事件。
S102:当监测到数据库访问事件时,获取数据库访问事件对应的数据库操作信息,数据库操作信息包括结构化查询语言SQL语句、SQL语句的执行计划、应用程序在执行SQL语句时磁盘的写入量和读取量、以及应用程序执行SQL语句的线程信息。
数据库访问事件对应的数据库操作信息是指应用程序进行数据库访问事件时所产生的与数据库操作相关的数据,例如包括结构化查询语言SQL语句、SQL语句的执行计划、应用程序在执行SQL语句时磁盘的写入量和读取量、以及应用程序执行SQL语句的线程信息,等等。
当应用程序接收到数据库操作指令时,应用程序根据数据库操作指令产生相关的SQL语句,然后通过执行SQL语句以进行相关的数据库操作,其中,当应用程序产生SQL语句时可以认为是数据库访问事件的开始,当应用程序完成SQL语句的执行,则可以认为是数据库访问事件的结束。本实施例中,当监测到应用程序产生SQL语句,则为监测到数据库访问事件。
需要说明的是,结构化查询语言SQL是一种数据库查询语言和程序设计语言,为关系式数据库管理系统的标准语言,SQL语句是指采用结构化查询语言编写的代码,能够实现存储数据以及查询、更新和管理关系式数据库系统。影响数据库性能的因素有多种,例如数据库本身数据结构、SQL语句等,本实施例中,主要是从SQL语句方面对数据库的性能进行测试,SQL语句的执行效率最终决定了数据库的性能。
步骤S103:根据预定的分析规则对数据库操作信息进行分析,以对数据库的性能进行测试。
进一步而言,步骤S103具体包括根据预定的分析规则对SQL语句进行分析,以对数据库的性能进行测试。对SQL语句的分析过程即是测试SQL语句的性能的过程,通过对SQL语句的性能进行测试,以判断SQL语句的性能好坏,进而相应地衡量数据库的性能好坏。本实施例中,根据预定的分析规则对数据库的性能进行分析,具体可以包括以下四种情况:
(1)根据预设的分析规则对数据库操作信息进行分析,具体包括:判断SQL语句是否使用了索引,若未使用索引,则判断数据库不满足性能指标,若使用索引,则判断数据库满足性能指标。
如果SQL语句中没有使用索引,则会造成应用程序执行SQL语句时对数据库进行全表扫描,导致耗时增加,而如果使用了索引,则在执行SQL语句时可以根据索引快速定位到所需的数据,无需全表扫描。因此,当SQL语句没有使用索引时,说明SQL语句的性能较差,此时判断数据库不满足性能指标,当SQL语句使用了索引,说明SQL语句的性能较优,此时判断数据库满足性能指标。
其中,判断SQL语句是否使用索引的方式有多种,例如可以对SQL语句的语法和语义进行解析以判断其是否使用了索引,或者还可以根据SQL语句的执行计划判断SQL语句是否使用了索引。以执行计划为例,判断SQL语句是否使用了索引,具体包括:判断SQL语句的执行计划中是否存在全表扫描标记,若存在,则判断SQL语句未使用所用,若不存在,则判断SQL语句使用了索引。
执行计划的获取方式可以有多种,例如可以通过hook(钩住)技术从数据库系统文件sqlite.so中获取sqlite3_prepare16_v2函数,从而根据该函数获取SQL语句,然后再调用sqlite3.so函数中的应用程序编程接口(Application Programming Interface,API)sqlite3_step来获取SQL语句对应的执行计划。
全表扫描标记例如有full table scans或scan all table等,以scan all table为例,通过查找SQL语句的执行计划的内容是否存在“scan all table”的文本内容,若存在,则说明SQL语句的执行计划中存在全表扫描标记,反之则不存在。因此,当在SQL语句的执行计划中查找到“scan all table”的文本内容,则判断SQL语句没有使用索引,否则判断SQL语句使用了索引。
(2)根据预设的分析规则对数据库操作信息进行分析,具体包括:判断SQL语句中是否存在事务标识,若不存在,则判断数据库不满足性能指标,若存在,则判断数据库满足性能指标。
数据库事务是指单个逻辑工作单元执行的一系列操作,事务处理可以确定非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源,若对数据库的访问使用了事务处理,则可以减少对磁盘的读写次数,提高数据更新的效率,如果没有使用事务处理,则可能会导致磁盘读写量较大,数据更新效率低。因此,若SQL语句中存在事务标识,说明SQL语句是事务语句,即执行SQL语句的过程为事务处理过程,因此可以认为SQL语句的性能较优,此时判断数据库满足性能指标,如果SQL语句中不存在事务标识,说明SQL语句不是事务语句,可以认为SQL语句的性能较差,此时判断数据库不满足性能指标。
其中,事务标识例如可以是事务的开始标记符或者事务的结束标记符,以事务的结束标记符为例,当检测到SQL语句中包含事务的结束标记符时,则判断SQL语句中存在事务标识,否则判断SQL语句中不存在事务标识。
其中,在判断SQL语句中是否存在事务标识之前,还包括:分别判断磁盘的写入量和读取量是否大于阈值,当写入量和读取量中的至少一个大于阈值,则执行SQL语句中是否存在事务标识的步骤。
其中,应用程序在执行SQL语句时磁盘的写入量和读取量的获取方式可以有多种,例如,可以通过hook(钩住)技术从函数库libc.so中获取open o、close、pread64和pwrite64等函数,以根据这些函数获取磁盘的写入量和读取量。
当写入量和/或读取量较大时,可以认为SQL语句可能没有使用事务,即不是事务语句,因此在此情况下再进一步判断SQL语句中是否存在事务标识,以判断SQL语句是否为事务语句,而当写入量和读取量均不大于阈值,说明写入量和读取量较小,此时可以认为SQL语句可能使用了事务,说明SQL语句的性能较优,此时可以不执行判断SQL语句是否存在事务标识的步骤,以减少计算量和测试时间。
(3)根据预设的分析规则对数据库操作信息进行分析,具体包括:对SQL语句的文本内容进行解析,根据解析结果判断SQL语句中是否存在除查询参数不同之外其他文本内容均相同的操作语句,若存在,则判断数据库不满足性能指标,若不存在,则判断数据库满足性能指标。
例如:SQL语句中存在以下操作语句:
上述SQL语句要实现的功能是将id从1到10000的员工的工资都更新为150.00元,其中SQL语句中的查询参数为id,由上述SQL语句可知,SQL语句中共有10000条操作语句,每条操作语句中的变量为id,除id不同之外其他的文本内容均相同,说明该SQL语句没有使用参数绑定,导致在SQL语句的执行过程中会反复编译、执行10000个操作语句,大大降低执行效率,造成额外的处理器损耗,因此SQL语句的性能可以认为较差,此时判断数据库不满足性能指标。
而如果在SQL语句中不存在除查询参数不同之外其他文本内容均相同的操作语句,说明SQL语句中可能使用了参数绑定,或者不存在类似上述例子中的多个文本内同大部分相同的操作语句,此时判断数据库满足性能指标。
(4)根据预定分析规则对数据库操作信息进行分析,包括:根据线程信息判断应用程序执行SQL语句的线程是否为主线程,若为主线程,则判断数据库不满足性能指标,若不是主线程,则判断数据库满足性能指标。
通过获取线程信息以判断应用程序执行SQL语句的线程是主线程还是子线程。如果SQL语句调用了应用程序的主线程来执行该SQL语句,则SQL语句的性能通常认为较差,相应地数据库判断为不满足性能指标,这是因为,若主线程执行该SQL语句,则主线程既要处理界面事件,又需要处理SQL语句,主线程处理的事件过多容易造成卡顿、自动退出或死机等问题。如果不是在主线程执行SQL语句,则SQL语句可以认为较优,相应地数据库判断为满足性能指标。
进一步地,获取应用程序执行SQL语句的线程信息,具体包括:获取应用程序执行SQL语句的进程信息、以及执行SQL语句的线程的名称,以获取线程信息。
例如,以SQLite数据库为例,可以通过hook(钩住)技术获取SQLite的API,以获取应用程序运行过程中使用的SQL语句和执行SQL语句的进程信息和线程的名称。
其中,根据线程信息判断应用程序执行SQL语句的线程是否为主线程具体包括:根据进程信息判断执行SQL语句的进程是否为前台进程,前台进程是相对后台进程而言,前台进程是目前正在屏幕上显示的进程和一些系统进程,也就是和用户正在交互的进程,后台进程是目前对用户不可见的进程。其中,当执行SQL语句的进程为前台进程时,判断线程的名称是否为主线程名称,主线程名称例如可以是“main”,若线程的名称为主线程名称,例如线程的名称为“main”,则判断执行SQL语句的线程为主线程,若线程的名称不是主线程名称,则判断执行SQL语句的线程不是主线程。此外,当执行SQL语句的进程不是前台进程时,则判断执行SQL语句的线程为主线程。
以上例举了四种情况对SQL语句的性能进行测试,以判断数据库是否满足性能指标,其中,在本发明的实施例中,为了提高对数据库性能测试的准确性,可以同时对上述四种情况进行分析,其中四种情况的分析步骤可以同时进行,也可以逐一进行,当逐一进行时步骤的执行顺序不做限定。
其中当出现以下其中任意一种判断结果:SQL语句没有使用索引;SQL语句中没有存在事务标识;SQL语句中存在除查询参数不同之外其他文本内容均相同的操作语句;应用程序执行SQL语句的线程为主线程时,判断数据库不满足性能指标,并且当同时出现以下判断结果:SQL语句使用了索引;SQL语句中存在事务标识;SQL语句中不存在除查询参数不同之外其他文本内容均相同的操作语句;应用程序执行SQL语句的线程不是主线程时,判断数据库满足性能指标。
其中,根据预定的分析规则对数据库操作信息进行分析之后,还包括:根据分析结果输出数据库性能测试报告,具体包括根据上述判断结果输出数据库性能测试报告。例如,可以直接显示数据库不满足性能指标或者满足性能指标的判断结果,或者可以将数据库不满足性能指标或者满足性能指标的判断结果发送给其他终端设备显示,或者还可以将SQL语句是否使用了索引、是否存在事务标识以及是否为主线程执行SQL语句等判断结果一并输出。
通过本实施例,在数据库性能的测试过程中,通过获取数据库访问事件对应的数据库操作信息,然后根据预定的分析规则对数据库操作信息进行分析,从而实现数据库性能的测试,由此不要人工收集数据和分析数据,能够减少人工投入和缩短测试时间,有利于提高测试效率和测试结果的准确性。
实施例二、
本实施例将从数据库性能的测试系统的角度进行描述,其中数据库性能的测试系统包括数据采集装置和数据分析装置,其中数据采集装置可以作为一个功能模块集成在应用程序中,应用程序为运行于终端(如智能手机等)的应用程序,数据分析装置例如可以是集成在服务器等设备中。
如图2所示,在本实施例中,数据库性能的测试方法具体包括:
步骤S201:监测应用程序在运行过程中的数据库访问事件。
步骤S202:当监测到数据库访问事件时,获取数据库访问事件对应的数据库操作信息,数据库操作信息包括结构化查询语言SQL语句、SQL语句的执行计划、应用程序在执行SQL语句时磁盘的写入量和读取量、以及应用程序执行SQL语句的线程信息。
步骤S203:将数据库操作信息发送给服务器,以使服务器根据预定的分析规则对数据库操作信息进行分析,进而对数据库的性能进行测试。
例如,当检测到数据库访问事件,获取可以获取数据库访问事件对应的SQL语句、SQL语句的执行计划、应用程序执行SQL语句时磁盘的写入量和读取量、SQL语句的文本内容、以及应用程序执行SQL语句的线程信息等数据库操作信息,并将获取的数据库操作信息发送给服务器,从而服务器按照预定的分析规则对接收到的数据库操作信息进行分析,例如可以执行以下一种或多种判断:判断SQL语句的执行计划中是否存在全表扫描标记,以判断SQL语句是否使用了索引;判断磁盘的写入量和读取量是否大于阈值,当写入量和读取量中的至少一个大于阈值时,则判断执行SQL语句中是否存在事务标识;判断SQL语句中是否存在除查询参数不同之外其他文本内容均相同的操作语句;根据线程信息判断应用程序执行SQL语句的线程是否为主线程。之后,服务器根据判断的结果输出数据库性能测试报告,或者将数据库性能测试报告发送给终端。
其中,当SQL语句没有使用索引时,判断数据库不满足性能指标;或者当SQL语句中没有存在事务标识时,判断数据库不满足性能指标;或者当SQL语句中存在除查询参数不同之外其他文本内容均相同的操作语句,判断数据库不满足性能指标;或者当应用程序执行SQL语句的线程为主线程时,判断数据库不满足性能指标。
而若服务器执行的是多种判断,例如为上述列举的四种,当同时满足以下条件:SQL语句使用了索引,SQL语句中存在事务标识,SQL语句中不存在除查询参数不同之外其他文本内容均相同的操作语句,应用程序执行SQL语句的线程不是主线程时,判断数据库满足性能指标。
其中,在获取多种数据库操作信息时,例如获取SQL语句、SQL语句的执行计划、应用程序执行SQL语句时磁盘的写入量和读取量等数据操作信息时,还采集在获取各数据库操作信息时所调用的存储地址,例如采集在获取SQL语句时调用的存储地址,以及采集在获取SQL语句的执行计划时调用的存储地址,以及采集在获取应用程序执行SQL语句时磁盘的写入量和读取量时调用的存储地址,并将这些存储地址发送给服务器,从而服务器根据获取各数据库操作信息时所调用的相应的存储地址,将SQL语句、SQL语句的执行计划、以及应用程序执行SQL语句时磁盘的写入量和读取量等数据库操作信息对应起来。
本实施例中,通过将获取的数据库操作信息发送给服务器,以利用服务器按照预定的分析规则对数据库操作信息进行分析,进而实现数据库性能的测试,由此能够实现自动测试,不需要人工采集和分析数据,同时能够减少测试过程的计算量以及内存消耗。
实施例三、
参阅图3a,本发明实施例提供一种数据库性能的测试系统,其中数据库性能测试系统可以是作为一个功能模块集成在应用程序中,而应用程序为运行于智能手机或平板电脑等终端上的应用程序。
如图所示,测试系统包括监测模块301、获取模块302、处理模块303、判断模块304以及输出模块305。具体如下:
(1)监测模块301;
监测模块301用于监测应用程序在运行过程中的数据库访问事件。数据库访问事件可以是对数据库的写操作和读操作中的至少一种事件,写操作事件例如包括对数据库进行插入数据、修改数据、删除数据等,读操作事件例如包括对数据库进行查询等。
(2)获取模块302;
获取模块302用于当监测模块301监测到数据库访问事件时,获取数据库访问事件对应的数据库操作信息,数据库操作信息包括结构化查询语言SQL语句、SQL语句的执行计划、应用程序在执行SQL语句时磁盘的写入量和读取量、以及应用程序执行SQL语句的线程信息。
数据库访问事件对应的数据库操作信息是指应用程序进行数据库访问事件时所产生的与数据库操作相关的数据。当应用程序接收到数据库操作指令时,应用程序根据数据库操作指令产生相关的SQL语句,然后通过执行SQL语句以进行相关的数据库操作,其中,当应用程序产生SQL语句时可以认为是数据库访问事件的开始,当应用程序完成SQL语句的执行,则可以认为是数据库访问事件的结束。本实施例中,当监测到应用程序产生SQL语句,则为监测到数据库访问事件。
进一步地,获取模块302用于获取应用程序执行SQL语句的进程信息、以及执行SQL语句的线程的名称,以获取线程信息。
(3)处理模块303;
处理模块303用于根据预定的分析规则对数据库操作信息进行分析,以对数据库的性能进行测试。
具体地,处理模块303用于判断SQL语句的执行计划中是否存在全表扫描标记,以判断SQL语句是否使用了索引,其中当存在全表扫描标记时,判断SQL语句未使用索引,当不存在全表扫描标记时,判断SQL语句使用了索引。
处理模块303还用于判断SQL语句中是否存在事务标识。其中,在处理模块303判断SQL语句中是否存在事务标识之前,判断模块304用于分别判断磁盘的写入量和读取量是否大于阈值,当写入量和读取量中的至少一个大于阈值,处理模块303执行判断SQL语句中是否存在事务标识的步骤,当写入量和读取量均不大于阈值时,说明写入量和读取量较小,可以认为SQL语句可能使用了事务,此时可以不执行判断SQL语句是否存在事务标识的步骤,以减少计算量和测试时间。
处理模块303还用于对SQL语句的文本内容进行解析,并根据解析结果判断SQL语句中是否存在除查询参数不同之外其他文本内容均相同的操作语句。
处理模块303还用于根据线程信息判断应用程序执行SQL语句的线程是否为主线程。进一步地,处理模块303用于根据进程信息判断执行SQL语句的进程是否为前台进程,当执行SQL语句的进程为前台进程时,判断线程的名称是否为主线程名称,若线程的名称为主线程名称,则判断执行SQL语句的线程为主线程,若线程的名称不是主线程名称,则判断执行SQL语句的线程不是主线程,并且当执行SQL语句的进程不是前台进程时,判断执行SQL语句的线程为主线程。
其中,当出现以下其中任意一种判断结果:SQL语句没有使用索引;SQL语句中没有存在事务标识;SQL语句中存在除查询参数不同之外其他文本内容均相同的操作语句;应用程序执行SQL语句的线程为主线程时,判断数据库不满足性能指标,并且当同时出现以下判断结果:SQL语句使用了索引;SQL语句中存在事务标识;SQL语句中不存在除查询参数不同之外其他文本内容均相同的操作语句;应用程序执行SQL语句的线程不是主线程时,判断数据库满足性能指标。
其中,输出模块305用于根据分析结果输出数据库性能测试报告,具体包括根据上述判断结果输出数据库性能测试报告。例如,可以直接显示数据库不满足性能指标或者满足性能指标的判断结果,或者可以将数据库不满足性能指标或者满足性能指标的判断结果发送给其他终端设备显示,或者还可以将SQL语句是否使用了索引、是否存在事务标识以及是否为主线程执行SQL语句等判断结果一并输出。
本实施例,在数据库性能的测试过程中,通过获取数据库访问事件对应的数据库操作信息,然后根据预定的分析规则对数据库操作信息进行分析,从而实现数据库性能的测试,由此不要人工收集数据和分析数据,能够减少人工投入和缩短测试时间,有利于提高测试效率和测试结果的准确性。
实施例四、
如图3b所示,在本发明数据库性能的测试系统的另一实施方式中,测试系统包括数据采集装置31和数据分析装置32。其中,数据采集装置31可以作为一个功能模块集成在应用程序中,应用程序为运行于终端(如智能手机等)的应用程序,数据分析装置32例如可以是集成在服务器等设备中。
其中,数据采集装置31包括监测模块311、获取模块312和处理模块313。
其中,监测模块311用于监测应用程序在运行过程中的数据库访问事件。获取模块312用于当监测到数据库访问事件,获取数据库访问事件对应的数据库操作信息,数据库操作信息包括结构化查询语言SQL语句、SQL语句的执行计划、应用程序在执行SQL语句时磁盘的写入量和读取量、以及应用程序执行所述SQL语句的线程信息。
进一步地,获取模块312用于获取应用程序执行SQL语句的进程信息、以及执行SQL语句的线程的名称,以获取线程信息。
处理模块313具体用于将获取模块312获取的数据库操作信息发送给数据分析装置32,以使得数据分析装置32根据预定的分析规则对数据库操作信息进行分析。
具体地,数据分析装置32用于判断SQL语句的执行计划中是否存在全表扫描标记,以判断SQL语句是否使用了索引,其中当存在全表扫描标记时,判断SQL语句未使用索引,当不存在全表扫描标记时,判断SQL语句使用了索引。
数据分析装置32还用于判断SQL语句中是否存在事务标识。其中,在判断SQL语句中是否存在事务标识之前,数据分析装置32用于分别判断磁盘的写入量和读取量是否大于阈值,当写入量和读取量中的至少一个大于阈值时,执行判断SQL语句中是否存在事务标识的步骤,当写入量和读取量均不大于阈值时,说明写入量和读取量较小,可以认为SQL语句可能使用了事务,此时可以不执行判断SQL语句是否存在事务标识的步骤,以减少计算量和测试时间。
数据分析装置32还用于对SQL语句的文本内容进行解析,并根据解析结果判断SQL语句中是否存在除查询参数不同之外其他文本内容均相同的操作语句。
数据分析装置32还用于根据线程信息判断应用程序执行SQL语句的线程是否为主线程。进一步地,数据分析装置32用于根据进程信息判断执行SQL语句的进程是否为前台进程,当执行SQL语句的进程为前台进程时,判断线程的名称是否为主线程名称,若线程的名称为主线程名称,则判断执行SQL语句的线程为主线程,若线程的名称不是主线程名称,则判断执行SQL语句的线程不是主线程,并且当执行SQL语句的进程不是前台进程时,判断执行SQL语句的线程为主线程。
其中,其中当出现以下其中任意一种判断结果:SQL语句没有使用索引;SQL语句中没有存在事务标识;SQL语句中存在除查询参数不同之外其他文本内容均相同的操作语句;应用程序执行SQL语句的线程为主线程时,判断数据库不满足性能指标,并且当同时出现以下判断结果:SQL语句使用了索引;SQL语句中存在事务标识;SQL语句中不存在除查询参数不同之外其他文本内容均相同的操作语句;应用程序执行SQL语句的线程不是主线程时,判断数据库满足性能指标。
进一步地,数据分析装置32还用于根据判断的结果输出数据库性能测试报告,或者将数据库性能测试报告发送给终端。
本实施例中,通过将获取的数据库操作信息发送给数据分析装置32,以在服务器端对数据库操作信息进行分析,进而实现数据库性能的测试,由此能够实现自动测试,不需要人工采集和分析数据,同时能够减少测试过程终端的计算量以及内存消耗。
实施例五
本发明实施例还提供一种服务器,如图4所示,其示出了本发明实施例所涉及的服务器的结构示意图,具体来讲:
该服务器可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图4中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器401是该服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行服务器的各种功能和处理数据,从而对服务器进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
服务器还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该服务器还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,服务器还可以包括显示单元等,在此不再赘述。具体在本实施例中,服务器中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
接收终端发送的数据库操作信息,其中数据库操作信息为终端监测到应用程序在运行过程中的数据库访问事件时,获取的数据库访问事件对应的数据库操作信息,数据库操作信息包括结构化查询语言SQL语句、SQL语句的执行计划、应用程序在执行SQL语句时磁盘的写入量和读取量、以及应用程序执行SQL语句的线程信息,然后根据预定的分析规则对数据库操作信息进行分析,以对数据库的性能进行测试。
其中,根据预定的分析规则对数据库操作信息的分析过程,例如可以包括:
判断SQL语句是否使用了索引,判断SQL语句中是否存在事务标识,判断SQL语句中是否存在除查询参数不同之外其他文本内容均相同的操作语句,以及判断应用程序执行所述SQL语句的线程是否为主线程,等等。其中,当出现以下其中任意一种判断结果:SQL语句没有使用索引;SQL语句中没有存在事务标识;SQL语句中存在除查询参数不同之外其他文本内容均相同的操作语句;应用程序执行SQL语句的线程为主线程时,判断数据库不满足性能指标,并且当同时出现以下判断结果:SQL语句使用了索引;SQL语句中存在事务标识;SQL语句中不存在除查询参数不同之外其他文本内容均相同的操作语句;应用程序执行SQL语句的线程不是主线程时,判断数据库满足性能指标。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
由上可知,通过接收终端发送的数据库操作信息,从而根据预定的分析规则对数据库操作信息进行分析,以对数据库性能进行测试,由此不要人工收集数据和分析数据,能够减少人工投入和缩短测试时间,有利于提高测试效率和测试结果的准确性,同时能够减少测试过程终端的计算量以及内存消耗。
实施例六、
相应的,本发明实施例还提供一种终端,如图5所示,该终端可以包括射频(RF,Radio Frequency)电路501、包括有一个或一个以上计算机可读存储介质的存储器502、输入单元503、显示单元504、传感器505、音频电路506、无线保真(WiFi,Wireless Fidelity)模块507、包括有一个或者一个以上处理核心的处理器508、以及电源509等部件。本领域技术人员可以理解,图5中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路501可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器508处理;另外,将涉及上行的数据发送给基站。通常,RF电路501包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM,Subscriber Identity Module)卡、收发信机、耦合器、低噪声放大器(LNA,Low Noise Amplifier)、双工器等。此外,RF电路501还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(GSM,Global System of Mobile communication)、通用分组无线服务(GPRS,GeneralPacket Radio Service)、码分多址(CDMA,Code Division Multiple Access)、宽带码分多址(WCDMA,Wideband Code Division Multiple Access)、长期演进(LTE,Long TermEvolution)、电子邮件、短消息服务(SMS,Short Messaging Service)等。
存储器502可用于存储软件程序以及模块,处理器508通过运行存储在存储器502的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器502可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器502可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器502还可以包括存储器控制器,以提供处理器508和输入单元503对存储器502的访问。
输入单元503可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元503可包括触敏表面以及其他输入设备。触敏表面,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面上或在触敏表面附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器508,并能接收处理器508发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元503还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元504可用于显示由用户输入的信息或提供给用户的信息以及终端的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元504可包括显示面板,可选的,可以采用液晶显示器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,Organic Light-Emitting Diode)等形式来配置显示面板。进一步的,触敏表面可覆盖显示面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器508以确定触摸事件的类型,随后处理器508根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图5中,触敏表面与显示面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与显示面板集成而实现输入和输出功能。
终端还可包括至少一种传感器505,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板的亮度,接近传感器可在终端移动到耳边时,关闭显示面板和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路506、扬声器,传声器可提供用户与终端之间的音频接口。音频电路506可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路506接收后转换为音频数据,再将音频数据输出处理器508处理后,经RF电路501以发送给比如另一终端,或者将音频数据输出至存储器502以便进一步处理。音频电路506还可能包括耳塞插孔,以提供外设耳机与终端的通信。
WiFi属于短距离无线传输技术,终端通过WiFi模块507可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图5示出了WiFi模块507,但是可以理解的是,其并不属于终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器508是终端的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器502内的软件程序和/或模块,以及调用存储在存储器502内的数据,执行终端的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器508可包括一个或多个处理核心;优选的,处理器508可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器508中。
终端还包括给各个部件供电的电源509(比如电池),优选的,电源可以通过电源管理系统与处理器508逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源509还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端中的处理器508会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器502中,并由处理器508来运行存储在存储器502中的应用程序,从而实现各种功能:
监测应用程序在运行过程中的数据访问事件,当监测到数据库访问事件时,获取数据库访问事件对应的数据库操作信息,数据库操作信息包括结构化查询语言SQL语句、SQL语句的执行计划、应用程序在执行SQL语句时磁盘的写入量和读取量、以及应用程序执行SQL语句的线程信息等等,然后根据预定的分析规则对数据库操作信息进行分析,以对数据库的性能进行测试。
其中,根据预定的分析规则对数据库操作信息的分析过程,例如可以包括:
判断SQL语句是否使用了索引,判断SQL语句中是否存在事务标识,判断SQL语句中是否存在除查询参数不同之外其他文本内容均相同的操作语句,以及判断应用程序执行所述SQL语句的线程是否为主线程,等等。其中,当出现以下其中任意一种判断结果:SQL语句没有使用索引;SQL语句中没有存在事务标识;SQL语句中存在除查询参数不同之外其他文本内容均相同的操作语句;应用程序执行SQL语句的线程为主线程时,判断数据库不满足性能指标,并且当同时出现以下判断结果:SQL语句使用了索引;SQL语句中存在事务标识;SQL语句中不存在除查询参数不同之外其他文本内容均相同的操作语句;应用程序执行SQL语句的线程不是主线程时,判断数据库满足性能指标。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
由上可知,通过获取数据库访问事件对应的数据库操作信息,从而根据预定的分析规则对数据库操作信息进行分析,以对数据库性能进行测试,由此不要人工收集数据和分析数据,能够减少人工投入和缩短测试时间,有利于提高测试效率和测试结果的准确性。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,RandomAccess Memory)、磁盘或光盘等。
以上对本发明实施例所提供的一种数据库性能的测试方法和系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (15)

1.一种数据库性能的测试方法,其特征在于,包括:
监测应用程序在运行过程中的数据库访问事件;
当监测到数据库访问事件时,获取所述数据库访问事件对应的数据库操作信息,所述数据库操作信息包括结构化查询语言SQL语句、所述SQL语句的执行计划、应用程序在执行所述SQL语句时磁盘的写入量和读取量、以及应用程序执行所述SQL语句的线程信息;
根据预定的分析规则对所述数据库操作信息进行分析,以对数据库的性能进行测试。
2.根据权利要求1所述的测试方法,其特征在于,所述根据预定的分析规则对所述数据库操作信息进行分析,包括:
判断所述SQL语句是否使用了索引;
若未使用索引,则判断数据库不满足性能指标;
若使用索引,则判断数据库满足性能指标。
3.根据权利要求2所述的测试方法,其特征在于,
所述判断所述SQL语句是否使用了索引,包括:
判断所述执行计划中是否存在全表扫描标记;
若存在,则判断所述SQL语句未使用索引;
若不存在,则判断所述SQL语句使用了索引。
4.根据权利要求1所述的测试方法,其特征在于,所述根据预定的分析规则对所述数据库操作信息进行分析,包括:
判断所述SQL语句中是否存在事务标识;
若不存在,则判断数据库不满足性能指标;
若存在,则判断数据库满足性能指标。
5.根据权利要求4所述的测试方法,其特征在于,所述判断所述SQL语句中是否存在事务标识之前,还包括:
分别判断所述磁盘的写入量和读取量是否大于阈值,若所述写入量和读取量中的至少一个大于阈值,则执行判断所述SQL语句中是否存在事务标识的步骤。
6.根据权利要求1所述的测试方法,其特征在于,所述根据预定的分析规则对所述数据库操作信息进行分析,包括:
对所述SQL语句的文本内容进行解析;
根据解析结果判断所述SQL语句中是否存在除查询参数不同之外其他文本内容均相同的操作语句;
若存在,则判断数据库不满足性能指标;
若不存在,则判断数据库满足预定的性能指标。
7.根据权利要求1所述的测试方法,其特征在于,所述根据预定的分析规则对所述数据库操作信息进行分析,包括:
根据所述线程信息判断应用程序执行所述SQL语句的线程是否为主线程;
若为主线程,则判断数据库不满足性能指标;
若不是主线程,则判断数据库满足性能指标。
8.根据权利要求7所述的测试方法,其特征在于,所述线程信息包括应用程序执行所述SQL语句的进程信息、以及执行所述SQL语句的线程的名称;
所述根据所述线程信息判断执行所述SQL语句的线程是否为主线程,包括:
根据所述进程信息判断执行所述SQL语句的进程是否为前台进程;
当执行所述SQL语句的进程为前台进程时,判断所述线程的名称是否为主线程名称;
当执行所述SQL语句的进程不是前台进程,则判断执行所述SQL语句的线程不是主线程;
当所述线程的名称为主线程名称,则判断执行所述SQL语句的线程为主线程;
当所述线程的名称不是主线程名称,则判断执行所述SQL语句的线程不是主线程。
9.根据权利要求1-8任一项所述的测试方法,其特征在于,所述根据预定的分析规则对所述数据库操作信息进行分析之后,还包括:
根据分析结果输出数据库性能测试报告。
10.根据权利要求1所述的测试方法,其特征在于,所述根据预定的分析规则对所述数据库操作信息进行分析,包括:
将所述数据库操作信息发送给服务器,以使所述服务器根据预定的分析规则对所述数据库操作信息进行分析。
11.一种数据库性能的测试系统,其特征在于,包括:
监测模块,用于监测应用程序在运行过程中的数据库访问事件;
获取模块,用于当监测到数据库访问事件时,获取所述数据库访问事件对应的数据库操作信息,所述数据库操作信息包括结构化查询语言SQL语句、所述SQL语句的执行计划、应用程序在执行所述SQL语句时磁盘的写入量和读取量、以及应用程序执行所述SQL语句的线程信息;
处理模块,用于根据预定的分析规则对所述数据库操作信息进行分析,以对数据库的性能进行测试。
12.根据权利要求11所述的测试系统,其特征在于,所述处理模块具体用于判断所述SQL语句是否使用了索引,若未使用索引,则判断数据库不满足性能指标,若使用索引,则判断数据库满足性能指标。
13.根据权利要求11所述的测试系统,其特征在于,所述处理模块具体用于判断所述SQL语句中是否存在事务标识,若不存在,则判断数据库不满足性能指标,若存在,则判断数据库满足性能指标。
14.根据权利要求11所述的测试系统,其特征在于,所述处理模块具体用于:
对所述SQL语句的文本内容进行解析;
根据解析结果判断所述SQL语句中是否存在除查询参数不同之外其他文本内容均相同的操作语句;
若存在,则判断数据库不满足性能指标;
若不存在,则判断数据库满足预定的性能指标。
15.根据权利要求11所述的测试系统,其特征在于,所述处理模块具体用于根据所述线程信息判断应用程序执行所述SQL语句的线程是否为主线程,若为主线程,则判断数据库不满足性能指标,若不是主线程,则判断数据库满足性能指标。
CN201710402874.3A 2017-06-01 2017-06-01 一种数据库性能的测试方法和系统 Active CN108984374B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710402874.3A CN108984374B (zh) 2017-06-01 2017-06-01 一种数据库性能的测试方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710402874.3A CN108984374B (zh) 2017-06-01 2017-06-01 一种数据库性能的测试方法和系统

Publications (2)

Publication Number Publication Date
CN108984374A true CN108984374A (zh) 2018-12-11
CN108984374B CN108984374B (zh) 2021-05-07

Family

ID=64501564

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710402874.3A Active CN108984374B (zh) 2017-06-01 2017-06-01 一种数据库性能的测试方法和系统

Country Status (1)

Country Link
CN (1) CN108984374B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110287114A (zh) * 2019-06-26 2019-09-27 深圳前海微众银行股份有限公司 一种数据库脚本性能测试的方法及装置
CN110413638A (zh) * 2019-08-27 2019-11-05 中信百信银行股份有限公司 一种sql检测装置和方法
CN110427329A (zh) * 2019-08-13 2019-11-08 杭州有赞科技有限公司 一种数据库sql性能数据的采集方法及系统
CN112000574A (zh) * 2020-08-18 2020-11-27 中国建设银行股份有限公司 一种压力测试方法、装置、设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102004800A (zh) * 2010-12-28 2011-04-06 北京数码大方科技有限公司 Pdm系统中数据的查询方法及装置
JP4749899B2 (ja) * 2006-03-15 2011-08-17 株式会社日立ソリューションズ テーブル構造決定及び通知システム
CN103729361A (zh) * 2012-10-12 2014-04-16 百度在线网络技术(北京)有限公司 一种数据库性能测试方法及装置
CN105183614A (zh) * 2015-11-03 2015-12-23 华夏银行股份有限公司 一种数据库故障预测方法及装置
CN106445795A (zh) * 2016-09-26 2017-02-22 中国工商银行股份有限公司 一种数据库sql效率检测方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4749899B2 (ja) * 2006-03-15 2011-08-17 株式会社日立ソリューションズ テーブル構造決定及び通知システム
CN102004800A (zh) * 2010-12-28 2011-04-06 北京数码大方科技有限公司 Pdm系统中数据的查询方法及装置
CN103729361A (zh) * 2012-10-12 2014-04-16 百度在线网络技术(北京)有限公司 一种数据库性能测试方法及装置
CN105183614A (zh) * 2015-11-03 2015-12-23 华夏银行股份有限公司 一种数据库故障预测方法及装置
CN106445795A (zh) * 2016-09-26 2017-02-22 中国工商银行股份有限公司 一种数据库sql效率检测方法及装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110287114A (zh) * 2019-06-26 2019-09-27 深圳前海微众银行股份有限公司 一种数据库脚本性能测试的方法及装置
CN110427329A (zh) * 2019-08-13 2019-11-08 杭州有赞科技有限公司 一种数据库sql性能数据的采集方法及系统
CN110427329B (zh) * 2019-08-13 2023-04-25 杭州有赞科技有限公司 一种数据库sql性能数据的采集方法及系统
CN110413638A (zh) * 2019-08-27 2019-11-05 中信百信银行股份有限公司 一种sql检测装置和方法
CN112000574A (zh) * 2020-08-18 2020-11-27 中国建设银行股份有限公司 一种压力测试方法、装置、设备和存储介质

Also Published As

Publication number Publication date
CN108984374B (zh) 2021-05-07

Similar Documents

Publication Publication Date Title
CN105404585B (zh) 获取代码覆盖率的方法及装置
CN108519945A (zh) 覆盖率测试方法、装置及存储设备
CN108512695A (zh) 监控应用卡顿的方法及装置
CN107025225B (zh) 一种终端数据库的并行执行方法和装置
CN107204964B (zh) 一种权限管理的方法、装置和系统
CN108984374A (zh) 一种数据库性能的测试方法和系统
CN105320701B (zh) 功能点测试实现方式的筛选方法、装置及终端
CN111078556B (zh) 应用测试方法及装置
CN108345543A (zh) 一种数据处理方法、装置、设备及存储介质
CN105847325B (zh) 应用客户端的调试方法及装置
CN108536594A (zh) 页面测试方法、装置及存储设备
CN110196795A (zh) 检测移动终端应用运行状态的方法及相关装置
CN110058850A (zh) 一种应用的开发方法、装置以及存储介质
CN110020293A (zh) 多媒体数据展示方法、装置及存储介质
CN109246233A (zh) 基于在线监控的数据处理方法、装置、设备及存储介质
CN106681884B (zh) 一种系统调用的监控方法和装置
CN106407800A (zh) 一种hook的方法及终端设备
CN110347578A (zh) 一种应用的测试方法、装置及存储介质
CN110198324A (zh) 数据监控方法、装置、浏览器及终端
CN108932264A (zh) 导航问题的确定方法、装置及存储介质
CN105354067B (zh) 一种界面配置方法及装置
CN109429229A (zh) 获取网络接入信息的方法、装置及计算机可读存储介质
CN108959062A (zh) 网页元素获取方法及装置
CN110032394A (zh) 一种无源码文件的分析方法、装置和存储介质
CN107741901A (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