一种数据库容量预测方法及装置与流程

文档序号:15047322发布日期:2018-07-27 22:58阅读:171来源:国知局

本发明涉及数据库技术领域,尤其涉及一种数据库容量预测方法及装置。



背景技术:

目前,在传统的业务场景或者在线交易系统中,由于难以准确评估数据库的容量,导致造成数据库运维成本的巨大浪费。比如,为了支撑业务的交易能力,企业通常会购买远远大于支撑交易能力的机器和其它硬件资源,对数据库进行扩容以支撑业务活动或者大促活动。又比如,由于无法得知业务平峰阶段的数据库容量,导致需要在线运行大量的机器,使得机房机架位、电力等运维成本居高不下。

在相关技术中,通过采集数据库的历史交易量以及对应的数据库容量,基于预测函数进行未来数据库容量的预测。然而,上述方式在发生业务场景变化时,会导致预测结果不准确。比如,基于业务平峰场景的数据库历史数据,无法准确预测特殊场景(比如,大促活动场景,或者,仅存在某一种业务创建情况)下的数据库容量;又比如,以去年大促活动时的历史数据结合预测函数可以得到交易创建量和数据库容量的趋势关系,但是,若今年大促活动时,业务交易创建涉及的数据库执行发生变化,则采用去年得到的趋势关系无法准确预测今年大促活动时的数据库容量。



技术实现要素:

以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。

本申请实施例提供一种数据库容量预测方法及装置,通过模拟应用入口的请求对目标数据库的执行流程,预测不同业务场景下的目标数据库的容量,从而增加了数据库容量预测的灵活性和准确性。

本申请实施例提供一种数据库容量预测方法,用于预测目标数据库的容量,其中,目标应用的应用入口的请求能够通过调用服务接口来调用目标数据库执行结构化查询语言(sql)语句,目标应用的应用入口的请求指访问目标应用的应用入口的请求,目标应用的应用入口指目标应用提供给用户或者其他应用进行访问的统一资源定位器(url);

所述数据库容量预测方法包括:

采集所述目标数据库上执行的sql语句;

根据采集到的sql语句,确定目标数据库执行信息,其中,所述目标数据库执行信息包括:所述目标应用的一个或多个应用入口的请求每次在所述目标数据库上调用的sql语句种类和对每种sql语句的调用次数;

根据预期使用条件以及所述目标数据库执行信息,预测所述目标数据库的容量。

其中,所述目标应用的一个应用入口的一个请求对应有一个请求跟踪标识;所述根据采集到的sql语句,确定目标数据库执行信息,可以包括:

针对每个目标数据库,根据采集到的sql语句携带的请求跟踪标识,确定每个请求跟踪标识对应的sql语句;

确定每个应用入口的请求对应的请求跟踪标识;

通过所述请求跟踪标识,确定每个应用入口的请求每次在所述目标数据库上调用的sql语句种类和对每种sql语句的调用次数。

其中,所述目标应用的一个应用入口的一个请求对应有一个请求跟踪标识;所述目标数据库执行信息还可以包括:所述目标应用的一个或多个应用入口的请求每次对多个目标数据库的调用顺序;

所述根据采集到的sql语句,确定目标数据库执行信息,可以包括:

根据采集到的sql语句携带的请求跟踪标识,确定每个目标数据库中每个请求跟踪标识对应的sql语句;

通过请求跟踪标识,分析应用入口的请求执行过程,确定每个应用入口的请求每次调用的服务接口、服务接口之间的调用关系、以及所述服务接口调用的目标数据库;

通过所述请求跟踪标识,确定每个应用入口的请求每次对多个目标数据库的调用顺序、以及在每个目标数据库上调用的sql语句种类和对每种sql语句的调用次数。

其中,所述根据预期使用条件以及所述目标数据库执行信息,预测所述目标数据库的容量,可以包括:

根据预期使用条件以及所述目标数据库执行信息,确定模拟数据,其中,所述模拟数据提供所述目标应用的一个或多个应用入口的一个或多个请求在所述目标数据库的执行流程;

依据所述模拟数据,预测所述目标数据库的容量。

其中,所述根据预期使用条件以及所述目标数据库执行信息,确定模拟数据,可以包括:

根据预期使用条件,确定一个或多个应用入口的请求基础模拟量以及增长量;根据所述请求基础模拟量、增长量以及所述目标数据库执行信息,确定模拟数据;或者,

根据预期使用条件,确定一个或多个应用入口的请求基础模拟量以及增长量,调整所述目标数据库执行信息;根据所述请求基础模拟量、增长量以及调整后的所述目标数据库执行信息,确定模拟数据。

其中,所述依据所述模拟数据,预测所述目标数据库的容量之后,所述数据库容量预测方法还可以包括:

针对每个目标数据库,根据所述请求基础模拟量、增长量以及预测得到的所述目标数据库的容量,确定请求量与所述目标数据库的容量之间的预测趋势关系。

其中,所述依据所述模拟数据,预测所述目标数据库的容量,可以包括:

在所述目标数据库对应的模拟数据库上执行所述模拟数据;

在所述模拟数据的执行过程中,采集所述模拟数据库的容量指标参数,预测所述模拟数据库对应的目标数据库的容量。

其中,所述采集所述模拟数据库的容量指标参数,预测所述模拟数据库对应的目标数据库的容量,可以包括以下至少之一:

采集所述模拟数据库上不同时刻的数据库查询总量,根据采集到的不同时刻的数据库查询总量,预测所述模拟数据库对应的目标数据库的每秒数据库查询次数(qps);

采集所述模拟数据库上不同时刻的数据库事务完成量,根据采集到的不同时刻的数据库事务完成量,预测所述模拟数据库对应的目标数据库的每秒数据库事务完成次数(tps)。

本申请实施例还提供一种数据库容量预测装置,用于预测目标数据库的容量,其中,目标应用的应用入口的请求能够通过调用服务接口来调用所述目标数据库执行sql语句,所述目标应用的应用入口的请求指访问所述目标应用的所述应用入口的请求,所述目标应用的应用入口指所述目标应用提供给用户或者其他应用进行访问的url;

所述数据库容量预测装置包括:

采集模块,用于采集所述目标数据库上执行的sql语句;

处理模块,用于根据采集到的sql语句,确定目标数据库执行信息,其中,所述目标数据库执行信息包括:所述目标应用的一个或多个应用入口的请求每次在所述目标数据库上调用的sql语句种类和对每种sql语句的调用次数;

预测模块,用于根据预期使用条件以及所述目标数据库执行信息,预测所述目标数据库的容量。

其中,所述目标应用的一个应用入口的一个请求对应有一个请求跟踪标识;所述处理模块可以用于通过以下方式根据采集到的sql语句,确定目标数据库执行信息:

针对每个目标数据库,根据采集到的sql语句携带的请求跟踪标识,确定每个请求跟踪标识对应的sql语句;

确定每个应用入口的请求对应的请求跟踪标识;

通过所述请求跟踪标识,确定每个应用入口的请求每次在所述目标数据库上调用的sql语句种类和对每种sql语句的调用次数。

其中,所述目标应用的一个应用入口的一个请求对应有一个请求跟踪标识;所述目标数据库执行信息还可以包括:所述目标应用的一个或多个应用入口的请求每次对多个目标数据库的调用顺序;

所述处理模块可以用于通过以下方式根据采集到的sql语句,确定目标数据库执行信息:

根据采集到的sql语句携带的请求跟踪标识,确定每个目标数据库中每个请求跟踪标识对应的sql语句;

通过请求跟踪标识,分析应用入口的请求执行过程,确定每个应用入口的请求每次调用的服务接口、服务接口之间的调用关系、以及所述服务接口调用的目标数据库;

通过所述请求跟踪标识,确定每个应用入口的请求每次对多个目标数据库的调用顺序、以及在每个目标数据库上调用的sql语句种类和对每种sql语句的调用次数。

其中,所述预测模块可以包括:

模拟单元,用于根据预期使用条件以及所述目标数据库执行信息,确定模拟数据,其中,所述模拟数据提供所述目标应用的一个或多个应用入口的一个或多个请求在所述目标数据库的执行流程;

预测单元,用于依据所述模拟数据,预测所述目标数据库的容量。

其中,所述模拟单元,用于通过以下方式根据预期使用条件以及所述目标数据库执行信息,确定模拟数据:

根据预期使用条件,确定一个或多个应用入口的请求基础模拟量以及增长量;根据所述请求基础模拟量、增长量以及所述目标数据库执行信息,确定模拟数据;或者,

根据预期使用条件,确定一个或多个应用入口的请求基础模拟量以及增长量,调整所述目标数据库执行信息;根据所述请求基础模拟量、增长量以及调整后的所述目标数据库执行信息,确定模拟数据。

其中,所述预测单元,可以用于通过以下方式依据所述模拟数据,预测所述目标数据库的容量:

在所述目标数据库对应的模拟数据库上执行所述模拟数据;

在所述模拟数据的执行过程中,采集所述模拟数据库的容量指标参数,预测所述模拟数据库对应的目标数据库的容量。

其中,所述模拟单元可以用于通过以下至少之一方式采集所述模拟数据库的容量指标参数,预测所述模拟数据库对应的目标数据库的容量:

采集所述模拟数据库上不同时刻的数据库查询总量,根据采集到的不同时刻的数据库查询总量,预测所述模拟数据库对应的目标数据库的qps;

采集所述模拟数据库上不同时刻的数据库事务完成量,根据采集到的不同时刻的数据库事务完成量,预测所述模拟数据库对应的目标数据库的tps。

其中,所述数据库容量预测装置还可以包括:

趋势预测模块,用于针对每个目标数据库,根据所述请求基础模拟量、增长量以及预测得到的所述目标数据库的容量,确定请求量与所述目标数据库的容量之间的预测趋势关系。

本申请实施例还提供一种数据库容量预测装置,用于预测目标数据库的容量,其中,目标应用的应用入口的请求能够通过调用服务接口来调用所述目标数据库执行sql语句,所述目标应用的应用入口的请求指访问所述目标应用的所述应用入口的请求,所述目标应用的应用入口指所述目标应用提供给用户或者其他应用进行访问的url;

所述数据库容量预测装置包括:存储器以及处理器;其中,存储器用于存储用于数据库容量预测的程序;该用于数据库容量预测的程序在被处理器读取执行时,执行以下操作:

采集所述目标数据库上执行的sql语句;

根据采集到的sql语句,确定目标数据库执行信息,其中,所述目标数据库执行信息包括:所述目标应用的一个或多个应用入口的请求每次在所述目标数据库上调用的sql语句种类和对每种sql语句的调用次数;

根据预期使用条件以及所述目标数据库执行信息,预测所述目标数据库的容量。

本申请实施例还提供一种交互装置,包括:

显示模块,用于提供一个交互界面,在所述交互界面上包括:

配置部分:用于配置预期使用条件;

结果部分:用于显示在所述预期使用条件下的应用请求量与目标数据库的容量之间的关系。

本申请实施例还提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现上述数据库容量预测方法。

本申请实施例提供一种数据库容量预测方法及装置,其中,采集目标数据库上执行的sql语句;根据采集到的sql语句,确定目标数据库执行信息,其中,目标数据库执行信息包括:目标应用的一个或多个应用入口的请求每次在目标数据库调用的sql语句种类和对每种sql语句的调用次数;根据预期使用条件以及目标数据库执行信息,预测目标数据库的容量。如此,通过采集sql语句得到目标数据库执行信息,根据预期使用条件以及目标数据库执行信息,模拟业务场景进行目标数据库的容量预测,从而提高数据库容量预测的灵活性和准确性。在实际应用中,可以根据业务平峰和大促活动时的场景,准确评估线上数据库的容量,从而实现对数据库进行准确的扩容与缩容,进而大量节省机器成本。

当然,实施本申请的任一产品不一定需要同时达到以上所有优点。

附图说明

图1为本申请实施例提供的数据库容量预测方法的流程图;

图2为本申请实施例提供的数据库容量预测装置的示意图一;

图3为本申请实施例提供的数据库容量预测装置的示意图二;

图4为本申请实施例提供的数据库容量预测装置的应用示意图;

图5为本申请实施例提供的数据库容量预测装置的示意图三。

具体实施方式

以下结合附图对本申请实施例进行详细说明,应当理解,以下所说明的实施例仅用于说明和解释本申请,并不用于限定本申请。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

需要说明的是,如果不冲突,本申请实施例以及实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

一些实施方式中,执行数据库容量预测方法的计算设备可包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存(memory)。

内存可能包括计算机可读介质中的非永久性存储器、随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。内存可能包括模块1,模块2,……,模块n(n为大于2的整数)。

计算机可读介质包括永久性和非永久性、可移动和非可移动存储介质。存储介质可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom),快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

术语定义:

数据库容量:指数据库所能承担的qps(queryper-second,每秒数据库查询次数)和/或tps(transactionper-second,每秒数据库事务完成次数)。

qps被用作衡量数据库容量的查询指标,可以根据下式确定:

qps=(q2-q1)/(t2-t1),其中,q2为t2时间点的数据库查询总量,q1为t1时间点的数据库查询总量。

tps被用作衡量数据库容量的事务指标,可以根据下式确定:

tps=(q4-q3)/(t4-t3),其中,q4为t4时间点的数据库事务完成数量,q3为t3时间点的数据库事务完成数量。

方法实施例

本申请实施例提供一种数据库容量预测方法。本实施例提供的数据库容量预测方法可以应用于服务端计算设备(例如,服务器)或者服务端计算设备上运行的虚拟机。然而,本申请对此并不限定。

本实施例提供的数据库容量预测方法,用于预测目标数据库的容量。其中,目标数据库可以指容量待预测的数据库。本实施例对于目标数据库的数量并不限定。

其中,目标应用的应用入口的请求能够通过调用服务接口来调用目标数据库执行结构化查询语言(sql,structuredquerylanguage)语句;目标应用的应用入口的请求指访问目标应用的应用入口的请求;目标应用的应用入口指目标应用提供给用户或者其他应用进行访问的统一资源定位器(url,uniformresourcelocator)。

其中,目标应用可以预先设定。本申请对于目标应用的类别和数量并不限定。

其中,一个目标应用通常会有很多的应用入口,由于应用入口以url的方式对外提供,因此,可以将应用入口称为入口url。入口url需要实现的业务逻辑功能可以通过后台的服务化接口实现,这些接口可以称为服务接口。一个入口url可以对应多个服务接口。

其中,应用入口的请求即为访问入口url的请求(以下可以简称为url请求)。一个应用入口的一次请求即为一个url请求,对应于同一入口url的请求可以认为属于同一种url请求。

每个url请求在调用后台的服务接口时,会注入请求跟踪标识(以下可以简称为请求traceid)。换言之,一个url请求对应有一个请求traceid。而且,在一个url请求调用对应的服务接口、该服务接口调用其他的服务接口、以及这些服务接口调用目标数据库执行sql语句的过程,可以通过请求traceid进行串联。即,请求traceid用于串联url请求执行的各个阶段,可以根据一个请求traceid知道一个url请求在哪些目标数据库上调用了哪些sql语句。

其中,请求traceid可以为16位随机码。

其中,入口url与服务接口的调用关系、请求traceid的示例可以参见表1。其中,服务接口可以为软件接口。

表1

其中,入口url、服务接口以及数据库之间的调用关系的示例可以参见表2。

表2

如图1所示,本实施例提供的数据库容量预测方法,包括以下步骤:

步骤101:采集目标数据库上执行的sql语句。

其中,可以通过植入目标数据库内核系统中的探针,实时抓取目标数据库上执行的sql语句。需要说明的是,探针为内核打点代码,用于探测指定信息。探针本身不执行任何sql语句。

其中,目标数据库的内核系统接收到sql语句之后,检查sql语句的语法和语义,对sql语句进行编译,生成可执行树;在sql语句编译完成后进行执行阶段,sql语句执行成功后返回执行结果。其中,针对执行的sql语句,探针通过管道方式将sql语句输出,即将sql语句写入管道,再由额外设置的采集代理(比如,代理程序)从管道中读取sql语句,从而实现对sql语句的采集。在上述过程中,将sql语句写入管道和从管道中读取sql语句采用不同对象(即探针和采集代理)执行,从而可以实现对管道中sql语句的写入和读取的分离。

其中,对采集到的sql语句可以进行持久化存储。

根据本申请另一个实施例,通过开关控制随时打开或关闭对sql语句的采集。比如,给数据库运维人员提供交互界面,在交互界面上显示采集开关,通过数据库运维人员设置采集开关至打开或关闭状态,控制探针打开或关闭将sql语句写入管道。

本实施例中,采集到的sql语句携带请求traceid,因此,针对每个目标数据库,可以确定每个请求traceid对应的sql语句,即每个请求traceid在目标数据库上调用了哪些sql语句。如此,针对每个目标数据库,可以整理得到请求traceid与sql语句种类(比如,select语句、create语句等)的对应关系,以及请求traceid与每种sql语句的调用次数的对应关系。

步骤102:根据采集到的sql语句,确定目标数据库执行信息,其中,目标数据库执行信息包括:目标应用的一个或多个应用入口的请求每次在目标数据库上调用的sql语句种类和对每种sql语句的调用次数。

其中,目标应用的一个应用入口的一个请求对应有一个请求跟踪标识。

其中,步骤102可以包括:

针对每个目标数据库,根据采集到的sql语句携带的请求跟踪标识,确定每个请求跟踪标识对应的sql语句;确定每个应用入口的请求对应的请求跟踪标识;通过请求跟踪标识,确定每个应用入口的请求每次在目标数据库上调用的sql语句种类和对每种sql语句的调用次数。

其中,针对每个入口url,可以确定该入口url涉及的请求traceid,即确定该入口url的所有请求对应的请求traceid。然后,针对每个目标数据库,可以通过请求traceid关联入口url,确定每个入口url的请求每次在目标数据库上调用的sql语句种类以及对每种sql语句的调用次数。

比如,在一个目标数据库上,筛选出一个入口url涉及的所有请求traceid调用的全部sql语句,在筛选出的这些sql语句中,统计sql语句的种类,以及对每种sql语句的总调用次数;针对每种sql语句,可以分别计算此种sql语句的总调用次数与调用此种sql语句的请求traceid的个数的比值,作为该入口url的请求每次在该目标数据库上调用此种sql语句的调用次数。

其中,在确定每个入口url的一次请求调用目标数据库执行的sql语句的种类(比如,记为第一参数)以及对每种sql语句的调用次数(比如,记为第二参数)之后,针对每个入口url,还可以计算一次请求涉及的不同种类的sql语句的比例(即对各种sql语句的调用次数之间的比值)(比如,记为第三参数,或者,第一sql执行比例),或者,还可以计算一次请求涉及的sql语句的总调用次数(记为第四参数,或者,sql占比)。

或者,针对多个入口url,还可以计算每个入口url的一次请求涉及的sql语句的比例(即各个入口url的一次请求调用的sql语句的总调用次数之间的比值)(比如,记为第五参数,或者,第二sql执行比例)。

需要说明的是,目标数据库执行信息还包括在目标数据库上采集到的sql语句、以及这些采集到的sql语句与对应的应用入口以及目标数据库的关联关系。

其中,可以将步骤102得到的目标数据库执行信息通过sql集合进行记录中,即通过sql集合可以体现一个入口url的一次请求所涉及到的sql语句。其中,可以将针对一个入口url的目标数据库执行信息记录在一个sql集合中,或者,可以将针对多个入口url的目标数据库执行信息整合到一个sql集合中。然而,本申请对此并不限定。

在实际应用中,一笔业务交易创建可以对应一个url请求,一个url请求可以对应调用一个后台的服务接口,此服务接口可以调用其他服务接口,这些服务接口通过调用数据库执行sql语句,以实现url请求需要实现的业务逻辑功能。即,在服务接口中涉及对数据库的操作。

下面结合表1和表2进行举例说明。

比如,当前的业务交易为查看商品详情,此时,在入口url“http://detail.offerdetail.com.cn”进行一次请求执行,此入口url的请求会调用其对应的后台服务接口“showproductdetail()”,而这个接口会查询两个数据库“offer”和“inventory”。比如涉及到以下两个sql语句:“selecta.*fromoffer.product_detailawhereproduct_id=xxx”、“selectb.*frominventory.product_warehousebwhereproduct_id=xxx”。

在查询完成商品后,用户执行下单操作,此时在入口url“http://deal.tradeplatform.com.cn”进行一次请求执行,而此入口url的请求会调用对应的服务接口,比如订单创建接口“createorder()”;此服务接口的执行会涉及到以下数据库:tp、offer、cart和inventory。比如,涉及交易数据库tp的sql语句可以包括:插入一条交易创建记录“insertintotp.ordervalues(…)”、更改支付状态“updatetp.ordersetpay_status=1whereorder_id=xxx”等;涉及库存数据库inventory的sql语句可以包括:“updateinventory.productsetcount=count-1wherecount>0andproduct_id=xxx”。

在上述过程中,可以通过每个url请求对应的请求traceid将所有隐藏在入口url后面的操作逻辑全都串连起来,从而可以确定url请求每次执行涉及的数据库以及对每个数据库的操作(比如,在数据库上调用的sql语句)。

其中,可以得到如表3所示的目标数据库执行信息。

表3

其中,n1至n5均为正整数。

根据本申请另一个实施例,目标数据库执行信息还可以包括:目标应用的一个或多个应用入口的请求每次对多个目标数据库的调用顺序;

此时,步骤102可以包括:

根据采集到的sql语句携带的请求跟踪标识,确定每个目标数据库中每个请求跟踪标识对应的sql语句;通过请求跟踪标识,分析应用入口的请求执行过程,确定每个应用入口的请求每次调用的服务接口、服务接口之间的调用关系、以及服务接口调用的目标数据库;通过请求跟踪标识,确定每个应用入口的请求每次对多个目标数据库的调用顺序、以及在每个目标数据库上调用的sql语句种类和对每种sql语句的调用次数。

其中,通过对每种url请求每次执行过程进行分析,可以得到实现该种url请求对应的入口url的业务逻辑功能的服务接口,该服务接口可以调用后台的其他服务接口,这些服务接口可以调用目标数据库执行sql语句,以最终实现该种url请求需要实现的功能,目标数据库在执行sql语句后可以返回执行结果。因此,针对一个入口url,可以得到此入口url的请求每次调用的服务接口、此服务接口与其他服务接口之间的调用关系、这些服务接口调用的目标数据库,从而最终可以确定执行此入口url的请求时调用目标数据库的顺序。

步骤103:根据预期使用条件以及目标数据库执行信息,预测目标数据库的容量。

其中,步骤103可以包括:

根据预期使用条件以及所述目标数据库执行信息,确定模拟数据,其中,模拟数据提供目标应用的一个或多个应用入口的一个或多个请求在目标数据库的执行流程;

依据所述模拟数据,预测目标数据库的容量。

其中,根据预期使用条件以及目标数据库执行信息,确定模拟数据可以包括:

根据预期使用条件,确定一个或多个应用入口的请求基础模拟量以及增长量;根据请求基础模拟量、增长量以及目标数据库执行信息,确定模拟数据;或者,

根据预期使用条件,确定一个或多个应用入口的请求基础模拟量以及增长量,调整目标数据库执行信息;根据请求基础模拟量、增长量以及调整后的目标数据库执行信息,确定模拟数据。

其中,可以给用户提供交互界面,由用户在交互界面上设置预期使用条件,比如,指示如何调整目标数据库执行信息。

其中,预期使用条件可以由当前需要模拟的业务场景确定;比如,需要模拟的业务场景仅涉及若干个应用入口的请求执行,则可以仅设置这些应用入口的请求基础模拟量、间隔预设时长的增长量,而对于不涉及的应用入口不进行请求模拟。

需要说明的是,在根据目标数据库执行信息,确定模拟数据时,可以根据在目标数据库上采集到的sql语句,确定在场景模拟时需要调用的具体sql语句。比如,针对一个应用入口,在满足目标数据库执行信息包括的在一个目标数据库上调用的sql语句种类和对每种sql语句的调用次数的基础上,从实际在目标数据库上采集到的sql语句中选择模拟此应用入口的请求调用的sql语句。换言之,在进行场景模拟时,执行的sql语句是从目标数据库上采集到的sql语句。以表3为例,在模拟入口url“http://detail.offerdetail.com.cn”的请求时,在确定该入口url的请求在offer数据库上调用select语句时,可以从表3中最右边一列(即采集到的sql语句)中选择具体的sql语句,用于在模拟该入口url的请求时执行。

其中,可以根据预期使用条件,确定是否需要调整目标数据库执行信息。在确定需要调整目标数据库执行信息时,可以调整一个或多个应用入口的第一参数至第五参数中的任一项或多项。比如,可以增加某一个应用入口的请求每次在关联的目标数据库调用的sql语句种类,或者,改变在某一个应用入口的请求调用的第一sql执行比例,或者,改变某一个应用入口的请求调用的sql占比。

其中,最终确定的模拟数据可以指示一个或多个应用入口的各个请求对目标数据库的执行信息;比如,可以包括:一个应用入口在相应时刻的请求量、每个请求对目标数据库的调用顺序、每次请求执行过程中调用目标数据库执行的sql语句。

其中,依据模拟数据,预测目标数据库的容量可以包括:

在目标数据库对应的模拟数据库上执行模拟数据;

在模拟数据的执行过程中,采集模拟数据库的容量指标参数,预测模拟数据库对应的目标数据库的容量。

其中,在预测目标数据库的容量之前,进行模拟数据的执行环境准备工作。复制目标数据库得到模拟数据库,以实现在模拟数据库上执行模拟数据,从而避免影响目标数据库处理实际业务。其中,模拟数据库即为目标数据库的副本。目标数据库和模拟数据库为一一对应关系。

其中,可以根据目标数据库的情况,确定模拟数据库的数据库缓存(bp,bufferpool)与业务响应(rt,responsetime)关系。其中,数据库缓存(bufferpool)为数据库运行时所占有的内存,数据库缓存的大小直接影响着数据库容量以及业务响应的指标,能够用于提高数据库的qps和/或tps能力。

其中,采集模拟数据库的容量指标参数,预测模拟数据库对应的目标数据库的容量,可以包括以下至少之一:

采集模拟数据库上不同时刻的数据库查询总量,根据采集到的不同时刻的数据库查询总量,预测模拟数据库对应的目标数据库的qps;

采集模拟数据库上不同时刻的数据库事务完成量,根据采集到的不同时刻的数据库事务完成量,预测模拟数据库对应的目标数据库的tps。

其中,每个模拟数据库上分别设置有全局的第一计数器和第二计数器,其中,第一计数器用于统计模拟数据库上的数据库查询总量,第二计数器用于统计模拟数据库上的数据库事务完成量;每个模拟数据库在执行每一条sql语句时都会累加相应的计数器。因此,可以采集不同时刻模拟数据库上相应计数器的值,按照qps或者tps的计算公式,可以确定模拟数据库的qps或者tps。通过计算得到的模拟数据库的qps、tps、或者qps和tps,预测模拟数据库对应的目标数据库的容量,即将计算得到的模拟数据库的qps、tps、或者qps和tps作为对应的目标数据库在当前业务场景下的预测容量。

根据本申请另一个实施例,在步骤103之后,本申请的数据库容量预测方法还可以包括:

针对每个目标数据库,根据请求基础模拟量、增长量以及预测得到的目标数据库的容量,确定请求量与目标数据库的容量之间的预测趋势关系。

比如,将业务创建量作为横坐标(例如,单位为千次),预测得到的目标数据库容量(qps或者tps)作为纵坐标(例如,单位为百万次),绘制两者之间的趋势关系图,以体现两者之间的趋势关系。其中,一次业务创建可以对应一次url请求执行,则业务创建量可以根据请求基础模拟量以及增长量确定。

其中,根据模拟数据以及预测得到的目标数据库容量,针对每个目标数据库,可以确定业务创建量与目标数据库容量(qps或者tps)之间的多组对应关系(可以对应趋势关系图中的多个坐标点)。然后,可以通过拟合曲线对这些坐标点进行拟合,从而进一步预测在模拟的业务场景下处理其他业务创建量时对应的目标数据库容量。

综上所述,本实施例提供的数据库容量预测方法通过采集应用入口的请求执行时调用的sql语句,进行业务场景模拟,在业务场景模拟情况下进行目标数据库容量预测,从而可以基于场景进行针对性的目标数据库容量预测,以提高数据库容量预测的灵活性和准确性。

装置实施例

本申请实施例还提供一种数据库容量预测装置,用于预测目标数据库的容量,其中,目标应用的应用入口的请求能够通过调用服务接口来调用目标数据库执行sql语句,目标应用的应用入口的请求指访问目标应用的应用入口的请求,目标应用的应用入口指目标应用提供给用户或者其他应用进行访问的url。

如图2所示,本实施例提供的数据库容量预测装置包括:

采集模块201,用于采集目标数据库上执行的sql语句;

处理模块202,用于根据采集到的sql语句,确定目标数据库执行信息,其中,目标数据库执行信息包括:目标应用的一个或多个应用入口的请求每次在目标数据库上调用的sql语句种类和对每种sql语句的调用次数;

预测模块203,用于根据预期使用条件以及目标数据库执行信息,预测目标数据库的容量。

其中,目标应用的一个应用入口的一个请求对应有一个请求跟踪标识;

处理模块202可以通过以下方式根据采集到的sql语句,确定目标数据库执行信息:

针对每个目标数据库,根据采集到的sql语句携带的请求跟踪标识,确定每个请求跟踪标识对应的sql语句;

确定每个应用入口的请求对应的请求跟踪标识;

通过请求跟踪标识,确定每个应用入口的请求每次在目标数据库上调用的sql语句种类和对每种sql语句的调用次数。

其中,如图3所示,预测模块203可以包括:

模拟单元2031,用于根据预期使用条件以及目标数据库执行信息,确定模拟数据,其中,模拟数据提供目标应用的一个或多个应用入口的一个或多个请求在目标数据库的执行流程;

预测单元2032,用于依据模拟数据,预测目标数据库的容量。

其中,模拟单元2031可以用于通过以下方式根据预期使用条件以及目标数据库执行信息,确定模拟数据:

根据预期使用条件,确定一个或多个应用入口的请求基础模拟量以及增长量;根据请求基础模拟量、增长量以及目标数据库执行信息,确定模拟数据;或者,

根据预期使用条件,确定一个或多个应用入口的请求基础模拟量以及增长量,调整目标数据库执行信息;根据请求基础模拟量、增长量以及调整后的目标数据库执行信息,确定模拟数据。

其中,预测单元2032可以用于通过以下方式依据模拟数据,预测目标数据库的容量:

在目标数据库对应的模拟数据库上执行模拟数据;

在模拟数据的执行过程中,采集模拟数据库的容量指标参数,预测模拟数据库对应的目标数据库的容量。

其中,预测单元2032可以用于通过以下至少之一方式采集模拟数据库的容量指标参数,预测模拟数据库对应的目标数据库的容量:

采集模拟数据库上不同时刻的数据库查询总量,根据采集到的不同时刻的数据库查询总量,预测模拟数据库对应的目标数据库的qps;

采集模拟数据库上不同时刻的数据库事务完成量,根据采集到的不同时刻的数据库事务完成量,预测模拟数据库对应的目标数据库的tps。

如图4所示,以n个目标数据库a1至an为例,采集模块201可以从目标数据库a1至an采集执行的sql语句;处理模块202可以根据采集模块201采集到的sql语句,确定目标数据库执行信息;预测模块203可以根据预期使用条件以及确定的目标数据库执行信息,确定模拟数据,在模拟数据库b1至bn上执行模拟数据,并在模拟数据的执行过程中,从模拟数据库b1至bn采集相关信息,计算各个模拟数据库的容量。由于模拟数据库b1至bn分别为目标数据库a1至an的副本(模拟数据库b1对应于目标数据库a1,模拟数据库b2对应于目标数据库a2,依此类推),则根据计算得到的模拟数据库b1至bn的容量,分别预测目标数据库a1至an在模拟的业务场景下的容量。

根据本申请另一个实施例,目标数据库执行信息还可以包括:目标应用的一个或多个应用入口的请求每次对多个目标数据库的调用顺序;

处理模块202,可以通过以下方式根据采集到的sql语句,确定目标数据库执行信息:

根据采集到的sql语句携带的请求跟踪标识,确定每个目标数据库中每个请求跟踪标识对应的sql语句;

通过请求跟踪标识,分析应用入口的请求执行过程,确定每个应用入口的请求每次调用的服务接口、服务接口之间的调用关系、以及服务接口调用的目标数据库;

通过请求跟踪标识,确定每个应用入口的请求每次对多个目标数据库的调用顺序、以及在每个目标数据库上调用的sql语句种类和对每种sql语句的调用次数。

根据本申请另一个实施例,如图5所示,本申请的数据库容量预测装置还可以包括:趋势预测模块204,用于针对每个目标数据库,根据请求基础模拟量、增长量以及预测得到的目标数据库的容量,确定请求量与目标数据库的容量之间的预测趋势关系。

另外,关于本实施例提供的数据库容量预测装置的详细操作过程可以参照上述方法实施例的描述,故于此不再赘述。

此外,本申请实施例还提供一种数据库容量预测装置,用于预测目标数据库的容量,其中,目标应用的应用入口的请求能够通过调用服务接口来调用目标数据库执行sql语句,目标应用的应用入口的请求指访问目标应用的应用入口的请求,目标应用的应用入口指目标应用提供给用户或者其他应用进行访问的url;

本实施例提供的数据库容量预测装置包括:存储器以及处理器;其中,存储器用于存储用于数据库容量预测的程序;该用于数据库容量预测的程序在被处理器读取执行时,执行以下操作:

采集目标数据库上执行的sql语句;根据采集到的sql语句,确定目标数据库执行信息,其中,目标数据库执行信息包括:目标应用的一个或多个应用入口的请求每次在目标数据库上调用的sql语句种类和对每种sql语句的调用次数;根据预期使用条件以及目标数据库执行信息,预测目标数据库的容量。

本实施例中,用于数据库容量预测的程序在被处理器读取执行时,所执行的操作对应于方法实施例一中的步骤101至步骤103;该程序所执行的操作的其它细节可参见上述方法实施例,故于此不再赘述。

此外,本申请实施例还提供一种交互装置,包括:

显示模块,用于提供一个交互界面,在交互界面上包括:

配置部分:用于配置预期使用条件;

显示部分,用于显示在预期使用条件下的应用请求量与目标数据库的容量之间的关系。

本实施例提供的交互装置可以应用于服务端计算设备(例如,服务器)或者服务端计算设备上运行的虚拟机。然而,本申请对此并不限定。

其中,配置部分可以用于提供给用户(比如,数据库运维人员)进行一个或多个应用入口的请求基础模拟量、增长量的设置。

或者,配置部分可以用于提供给用户对各个应用入口的第一参数至第五参数中的任一项或多项进行调整,比如,用户可以选择性调整各个应用入口的第一参数至第五参数中的一项或多项,以模拟不同的业务场景。其中,关于第一参数至第五参数的说明可以参照上述方法实施例,故于此不再赘述。

或者,配置部分可以用于同时提供给用户进行一个或多个应用入口的请求基础模拟量、增长量的设置,以及提供给用户对各个应用入口的第一参数至第五参数中的任一项或多项进行调整。然而,本申请对此并不限定。

其中,显示部分还可以向用户显示在预期使用条件下的应用请求量与目标数据库的容量之间的预测趋势关系。比如,预测趋势关系可以通过曲线图或柱状图体现,应用请求量可以作为横坐标,预测得到的数据库容量(qps或者tps)可以作为纵坐标。然而,本申请对于预测趋势关系的显示方式并不限定。另外,关于预测趋势关系的说明可以参照上述方法实施例,故于此不再赘述。

其中,本实施例提供的交互装置可以应用于第一设备(比如,显示设备),上述装置实施例提供的数据库容量预测装置可以应用于第二设备(比如,服务器),第二设备通过有线或无线方式连接第一设备,第一设备用于根据第二设备的信息处理过程提供给用户不同的交互界面进行操作。比如,在第二设备确定模拟数据的过程中,可以控制第一设备显示预期使用条件的配置界面,此时,通过用户对预期使用条件的配置,可以得到不同的模拟数据,用于模拟不同的业务场景;在第二设备完成数据库容量的预测之后,可以控制第一设备显示预测趋势关系。或者,本实施例提供的交互装置和上述装置实施例提供的数据库容量预测装置可以集成在一个设备中。

根据本申请的另一个实施例,交互界面的配置部分还可以提供采集开关,使得用户可以通过采集开关控制探针打开或关闭将sql语句写入管道。或者,交互界面上还可以包括采集开关。

关于本实施例提供的交互装置的其他相关说明可以参照上述方法实施例的描述,故于此不再赘述。

此外,本申请实施例还提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现上述数据库容量预测方法。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件(例如处理器)完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,例如通过集成电路来实现其相应功能,也可以采用软件功能模块的形式实现,例如通过处理器执行存储于存储器中的程序/指令来实现其相应功能。本申请不限制于任何特定形式的硬件和软件的结合。

以上显示和描述了本申请的基本原理和主要特征和本申请的优点。本申请不受上述实施例的限制,上述实施例和说明书中描述的只是说明本申请的原理,在不脱离本申请精神和范围的前提下,本申请还会有各种变化和改进,这些变化和改进都落入要求保护的本申请范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1