一种数据库变更对现有业务影响的快速侦测方法

文档序号:8543778阅读:436来源:国知局
一种数据库变更对现有业务影响的快速侦测方法
【技术领域】
[0001]本发明涉及一种数据库处理方法,尤其涉及一种数据库变更对现有业务影响的快速侦测方法。
【背景技术】
[0002]大型信息系统运行维护期间,功能的增加、修改,以及一些模块的性能优化是常规的工作,比如说移动BOSS系统,新业务的上线、话费套餐的变更等。要完成这些工作,就有可能需要对数据库的表结构、索引结构进行变更,比如说表增加、修改、删除字段和索引,这有可能造成数据库访问语句执行效率变差,影响系统正常的业务功能。为了避免这种情况,必须要在执行数据库更改前对在测试环境对更改进行性能测试,该测试要验证系统变更后的稳定性,评估数据库变更的对系统造成的风险。
[0003]现有技术对于数据库变更对系统的影响,一般是采用端到端的测试,首先要搭建跟生产环境相似的测试环境,包括前端的应用程序、中间件以及数据库环境,并且需要将生产环境的海量数据同步到测试环境。测试环境搭建好了以后,在测试库模拟进行数据库变更,然后根据数据库变更的情况,设计测试用例来测试数据库更改可能影响到业务模块的性能状况。由于现有的大型信息系统(BOSS系统)至少包括展示层、业务逻辑层、数据层等多个层次,而且涉及多种开发语言和中间件,架构非常复杂,所以设计出良好的用例非常困难,只能通过设计大量的测试用例来准确覆盖与数据库变更相关的访问语句。
[0004]现有技术的测试方案,是从外围端到端的测试,需要搭建与生产环境一样的测试环境,包括数据库环境、中间件环境、网络环境、应用程序等,需要投入大量的人力物力,而且也会耗费大量的时间,不适合这种常规的系统变更。而且,由于大型信息系统结构的复杂性,要找出与数据库变更相关的模块和功能点,是非常困难的,所以测试案例很难精确覆盖数据库变更的影响点,测试效果不能保证,执行数据库变更会存在很多未知的风险。

【发明内容】

[0005]本发明所要解决的技术问题是提供一种数据库变更对现有业务影响的快速侦测方法,不需要搭建与生产环境一样的测试环境,避免了海量数据的同步所需的大量时间和人力成本,且能准确快速地侦测数据库变更对现有业务影响。
[0006]本发明为解决上述技术问题而采用的技术方案是提供一种数据库变更对现有业务影响的快速侦测方法,包括如下步骤:a)在测试环境安装与生产系统相同的操作系统和数据库软件;b)将生产系统的数据库中元数据同步到测试环境的数据库中,统计与更数据库表变更相关的SQL信息并同步到测试环境的数据库中;c)在测试环境的数据库中模拟生产系统数据库将要进行的变更,并生成变更后执行计划;d)对比分析变更前后测试环境数据库的性能变化,获取访问受影响的SQL语句。
[0007]上述的数据库变更对现有业务影响的快速侦测方法,其中,所述步骤a)中的数据库为ORACLE数据库,所述步骤b)通过手工生成执行自动负载信息库快照获取生产系统的数据库中元数据,并统计提取与数据库表变更相关的SQL语句和SQL执行计划,存放到中间表。
[0008]上述的数据库变更对现有业务影响的快速侦测方法,其中,所述步骤b)在生产系统的数据库将导出统计需要的权限赋值给sys用户,所述测试环境的数据库先删除sys用户下的统计信息,然后通过ORACLE系统导入从生产系统的数据库同步过来的统计信息。
[0009]上述的数据库变更对现有业务影响的快速侦测方法,其中,所述步骤b)中的元数据包括表结构和索引信息,所述SQL执行计划包括经过ORACLE数据库优化器处理后的SQL语句的操作顺序和操作类型。
[0010]上述的数据库变更对现有业务影响的快速侦测方法,其中,所述数据库表变更相关的SQL语句包括表连接和/或嵌套子查询,所述SQL执行计划的统计优化过程如下:
[0011]使用ORACLE数据库的DBMS_STATS包或analyze命令手动获取用于存储CPU统计信息的AUX_STATS$表,以及用于存储I/O统计信息的X$KCF10表;
[0012]计算SQL语句的cpu执行成本cpu_cost:cpu_cost = cpu循环次数/ (cpu速度*单块读取的时间));
[0013]计算SQL语句的1执行成本1_cost:1_cost =单块读取的数量+多块读取的数量*多块读取的时间/单块读取的时间;
[0014]根据统计信息中SQL语句的cpu执行成本与1执行成本之和的大小选择SQL语句操作类型以及操作顺序。
[0015]本发明对比现有技术有如下的有益效果:本发明提供的数据库变更对现有业务影响的快速侦测方法,通过同步表结构、统计与更数据库表变更相关的SQL语句和SQL执行计划信息等轻量级数据,而不需要搭建与生产环境一样的测试环境,避免了海量数据的同步所需的大量时间和人力成本,由于测试库同步了生产库的优化器统计信息,而SQL执行计划只跟优化器的统计信息相关,所以在测试库上生成的执行计划完全能说明生产库在数据库变更之后SQL语句的执行计划情况,从而准确快速地侦测数据库变更对现有业务影响。
【附图说明】
[0016]图1为本发明数据库变更影响的快速侦测系统架构示意图;
[0017]图2为本发明数据库变更影响的快速侦测流程示意图。
【具体实施方式】
[0018]下面结合附图和实施例对本发明作进一步的描述。
[0019]图1为本发明数据库变更影响的快速侦测系统架构示意图;图2为本发明数据库变更影响的快速侦测流程示意图。
[0020]请参见图1和图2,本发明提供的数据库变更对现有业务影响的快速侦测方法,包括如下步骤:
[0021]步骤S1:在测试环境安装与生产系统相同的操作系统和数据库软件;
[0022]步骤S2:将生产系统的数据库中元数据同步到测试环境的数据库中,统计与更数据库表变更相关的SQL信息并同步到测试环境的数据库中;
[0023]步骤S3:在测试环境的数据库中模拟生产系统数据库将要进行的变更,并生成变更后执行计划;
[0024]步骤S4:对比分析变更前后测试环境数据库的性能变化,获取访问受影响的SQL语句。
[0025]信息系统的各个模块通过数据库访问语句,如机构化查询语言(SQL, StructureQuery Language)访问数据库。数据库的更改,直接影响的是SQL的执行效率,从而影响包含这些SQL的应用程序模块。
[0026]SQL语句的执行效率在软硬件环境相同的情况下,只跟SQL执行计划相关,对于复杂的SQL语句(包含表连接、嵌套子查询等),执行计划可能几十种甚至上百种,但是数据库会根据一定的规则或者统计信息(statistics)去选择一个执行计划,对于ORACLE数据库,优化器有两大类,基于规则(RBO)和基于成本(CBO)。在CBO规则下,数据库根据搜集的表和索引的数据的统计信息,综合来决定选取一个数据库认为最优的执行计划,优化器统计信息存储在ORACLE数据库系统用户下的相关表中,ORACLE通过建立自带的视图来展现优化器的统计信息,比如:AUX_STATS$存储CPU统计信息,X$KCF10存储I/O统计信息,而与表的有关统计信息的视图为 DBA_TABLES、DBA_OBJECT_TABLES、DBA_TAB_STATISTICS、DBA_TAB_COL_STATISTICS等。因为数据库中的对象会经常的变化,所以统计信息必须有规律的更新以便更加准确的描述这些数据库对象。统计信息默认是由ORACLE自动维护的,不过也可以用DBMS_STATS包或这analyze命令来手动收集统计信息。
[0027]本发明提供的数据库变更对现有业务影响的快速侦测方法,在CBO规则下sql的执行成本计算公式为:
[0028]cost = 1_cost+cpu_cost (也就是执行成本为1成本加上cpu成本)
[0029]1成本和cpu成本的计算公式如下:
[0030]1_cost =单块读取的数量+多块读取的数量*多块读取的时间/单块读取的时间
[0031]cpu_cost = cpu循环次数/ (cpu速度*单块读取的时间))
[0032]在软硬件环境相同的情况下,cpu速度、单块读取的时间、多块读取的时间是相对稳定的,所以sql执行成本只跟单块读取的数量、多块读取的数量、cpu循环次数相关,而在软硬件环境一样的情况下,这三个指标完全由SQL的执行计划中操作顺序、操作类型决定。
[0033]现有的技术要侦测数据库更改对执行计划
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1