数据库发布时间的预测方法和系统与流程

文档序号:11199326阅读:364来源:国知局
数据库发布时间的预测方法和系统与流程

本发明涉及一种数据库发布时间的预测方法和系统。



背景技术:

现有的数据库发布系统中没有相关数据库变更时间窗口预测的方法,使得各部门的开发无法精确的了解数据库相关的信息而判断合适的发布时间。因此在进行数据库变更时可能会引发生产环境数据库长时间的阻塞,影响线上业务的正常使用。



技术实现要素:

本发明要解决的技术问题是为了克服现有技术中缺乏对数据库的发布时间进行预测,以避免数据库的变更可能引发的生产环境数据库长时间的阻塞,影响线上业务的正常使用的缺陷,提供一种数据库发布时间的预测方法和系统。

本发明是通过以下技术方案解决上述技术问题的:

一种数据库发布时间的预测方法,其特点在于,建立一映射列表,所述映射列表包括所述数据库的多个综合权重值,以及与每一综合权重值一一对应的所述数据库的多个发布时间,所述预测方法包括:

s1、判断所述数据库接收的ddl(datadefinitionlanguage,数据定义语言)操作类型;

s2、判断所述ddl操作类型是否会引起全表扫描,若是,计算所述数据库的表容量权重值与表热度权重值的总和;若否,计算所述数据库的表热度权重值;

其中,所述表热度权重值为所述数据库在一时间段内被访问的频率所表征的权重值,所述表容量权重值为所述数据库接收所述ddl操作类型的操作后的容量所表征的权重值;

s3、将步骤s2的结果作为所述数据库的综合权重值;

s4、查找所述映射列表中与所述综合权重值对应的所述数据库的发布时间。

较佳地,步骤s2中判断所述ddl操作类型是否会引起全表扫描包括:

s21、在所述数据库中建立一数据表;

s22、向所述数据表中插入或修改一条数据记录,并开启io(input/output输入输出)检测;

s23、判断所述插入或修改的操作是否产生逻辑读,若是,则所述ddl操作类型会引起全表扫描,若否,所述ddl操作类型不会引起全表扫描。

较佳地,所述频率的计算方法为:以一时间间隔计算user_scans,user_seeks,user_updates操作所述数据库的次数之和作为所述数据库被访问的频率。

其中,user_scans,user_seeks,user_updates均为数据库的操作语言,分别指在索引上的遍历操作,在索引上的查找操作,在索引上的更新操作。可以理解,本方案获取频率所执行的操作方式不限于上述三种,还可为其它的可以表征频率的操作。

较佳地,所述容量的计算方法为:根据接收所述ddl操作类型的操作后的所述数据库的行数和数据库文件的大小获得所述数据库的容量。

较佳地,所述映射列表还包括一热度权重映射列表和一容量权重映射列表,所述热度权重映射列表包括所述数据库被访问的若干频率和与每一频率一一对应的表热度权重值,所述容量权重映射列表包括所述数据库接收所述ddl操作类型的操作后的若干容量和与每一容量一一对应的表容量权重值。

本发明还提供一种数据库发布时间的预测系统,其特点在于,所述系统包括一映射列表,所述映射列表包括所述数据库的多个综合权重值,以及与每一综合权重值一一对应的所述数据库的多个发布时间,所述系统还包括:

一操作类型判断模块,用于判断所述数据库接收的ddl操作类型;

一全表扫描判断模块,用于判断所述ddl操作类型是否会引起全表扫描,若是,计算所述数据库的表容量权重值与表热度权重值的总和;若否,计算所述数据库的表热度权重值;

其中,所述表热度权重值为所述数据库在一时间段内被访问的频率所表征的权重值,所述表容量权重值为所述数据库接收所述ddl操作类型的操作后的容量所表征的权重值;

和一查找模块,用于将所述全表扫描判断模块的执行结果作为所述数据库的综合权重值,并在所述映射列表中查找与所述综合权重值对应的所述数据库的发布时间。

较佳地,所述全表扫描判断模块包括:

一数据表建立模块,用于在所述数据库中建立一数据表;

一数据记录更改模块,用于向所述数据表中插入或修改一条数据记录,并开启io检测;

和一逻辑读判断模块,用于判断所述插入或修改的操作是否产生逻辑读,若是,则所述ddl操作类型会引起全表扫描,若否,所述ddl操作类型不会引起全表扫描。

较佳地,所述频率为:以一时间间隔计算user_scans,user_seeks,user_updates操作所述数据库的次数之和作为所述数据库被访问的频率。

较佳地,所述容量为:根据接收所述ddl操作类型的操作后的所述数据库的行数和数据库文件的大小获得所述数据库的容量。

较佳地,所述映射列表还包括一热度权重映射列表和一容量权重映射列表,所述热度权重映射列表包括所述数据库被访问的若干频率和与每一频率一一对应的表热度权重值,所述容量权重映射列表包括所述数据库接收所述ddl操作类型的操作后的若干容量和与每一容量一一对应的表容量权重值。

本发明的积极进步效果在于:本发明根据数据库接收到的操作类型,并对操作类型进行分析,计算数据库的权重,从而获得数据库的发布时间,能够对数据库的发布时间做出合理的预测,降低了数据库发布对生成环境的影响,提高了发布成功率,避免了在不当时刻发布数据库导致的数据库长时间的阻塞或数据库产生的其它故障。

附图说明

图1为本发明实施例1的数据库发布时间的预测方法的流程图。

图2为本发明实施例2的数据库发布时间的预测系统的结构示意图。

具体实施方式

下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。

实施例1

本实施例提供一种数据库发布时间的预测方法,如图1所示。

建立一映射列表,所述映射列表包括一综合权重发布时间映射列表,所述综合权重发布时间映射列表包括所述数据库的多个综合权重值,以及与每一综合权重值一一对应的所述数据库的多个发布时间。所述映射列表还包括一热度权重映射列表和一容量权重映射列表,所述热度权重映射列表包括所述数据库被访问的若干频率和与每一频率一一对应的表热度权重值,所述容量权重映射列表包括所述数据库接收所述ddl操作类型的操作后的若干容量和与每一容量一一对应的表容量权重值。所述映射列表的形式可举例如表1所示:

表1映射列表

所述预测方法包括:

步骤101、判断所述数据库接收的ddl操作类型;

其中,数据库可为schema数据库。ddl操作类型不限于插入、创建、查询、删除等操作类型。

步骤102、判断所述ddl操作类型是否会引起全表扫描,若是,计算所述数据库的表容量权重值与表热度权重值的总和;若否,计算所述数据库的表热度权重值;

其中,所述表热度权重值为所述数据库在一时间段内被访问的频率所表征的权重值,所述表容量权重值为所述数据库接收所述ddl操作类型的操作后的容量所表征的权重值;

所述频率的计算方法为:以一时间间隔计算user_scans,user_seeks,user_updates操作所述数据库的次数之和作为所述数据库被访问的频率。

所述容量的计算方法为:根据接收所述ddl操作类型的操作后的所述数据库的行数和数据库文件的大小获得所述数据库的容量。

该时间间隔可为10秒,频率可以次/秒计算。容量可以m(兆)计算。

步骤102中判断所述ddl操作类型是否会引起全表扫描包括:

一、在所述数据库中建立一数据表;

该数据表可只有一个字段,该字段定义为int,notnull,primarykey型,即整型,非空,主键。

二、向所述数据表中插入或修改一条数据记录,并开启io检测;

开启io检测可通过语句setstatisticsioon实现。

三、判断所述插入或修改的操作是否产生逻辑读,若是,则所述ddl操作类型会引起全表扫描,若否,所述ddl操作类型不会引起全表扫描。

其中,逻辑读,也即logicreads。若逻辑读的结果大于0,则存在全表更新,也即会引起全表扫描。反之,则不存在全表更新,也即不会引起全表扫描。

步骤103、将步骤102的结果作为所述数据库的综合权重值;

步骤104、查找所述映射列表中与所述综合权重值对应的所述数据库的发布时间。

该发布时间可为具体的时刻,也可为一时间段。而针对不同的操作类型,还可对数据库的发布时间不做限制,或者采取人工发布的方式。

此外,还可将数据库发布的行为分类是否紧急,针对紧急的数据库发布,则直接按照发布时间发布,并报告数据库发布成功的消息;针对不紧急的数据库发布,则可在发布时间内在更加合理的时间段或时刻进行发布。

比如,本实施例在实施时得到逻辑读的结果为0,访问频率为100次/秒,表热度权重值为10。也即数据库的发布操作不会引起全表更新,综合权重值为10,发布时间为19:00。

可见,本实施例根据数据库接收到的操作类型,并对操作类型进行分析,计算数据库的权重,从而获得数据库的发布时间,能够对数据库的发布时间做出合理的预测,降低了数据库发布对生成环境的影响,提高了发布成功率,避免了在不当时刻发布数据库导致的数据库长时间的阻塞或数据库产生的其它故障。

实施例2

本实施例提供一种数据库发布时间的预测系统,如图2所示。所述系统包括一映射列表1,所述映射列表包括所述数据库的多个综合权重值,以及与每一综合权重值一一对应的所述数据库的多个发布时间,所述系统还包括:

一操作类型判断模块2,用于判断所述数据库接收的ddl操作类型;

一全表扫描判断模块3,用于判断所述ddl操作类型是否会引起全表扫描,若是,计算所述数据库的表容量权重值与表热度权重值的总和;若否,计算所述数据库的表热度权重值;

其中,所述表热度权重值为所述数据库在一时间段内被访问的频率所表征的权重值,所述表容量权重值为所述数据库接收所述ddl操作类型的操作后的容量所表征的权重值;

和一查找模块4,用于将所述全表扫描判断模块的执行结果作为所述数据库的综合权重值,并在所述映射列表中查找与所述综合权重值对应的所述数据库的发布时间。

其中,所述全表扫描判断模块3包括:

一数据表建立模块31,用于在所述数据库中建立一数据表;

一数据记录更改模块32,用于向所述数据表中插入或修改一条数据记录,并开启io检测;

和一逻辑读判断模块33,用于判断所述插入或修改的操作是否产生逻辑读,若是,则所述ddl操作类型会引起全表扫描,若否,所述ddl操作类型不会引起全表扫描。

所述频率为:以一时间间隔计算user_scans,user_seeks,user_updates操作所述数据库的次数之和作为所述数据库被访问的频率。

所述容量为:根据接收所述ddl操作类型的操作后的所述数据库的行数和数据库文件的大小获得所述数据库的容量。

所述映射列表还包括一热度权重映射列表和一容量权重映射列表,所述热度权重映射列表包括所述数据库被访问的若干频率和与每一频率一一对应的表热度权重值,所述容量权重映射列表包括所述数据库接收所述ddl操作类型的操作后的若干容量和与每一容量一一对应的表容量权重值。

本实施例能够达到与实施例1相同的技术效果。

虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

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