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

文档序号:8543778阅读:来源:国知局
的影响需要建立与生产数据库完成一样的测试环境,虽然不需要搭建信息系统的应用环境和大量测试用例,减少了大量时间和人工成本,但是由于大型信息系统的数据量巨大,要建立与生产系统完全一样的数据库测试环境仍然有很大的难度。
[0034]本发明采用一种快速侦测数据库变更对执行计划影响方式,在测试环境安装与生产系统相同的操作系统、数据库软件,然后只需把在生产系统中元数据(包括表结构、索引信息)、SQL语句以及SQL语句的执行计划等有关信息移植到测试环境,而不需要将生产系统海量的数据导入测试环境就能完成数据库变更对性能影响的快速侦测。
[0035]下面以Oracle 1g版本为例,详细说明本发明的实现步骤:
[0036]1、手工生成一个 AWR(Automatic Workload Repository,自动负载信息库)快照,提取跟变更的数据库表有关的SQL以及SQL的执行计划信息。
[0037]AffR的采样工作由MMON进程每个I小时执行一次,ASH信息同样会被采样写出到AffR负载库中。这些采样数据都存储在SYSAUX表空间中,并且以WRM$_*和WRH$_*的格式命名。前一种类型存储元数据信息(如检查的数据库和采集的快照),后一种类型保存实际采集的统计数据。
[0038]手工执行一次快照,把ASH buffer中的信息写入wrh$_*的格式的表中,然后通过脚本提取跟数据库变更表相关的所有SQL和SQL的执行计划信息,存放到中间表。
[0039]2、在生产环境数据库导出统计信息,该步骤的具体方式如下:
[0040]a.在生产库将导出统计需要的权限赋值给sys用户。
[0041]b.利用ORACLE系统提供的功能包(bms_stats.create_stat_table)创建存储统计信息的表(dictstattab)。
[0042]c.利用 ORACLE系统提供的功能包(DBMS_STATS.EXPORT_DATABASE_STATS)导出统计信息到dictstattab。
[0043]3、将数据库元数据、统计信息与更数据库表变更相关的SQL信息同步到测试环境,该步骤的具体方式如下:
[0044]a.利用数据库的导出工具将元数据、统计信息、SQL信息从生产库导出。
[0045]b.将导出文件传到测试库。
[0046]c.利用数据库的导出工具将元数据、统计信息与SQL信息导入生产库。
[0047]4、在测试库将同步过来的生产库sys用户统计信息导入
[0048]首先通过ORACLE 系统提供功能包(DBMS_STATS.DELETE_SCHEMA_STATS),删除sys用户下的统计信息,然后通过ORACLE系统提供功能包(DBMS_STATS.1MPORT_SCHEMA_STATS)导入从生产库同步过来的统计信息。
[0049]5、在测试库做数据库的更改
[0050]在测试库模拟生产库将要进行的变更,比如索引的删除、增加、更改等。
[0051]6、在测试库生成执行计划
[0052]通过步骤2和3,本发明将更数据库变更相关的SQL语句和执行计划同步到了测试库,这一步本发明通过脚本程序生成所有同步过来的SQL语句的执行计划,并将执行计划转储到一个表,由于测试库同步了生产库的优化器统计信息,而执行计划只跟优化器的统计信息相关,所以在测试库上生成的执行计划完全能说明生产库在数据库变更之后SQL语句的执行计划情况。
[0053]7、对比数据库变更前后的执行计划
[0054]通过前面的步骤,在测试库存储了数据库变更前的所有跟变更有关的SQL语句以及SQL语句的执行计划,以及这些SQL在数据库变更后的执行计划,通过脚本程序进行数据库变更前和变更后SQL语句的执行计划,将执行计划有改变的SQL提取出来,根据变更前后的执行计划,进行变更前后的性能对比分析,如此便能侦测数据库变更对SQL访问语句的影响。
[0055]本发明提供的数据库变更对现有业务影响的快速侦测方法,通过同步元数据、统计信息搭建测试环境,避免了海量数据的同步所需的大量时间和人力成本,利用执行计划差异快速侦测数据库变更对SQL语句的性能影响;适用于海量数据的大型信息系统数据库变更对业务影响的快速侦测方法,目前已经应用已经在中国移动广东公司传输网管平台运行,数据库变更测试结果稳定、可靠,为数据库变更性能测试节省了大量的人力、时间成本,带来了非常高的价值。具体优点如下:1)支持海量数据。由于本发明不需要同步生产数据库的海量数据,而只需要同步表结构、统计信息等轻量级数据,对于具有海量数据的大型信息系统,也能快速的侦测数据库变更对现有业务的影响。传统的方案动辄有小时级的时差,且查询效率较差。2)准确性。由于本发明分析跟数据库变更相关的所有SQL访问语句,能准确的覆盖数据库变更的影响面。3)较低的成本。因为不需要同步海量数据,所以对测试环境的软硬件配置和存储能力要求不高,节省大量的测试成本。
[0056]虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范围当以权利要求书所界定的为准。
【主权项】
1.一种数据库变更对现有业务影响的快速侦测方法,其特征在于,包括如下步骤: a)在测试环境安装与生产系统相同的操作系统和数据库软件; b)将生产系统的数据库中元数据同步到测试环境的数据库中,统计与更数据库表变更相关的SQL信息并同步到测试环境的数据库中; c)在测试环境的数据库中模拟生产系统数据库将要进行的变更,并生成变更后执行计划; d)对比分析变更前后测试环境数据库的性能变化,获取访问受影响的SQL语句。
2.如权利要求1所述的数据库变更对现有业务影响的快速侦测方法,其特征在于,所述步骤a)中的数据库为ORACLE数据库,所述步骤b)通过手工生成执行自动负载信息库快照获取生产系统的数据库中元数据,并统计提取与数据库表变更相关的SQL语句和SQL执行计划,存放到中间表。
3.如权利要求2所述的数据库变更对现有业务影响的快速侦测方法,其特征在于,所述步骤b)在生产系统的数据库将导出统计需要的权限赋值给sys用户,所述测试环境的数据库先删除sys用户下的统计信息,然后通过ORACLE系统导入从生产系统的数据库同步过来的统计信息。
4.如权利要求2所述的数据库变更对现有业务影响的快速侦测方法,其特征在于,所述步骤b)中的元数据包括表结构和索引信息,所述SQL执行计划包括经过ORACLE数据库优化器处理后的SQL语句的操作顺序和操作类型。
5.如权利要求4所述的数据库变更对现有业务影响的快速侦测方法,其特征在于,所述数据库表变更相关的SQL语句包括表连接和/或嵌套子查询,所述SQL执行计划的统计优化过程如下: 使用ORACLE数据库的DBMS_STATS包或analyze命令手动获取用于存储CPU统计信息的AUX_STATS$表,以及用于存储I/O统计信息的X$KCF10表; 计算SQL语句的cpu执行成本cpu_cost:cpu_cost = cpu循环次数/ (cpu速度*单块读取的时间)); 计算SQL语句的1执行成本1_cost:1_cost =单块读取的数量+多块读取的数量*多块读取的时间/单块读取的时间; 根据统计信息中SQL语句的cpu执行成本与1执行成本之和的大小选择SQL语句操作类型以及操作顺序。
【专利摘要】本发明公开了一种数据库变更对现有业务影响的快速侦测方法,包括如下步骤:a)在测试环境安装与生产系统相同的操作系统和数据库软件;b)将生产系统的数据库中元数据同步到测试环境的数据库中,统计与更数据库表变更相关的SQL信息并同步到测试环境的数据库中;c)在测试环境的数据库中模拟生产系统数据库将要进行的变更,并生成变更后执行计划;d)对比分析变更前后测试环境数据库的性能变化,获取访问受影响的SQL语句。本发明提供的数据库变更对现有业务影响的快速侦测方法,不需要搭建与生产环境一样的测试环境,避免了海量数据的同步所需的大量时间和人力成本,且能准确快速地侦测数据库变更对现有业务影响。
【IPC分类】G06F17-30
【公开号】CN104866580
【申请号】CN201510275375
【发明人】梁猛, 陈曦
【申请人】梁猛, 陈曦
【公开日】2015年8月26日
【申请日】2015年5月26日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1