一种访问路径的管理方法与流程

文档序号:11864698阅读:284来源:国知局
一种访问路径的管理方法与流程

本发明涉及计算机技术领域,更具体的说,是涉及一种访问路径的管理方法。



背景技术:

DB2是美国IBM公司开发的一套关系型数据库管理系统,主要应用于大型应用系统,通过查询优化器计算并提供访问路径,进而改善程序及用户的数据查询性能,并支持多任务并行查询。

目前,现有的利用DB2计算、生成及维护访问路径的方法是先通过RUNSTAT等UTILITY工具对相关表进行统计信息的计算和收集,并记入DB2CATALOG中;之后,对于静态SQL,则进行BIND或REBIND操作,生成程序的访问路径,同时通过DB2的优化器根据CATALOG的统计信息在程序BIND时计算出理论最优访问路径,并在用户调用程序或运行SQL时,利用生成的访问路径对相关表进行访问,此时,若计算出的理论访问路径不是最优,则出现性能问题,进而需要进行人工分析并修正此访问路径;对于动态SQL,则在程序被调用或SQL执行时,DB2的优化器根据CATALOG信息进行访问路径的确定,并使用此访问路径对表进行访问。

然而,在DB2计算并生成访问路径时,由于DB2CATALOG信息中表的统计信息不能实时更新,但表的数据则可能随时发生变化,使得CATALOG中用于计算访问路径的统计信息具有时点性,导致在某一时点收集的CATALOG很难普遍适于数据不断变化的表,导致原本良好的访问路径会随着表中数据的变化而突然恶化;其次,在收集CATALOG中统计信息时,通过RUNSTAT的方式会使得CPU等系统资源开销较大,不能频繁执行;而在维护访问路径时,由于只能在出现性能问题时再进行人工分析与干预修正,造成访问路径的管理粗放,存在滞后性。



技术实现要素:

有鉴于此,本发明提供了一种访问路径的管理方法,进而实现相对稳定的统计信息能够适应表中数据的不断变化,并能够快速且低消耗的更新CATALOG信息,以及解决访问路径的管理的滞后性问题,达到预先防止。

为实现上述目的,本发明提供如下技术方案:

一种访问路径的管理方法,包括:

建立源端测试环境,所述源端测试环境与目标环境相匹配;

在所述源端测试环境中创建第一应用表,并导入所述目标环境的相关表数据,其中,所述相关表数据为需要计算访问路径的表的数据;

依据所述第一应用表中导入的相关表数据,生成第一统计信息,并保存在第一信息表;

依据所述第一统计信息,在所述源端测试环境中生成源端程序访问路径,并保存在第一相关表中;

将所述第一统计信息导入所述目标环境;

依据导入的所述第一统计信息,在所述目标环境中生成目标程序访问路径,并保存在第二相关表中;

对比所述第一相关表与所述第二相关表,并保存对比不一致的结果数据。

优选地,所述将所述第一统计信息导入所述目标环境,包括:

从所述第一信息表中提取所述第一统计信息;

将所述第一统计信息保存在第一文件中,所述第一文件在所述源端测试环境中建立;

将所述第一文件导入到所述目标环境;

将保存在所述第一文件中的所述第一统计信息导入到所述目标环境。

优选地,所述将保存在所述第一文件中的所述第一统计信息导入到所述目标环境,包括:

判断在所述目标环境中建立了与所述第一应用表对应的第二应用表时,将所述第一统计信息导入所述目标环境中的第二信息表;

判断在所述目标环境中未建立与所述第一应用表对应的第二应用表时,依据所述源端测试环境中的所述第一应用表,在所述目标环境中建立与所述第一应用表对应的所述第二应用表,并将所述第一统计信息导入所述目标环境中的所述第二信息表。

优选地,在所述判断在所述目标环境中建立了与所述第一应用表对应的第二应用表时,将所述第一统计信息导入所述目标环境中的所述第二信息表之前,还包括:

判断所述第二应用表与所述第一应用表的结构不一致时,重建所述目标环境中的所述第二应用表。

优选地,所述对比所述第一相关表与所述第二相关表,并保存对比不一致的结果数据,包括:

在所述目标环境中建立第一临时访问路径表、第二临时访问路径表以及访问路径对比表;

收集所述源端程序访问路径,并存入所述第一临时访问路径表;

收集所述目标程序访问路径,并存入所述第二临时访问路径表;

对比所述第一临时访问路径表与所述第二临时访问路径表;

将对比不一致的结果数据存入所述访问路径对比表。

优选地,所述收集所述源端程序访问路径,并存入所述第一临时访问路径表,包括:

获取所述源端测试环境中的源端程序清单,其中,所述源端程序清单包含与需要进行对比的所述源端程序访问路径所对应的源端程序;

在所述源端测试环境中建立第三临时访问路径表,其中,所述第三临时访问路径表与所述第一临时访问路径表的结构相同;

解析所述源端程序清单中的源端程序访问路径,并存入所述第三临时访问路径表;

将存入所述第三临时访问路径表中的所述源端程序访问路径保存在第二文件中,所述第二文件在所述源端测试环境中建立;

将所述第二文件中的所述源端程序访问路径导入所述第一临时访问路径表。

优选地,所述收集所述目标程序访问路径,并存入所述第二临时访问路径表,包括:

获取所述目标环境中的目标程序清单,其中,所述目标程序清单包含与需要进行对比的目标程序访问路径所对应的目标端程序;

解析所述目标程序清单中的目标程序访问路径,并存入所述第二临时访问路径表。

优选地,在所述将对比不一致的结果数据存入所述访问路径对比表之后,还包括:

在所述目标环境中建立访问路径对比结果表;

将所述访问路径对比表中的结果数据存入所述访问路径对比结果表。

经由上述的技术方案可知,与现有技术相比,本发明提供了一种访问路径的管理方法,通过建立一个与目标环境相匹配的源端测试环境,并在所述源端测试环境中创建的第一应用表内导入所述目标环境的相关表数据,之后,依据所述第一应用表中导入的相关表数据,在源端环境进行一系列的业务仿真和模拟,在此基础上不断修正生成第一统计信息,从而使得相对稳定的统计信息能够适应表中数据的不断变化,且在所述源端测试环境中进行统计信息的更新能够减少系统操作时间,降低系统资源的消耗,再依据所述第一统计信息生成源端程序访问路径,保存在第一相关表,并将所述第一统计信息导入所述目标环境,生成目标程序访问路径,保存在第二相关表,对比所述第一相关表与所述第二相关表,并保存对比不一致的结果数据,进而方便人工分析与修正,解决了访问路径管理的滞后性问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例提供的一种访问路径的管理方法流程图;

图2为本发明实施例提供的一种导入第一统计信息到目标环境的方法流程图;

图3为本发明实施例提供的一种对比第一相关表与第二相关表的方法流程图;

图4为本发明实施例提供的一种收集及保存源端程序访问路径的方法流程图;

图5为本发明实施例提供的一种收集及保存目标程序访问路径的方法流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供了一种访问路径的管理方法,请参见附图1,所述方法具体包括以下步骤:

步骤101:建立源端测试环境,所述源端测试环境与目标环境相匹配;

具体的,通过采用与所述目标环境相同的环境搭建动作,制造出与所述目标环境相匹配的所述源端测试环境,其中所述源端测试环境拥有与所述目标环境相同的ZPARM参数设置,BUFFER POOL、SORT POOL、RID POOL等POOL的设置,CPU参数以及表结构和应用架构。

步骤102:在所述源端测试环境中创建第一应用表,并导入所述目标环境的相关表数据,其中,所述相关表数据为需要计算访问路径的表的数据;

具体的,导入到所述源端测试环境中的第一应用表的相关表数据为所述目标环境需要计算访问路径的应用表的相关现存全部数据,如表中现存的各行各列的实际数据。

步骤103:依据所述第一应用表中导入的相关表数据,生成第一统计信息,并保存在第一信息表;

具体的,将所述第一应用表中导入的需要计算访问路径的表的相关数据,在所述源端测试环境进行大量的模拟与仿真,进而实现了在所述源端测试环境中进行模拟交易、模拟批量等操作;在经过一段时间的模拟运行后,通过RUNSTAT操作进行统计信息的收集、更新,从而获得所述第一统计信息,并保存在所述源端测试环境中的第一信息表中,所述第一信息表可为CATALOG表,最终实现了对预估的发展趋势的统计信息的模拟。

步骤104:依据所述第一统计信息,在所述源端测试环境中生成源端程序访问路径,并保存在第一相关表中;

具体的,在所述源端测试环境中,通过程序的BIND或REBIND操作生成静态SQL的访问路径,通过所述第一统计信息在程序运行或SQL执行时,进行动态SQL的访问路径的生成。

步骤105:将所述第一统计信息导入所述目标环境;

具体的,在所述目标环境中以执行SQL的方式运行所述第一统计信息,即可将所述第一统计信息导入到所述目标环境中。

步骤106:依据导入的所述第一统计信息,在所述目标环境中生成目标程序访问路径,并保存在第二相关表中;

具体的,在所述目标环境中,通过程序的BIND或REBIND操作生成静态SQL的访问路径,通过所述第一统计信息在程序运行或SQL执行时,进行动态SQL的访问路径的生成。

步骤107:对比所述第一相关表与所述第二相关表,并保存对比不一致的结果数据;

具体的,将所述第一相关表中保存的源端程序访问路径和所述第二相关表中保存的目标程序访问路径进行对比得出的不一致的访问路径进行保存,以便在还未根据所述生成的访问路径查找对应的资源之前,实现人工把控与分析。

本发明实施例公开的访问路径的管理方法中,通过建立与所述目标环境相匹配的所述源端测试环境,并依据从所述目标环境中导入的相关表数据,生成第一统计信息,并保存在第一信息表,从而既实现了相对稳定的统计信息适应数据不断变化的表,也实现了快速且低消耗地更新统计信息,之后将所述第一统计信息导入所述目标环境,生成对应的目标程序访问路径,并保存在所述第二相关表中,对比所述第一相关表与所述第二相关表,并保存对比不一致的结果数据,进而方便在还未根据所述生成的访问路径查找对应的资源之前,实现人工把控与分析,解决了访问路径的滞后性问题。

请参阅附图2,上述实施例中提供的步骤105的具体实现过程包括以下步骤:

步骤201:从所述第一信息表中提取所述第一统计信息。

步骤202:将所述第一统计信息保存在第一文件中,所述第一文件在所述源端测试环境中建立。

步骤203:将所述第一文件导入到所述目标环境;

具体的,无法直接将存储在所述源端测试环境中的第一信息表中的第一统计信息导入到所述目标环境中,因此需要先将从所述第一信息表中提取出来的所述第一统计信息保存在第一文件中,再将所述第一文件转存到所述目标环境中。

步骤204:判断在所述目标环境中是否建立了与所述第一应用表对应的第二应用表,若建立,则执行步骤205a,若未建立,则执行步骤205b;

具体的,所述源端测试环境与所述目标环境中的相关应用表初始结构相互匹配,但经过一段业务仿真模拟后,可能存在相关应用表结构发生变化的情况,或因业务发展定义了新的相关应用表,因而在将所述第一统计信息导入所述目标环境中时需要先判断在所述目标环境中是否已建立了与所述第一信息表所对应的第一应用表相同的所述第二应用表;仅当所述第一应用表与第二应用表完全匹配的情况下,才能在所述第二信息表中存储导入的所述第一统计信息,其中,所述第二信息表可为CATALOG表。

步骤205a:判断所述第二应用表与所述第一应用表的结构是否一致,若不一致,则执行步骤206,若一致,则执行步骤207;

具体的,所述源端测试环境与所述目标环境中的相关应用表初始结构相互匹配,但经过一段业务仿真模拟后,可能存在相关应用表结构发生变化的情况,因而还需判断在所述目标环境中建立的所述第二应用表结构与所述第一应用表结构相同时,才能进行所述第一统计信息的导入。

步骤205b:依据所述源端测试环境中的所述第一应用表,在所述目标环境中建立与所述第一应用表对应的所述第二应用表,并执行步骤207。

步骤206:重建所述目标环境中的所述第二应用表,并执行步骤207;

具体的,在所述目标环境中已建立了与要导入的所述第一统计信息相关的第一应用表所对应的第二应用表,但所述第二应用表的结构与所述第一应用表的结构不相同时,删除现有的所述第二应用表,之后再依据所述第一应用表的结构,建立一个与之相同的应用表,作为所述第二应用表;只有在第一应用表与第二应用表结构完全一致时,所述第二信息表才能用于存储所述第一统计信息。

步骤207:将保存在所述第一文件中的所述第一统计信息导入到所述目标环境中的所述第二信息表。

本发明实施例中,通过在将所述第一统计信息导入所述目标环境时,先从所述第一信息表中提取出所述第一统计信息,并将其保存在所述第一文件中,从而顺利导入所述目标环境中,之后再依次判断所述目标环境中是否建立与导入的所述第一统计信息相关的第一应用表所对应的第二应用表,以及判断是否所述第二应用表与所述第一应用表的结构一致,满足条件后再将所述第一文件中的所述第一统计信息导入,进而满足了所述目标环境与所述源端测试环境相匹配的条件,且方便后续在所述目标环境中利用所述第一统计信息生成目标程序访问路径。

请参阅附图3,上述实施例中提供的步骤107的具体实现过程包括以下步骤:

步骤301:在所述目标环境中建立第一临时访问路径表、第二临时访问路径表以及访问路径对比表;

具体的,所述第一临时访问路径表与第二临时访问路径表的结构一致,但表的所有者不同,可存放不同的数据;所述访问路径对比表用于存入所述第一临时访问路径表与第二临时访问路径表中的访问路径不同的数据条目,且所述访问路径对比表中存入的结果数据条目会随着所述第一临时访问路径表与第二临时访问路径表中的内容的变化而自动变化。

步骤302:收集所述源端程序访问路径,并存入所述第一临时访问路径表;

具体的,将所述源端测试环境中的所述源端程序访问路径收集后,存入所述目标环境中建立的所述第一临时访问路径表中。

步骤303:收集所述目标程序访问路径,并存入所述第二临时访问路径表。

步骤304:对比所述第一临时访问路径表与所述第二临时访问路径表;

具体的,通过对比所述第一临时访问路径表与所述第二临时访问路径表中的五个字段是否完全一致来得出所述第一临时访问路径表与第二临时访问路径表中是否记录的是同一条程序SQL语句访问路径,其中所述五个字段分别为:QUERYNO、QBLOCKNO、PROGNAME、PLANNO、MIXOPSEQ;若所述第一临时访问路径表与第二临时访问路径表中记录的是同一条程序SQL语句访问路径,则再次通过对比所述同一条程序SQL语句访问路径所对应的十四个字段是否完全一致来最终得出所述第一临时访问路径表与第二临时访问路径表中同一条程序SQL语句访问路径不一致的结果数据,其中所述十四个字段分别为:METHOD、ACCESSTYPE、MATCHCOLS、ACCESSNAME、INDEXONLY、TSLOCKMODE、SORTN_UNIQ、SORTN_JOIN、SORTN_ORDERBY、SORTN_GROUPBY、SORTC_UNIQ、SORTC_JOIN、SORTC_ORDERBY、SORTC_GROUPBY。

步骤305:将对比不一致的结果数据存入所述访问路径对比表;

具体的,当在对比得出所述第一临时访问路径表与所述第二临时访问路径表中不一致的结果数据条目时,所述访问路径对比表中的内容也会随着所述第一临时访问路径表与第二临时访问路径表中的不一致的结果数据条目的变化而自动更新为最新的访问路径不一致的结果数据条目。

步骤306:将所述访问路径对比表中的结果数据存入所述访问路径对比结果表,所述访问路径对比结果表在所述目标环境中建立;

具体的,由于所述访问路径对比表中的存入的结果数据条目会随着所述第一临时访问路径表与第二临时访问路径表中的内容的变化而自动变化,为方便后续的人工分析,需要在所述目标环境中建立所述访问路径对比结果表,用于随时保存某一时刻的所述访问路径对比表中的不一致的结果数据,方便进行后期的分析与修正。

本发明实施例中,通过分别收集所述源端程序访问路径与所述目标程序访问路径,并各自存入在所述目标环境中建立的所述第一临时访问路径表与第二临时访问路径表中,并将对比后获得的不一致的结果数据存入在所述目标环境中建立的所述访问路径对比表,为了便于后期随时查看某一时刻的所述不一致的结果数据,再将所述不一致的结果数据保存在所述访问路径对比结果表中,进而实现了预警问题,事先干预的目的。

请参阅附图4,上述实施例中提供的步骤302的具体实现过程包括以下步骤:

步骤401:获取所述源端测试环境中的源端程序清单,所述源端程序清单包含与需要进行对比的源端程序访问路径所对应的源端程序;

具体的,在所述源端测试环境中,所述源端程序访问路径保存在所述第一相关表中,而所述源端程序清单则为本次需要进行访问路径对比分析的一系列源端程序列表的集合,可通过如程序的数据库名字、程序的COLLID等,从所述第一相关表中选择出与其相匹配的条目的访问路径;同时,还可以根据当前分析的需要,客户化数据库名字DBNAME和COLLID值DCOLLID。

步骤402:在所述源端测试环境中建立第三临时访问路径表,所述第三临时访问路径表与所述第一临时访问路径表的结构相同。

步骤403:解析所述源端程序清单中的源端程序访问路径,并存入所述第三临时访问路径表;

具体的,利用EXPLAIN SQL语句,将所述源端程序清单中的程序COLLID和程序的数据库名字,填入到标准SQL模板中,指定存入所述第三临时访问路径表,则在SQL执行后,会将当前给定COLLID和名字的程序的访问路径,解析到所述第三临时访问路径表中。

步骤404:将存入所述第三临时访问路径表中的所述源端程序访问路径保存在第二文件中,所述第二文件在所述源端测试环境中建立;

具体的,利用UNLOAD UTILITY工具,将存入所述第三临时访问路径表中的访问路径下载到所述第二文件中。

步骤405:将所述第二文件中的所述源端程序访问路径导入所述第一临时访问路径表;

具体的,利用LOAD工具,将所述文件中的访问路径数据,按照指定格式,一行一行的导入所述第一临时访问路径表。

本发明实施例中,通过在所述源端测试环境中,对包含集合了需要进行对比的源端程序访问路径所对应的源端程序的源端程序清单进行解析,获取得到所述源端程序访问路径,并将其存入与所述第一临时访问路径表的结构相同的所述第三临时访问路径表中,之后下载所述存入第三临时访问路径表中的源端程序访问路径到所述第二文件,进而再导入所述源端程序访问路径到所述第一临时访问路径表,从而方便后续在同一个环境中对两个不同的环境中生成的访问路径进行对比分析。

请参阅附图5,上述实施例中提供的步骤303的具体实现过程包括以下步骤:

步骤501:获取所述目标环境中的目标程序清单,所述目标程序清单包含需要进行对比的目标程序访问路径所对应的目标端程序;

具体的,在所述目标环境中,所述目标程序访问路径保存在所述第二相关表中,而所述目标程序清单则为本次需要进行访问路径对比分析的一系列目标端程序列表的集合,可通过如程序的数据库名字、程序的COLLID等,从所述第二相关表中选择出与其相匹配的条目的访问路径;同时,还可以根据当前分析的需要,客户化数据库名字DBNAME和COLLID值DCOLLID。

步骤502:解析所述目标程序清单中的目标程序访问路径,并存入所述第二临时访问路径表;

具体的,利用EXPLAIN SQL语句,将所述目标程序清单中的程序COLLID和程序的数据库名字,填入到标准SQL模板中,指定存入所述第二临时访问路径表,则在SQL执行后,会将当前给定COLLID和名字的程序的访问路径,解析到所述第二临时访问路径表中。

本发明实施例中,通过在所述目标环境中,对包含集合了需要进行对比的目标程序访问路径所对应目标端程序的目标程序清单进行解析,获取得到所述目标程序访问路径,并存入所述第二临时访问路径表,进而便于后期对两个不同的环境中生成的访问路径进行对比分析。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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