本发明涉及数据处理技术领域,尤其涉及一种数据库统计信息更新的方法及装置。
背景技术:
DB2是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本。DB2主要应用于大型应用系统,具有较好的可伸缩性,可支持从大型机到单用户环境,应用于所有常见的服务器操作系统平台下。DB2提供了高层次的数据利用性、完整性、安全性、可恢复性,以及小规模到大规模应用程序的执行能力,具有与平台无关的基本功能和SQL命令。DB2以拥有一个非常完备的查询优化器而著称,其外部连接改善了查询性能,并支持多任务并行查询。DB2具有很好的网络支持能力,每个子系统可以连接十几万个分布式用户,可同时激活上千个活动线程,对大型分布式应用系统尤为适用。
可以向DB2数据库导入大批量的数据,也可以从DB2数据库迁移出大批量的数据,在完成这些操作之后或者长期使用DB2数据库之后,数据库的运行速度变得很缓慢,此时,需要更新DB2数据库的统计信息来优化DB2数据库的性能,使用户使用DB2数据库更加方便快捷。发明人经过研究发现,现有技术中,传统的更新方式是针对数据库中每一个表都编写对应的更新维护程序脚本,然后再去根据脚本查询每一个表来更新统计信息,而且不同的数据库也需要编写不同的更新维护程序脚本,这样编写程序脚本的工作量太大,耗时太长,也容易出现错误。
技术实现要素:
本发明所要解决的技术问题是,提供一种数据库统计信息更新的方法及装置,针对不同的数据库,只要获取不同的数据库的不同标识,登录数据库查询所有表就可以更新统计信息,操作简单,复用性强,可维护性高,减轻了工作量,提高了工作效率。
第一方面,本发明实施例提供了一种数据库统计信息更新的方法,该方法包括:
根据目标数据库的标识,登录所述目标数据库;
查询所述目标数据库中的所有表;
更新所述目标数据库的统计信息。
优选的,所述查询所述目标数据库中的所有表,包括:
查询所述目标数据库中的所有用户;
查询每个所述用户下的所有表。
优选的,在查询所述目标数据库中的所有表之后,还包括:
通过整理所述目标数据库中表的碎片,重组所述目标数据库中的表。
优选的,在所述根据目标数据库的标识,登录所述目标数据库之前,还包括:
获取所述目标数据库的标识。
优选的,在所述更新所述目标数据库的统计信息之后,还包括:
重新绑定所述目标数据库。
第二方面,本发明实施例提供了一种统计信息更新的装置,包括:
登录单元,用于根据目标数据库的标识,登录所述目标数据库;
查询单元,用于查询所述目标数据库中的所有表;
更新单元,用于更新所述目标数据库的统计信息。
优选的,所述查询单元包括:
用户查询子单元,用于查询所述目标数据库中的所有用户;
表查询子单元,用于查询每个所述用户下的所有表。
优选的,还包括:
重组单元,用于通过整理所述目标数据库中的表的碎片,重组所述目标数据库下的表。
优选的,还包括:
获取单元,用于获取所述目标数据库的标识。
优选的,还包括:
绑定单元,用于重新绑定所述目标数据库。
与现有技术相比,本发明至少具有以下优点:
采用本发明实施例的技术方案,通过根据目标数据库的标识,登录所述目标数据库;查询所述目标数据库中的所有表;更新所述目标数据库的统计信息。由此可见,本实施例提供了更新统计信息的脚本,针对不同的数据库,只要获取不同的数据库的不同标识执行上述步骤就可以完成更新统计信息,实现数据库优化,操作简单,复用性强,可维护性高,减轻了工作量,提高了工作效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例中一种应用场景所涉及的系统框架示意图;
图2为本发明实施例提供的一种数据库统计信息更新的方法的流程示意图;
图3为本发明实施例提供的另一种数据库统计信息更新的方法的流程示意图;
图4为本发明实施例提供的一种数据库统计信息更新的装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
发明人经过研究发现,现有技术中,传统的更新方式是针对数据库中每一个表都编写对应的更新维护程序脚本然后再去根据脚本查询每一个表来更新统计信息,而且不同的数据库也需要编写不同的更新维护程序脚本,这样编写程序脚本的工作量太大,耗时太长,也容易出现错误,实现数据库统计信息更新的操作过程太复杂。
为了解决这一问题,在本发明实施例中,通过根据目标数据库的标识,登录所述目标数据库;查询所述目标数据库中的所有表;更新所述目标数据库的统计信息。由此可见,本实施例提供了更新统计信息的脚本,针对不同的数据库,只要获取不同的数据库的不同标识执行上述步骤就可以完成更新统计信息,实现数据库优化,操作简单,复用性强,可维护性高,减轻了工作量,提高了工作效率。
举例来说,本发明实施例的场景之一,可以是应用到如图1所示的场景中。该场景中包括服务器101和DB2数据库102,服务器101和DB2数据库102可以交互。服务器101首先获取DB2数据库102的标识;根据DB2数据库102的标识,服务器101登录所述DB2数据库102;服务器101查询所述DB2数据库102中的所有表;服务器101更新所述DB2数据库102的统计信息。
可以理解的是,在上述应用场景中,虽然将本发明实施方式的动作描述由服务器101执行,本发明在执行主体方面不受限制,只要执行了本发明实施方式所公开的动作即可。
可以理解的是,上述场景仅是本发明实施例提供的一个场景示例,本发明实施例并不限于此场景。
下面结合附图,通过实施例来详细说明本发明实施例中规划导航终点的方法、装置和设备的具体实现方式。
示例性方法
参见图2,示出了本发明实施例中一种统计信息更新的方法的流程示意图。在本实施例中,所述方法例如可以包括以下步骤:
步骤201:根据目标数据库的标识,登录所述目标数据库。
可以理解的是,设定目标数据库需要优化的数据库为目标数据库,响应于更新目标数据库统计信息的指令,此指令中会带有目标数据库的标识,服务器会先获取目标数据库的标识,然后根据目标数据库的标识,登录所述目标数据库。在本实施例的一些实施方式中,在步骤201之前,还包括:获取所述目标数据库的标识。例如,服务器可以目标数据库的名称。
步骤202:查询所述目标数据库中的所有表。
可以理解的是,一个数据库可以有多个用户,每个用户又可以有多个表,因此查询一个数据库中的所有表时,可以先查询这个数据库中所有的用户,再查询每个用户下的表,即分级查询,最后完成查询所有表的操作。在本实施例的一些实施方式中,所述步骤202,具体例如可以包括:查询所述目标数据库中的所有用户;查询每个所述用户下的所有表。
可以理解的是,目标数据库中用户中的表有可能带有碎片,此时可以采取整理表的碎片、消除碎片压缩数据的方式来对表进行重组,重组表可减少表所需的空间量,而且提高数据访问量和查询表的性能。在本实施例的一些实施方式中,在步骤202之后,例如还可以包括:通过整理所述目标数据库中的表的碎片,重组所述目标数据库中的表。
步骤203:更新所述目标数据库的统计信息。
在执行步骤202时,如果查询到有关目标数据库中的所有表或索引的统计信息已过时或者不完整,则会导致此次优化后的数据库并不是最佳状态,也就是说并没有最佳地优化数据库的性能,查询步骤的执行效率被降低。
可以理解的是,DB2的package在统计信息或依赖对象发生变化后需要做下重新绑定,否则优化DB2数据库性能的过程中会采用效率较差或者错误的执行计划运行该package,造成执行性能严重下降。在本实施例的一些实施方式中,在步骤203之后,还包括:重新绑定所述目标数据库。例如,关于重新绑定所述目标数据库提供了三个命令:db2rbind、rebind和bind,在本实施例中,可以利用db2rbind命令重新绑定所述目标数据库。
通过本实施例提供的各种实施方式,通过根据目标数据库的标识,登录所述目标数据库,查询所述目标数据库中的所有用户,进而查询查询每个所述用户下的所有表,更新所述目标数据库的统计信息,最后重新绑定所述目标数据库。由此可见,本实施例提供了更新统计信息的脚本,针对不同的数据库,只要获取不同的数据库的不同标识执行上述步骤就可以完成更新统计信息,实现数据库优化,操作简单,复用性强,可维护性高,减轻了工作量,提高了工作效率。
参见图3,示出了本发明实施例中一种统计信息更新的方法的流程示意图。在本实施例中,所述方法例如可以包括以下步骤:
步骤301:获取目标数据库的名称。
步骤302:根据所述目标数据库的名称,登录所述目标数据库。
步骤303:利用for循环查询所述目标数据库中的所有用户。
步骤304:利用for循环查询查询每个所述用户下的所有表。
步骤305:利用for循环嵌套查询,更新所述目标数据库的统计信息。
步骤306:利用db2rbind命令重新绑定所述目标数据库。
通过本实施例提供的各种实施方式,通过根据目标数据库的标识,登录所述目标数据库,查询所述目标数据库下的所有用户,进而查询查询每个所述用户下的所有表,更新所述目标数据库的统计信息,最后重新绑定所述目标数据库。由此可见,本实施例提供了更新统计信息的脚本,针对不同的数据库,只要获取不同的数据库的不同标识执行上述步骤就可以完成更新统计信息,实现数据库优化,操作简单,复用性强,可维护性高,减轻了工作量,提高了工作效率。
示例性设备
参见图4,示出了本发明实施例中一种统计信息更新的装置的结构示意图。在本实施例中,所述装置例如具体可以包括:
登录单元401,用于根据目标数据库的标识,登录所述目标数据库;
查询单元402,用于查询所述目标数据库中的所有表;
更新单元403,用于更新所述目标数据库的统计信息。
可选的,所述查询单元402具体例如还可以包括:
用户查询子单元,用于查询所述目标数据库中的所有用户;
表查询子单元,用于查询每个所述用户下的所有表。
可选的,所述装置,例如还可以包括:
重组单元,用于通过整理所述目标数据库中的表的碎片,重组所述目标数据库下的表。
可选的,所述装置,例如还可以包括:
获取单元,用于获取所述目标数据库的标识。
可选的,所述装置,例如还可以包括:
绑定单元,用于重新绑定所述目标数据库。
通过本实施例提供的各种实施方式,通过根据目标数据库的标识,登录所述目标数据库,查询所述目标数据库下的所有用户,进而查询查询每个所述用户下的所有表,更新所述目标数据库的统计信息,最后重新绑定所述目标数据库。由此可见,本实施例提供了更新统计信息的脚本,针对不同的数据库,只要获取不同的数据库的不同标识执行上述步骤就可以完成更新统计信息,实现数据库优化,操作简单,复用性强,可维护性高,减轻了工作量,提高了工作效率。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。