[发明专利]一种实现SQL数据库监控的方法和装置有效
申请号: | 201110045271.5 | 申请日: | 2011-02-24 |
公开(公告)号: | CN102110162A | 公开(公告)日: | 2011-06-29 |
发明(设计)人: | 杨宁;王能;张晶;李莹;张敏杰 | 申请(专利权)人: | 北京中电普华信息技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 逯长明;王宝筠 |
地址: | 100192 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 sql 数据库 监控 方法 装置 | ||
技术领域
本申请涉及计算机技术领域,特别是涉及一种实现SQL数据库监控的方法和装置。
背景技术
随着社会的发展和科技的进步,各个行业的信息化建设正在如火如荼的进行中。综合各种技术而开发出来的项目良莠不齐,如何实现对各种系统的性能的监控,尤其是对SQL(Structured Query Language,结构化的查询语言)数据库的执行情况的监控,进一步发现系统瓶颈,提升系统性能以及稳定性,已成为迫切需要解决的技术问题。
目前实现SQL数据库监控的方式可以分为以下几种:第一种是从数据库层面监控SQL数据库的执行,例如,Oracle10g数据库本身就提供了一些监控功能。但是,第一种方式只能监控数据库内部的执行情况,不能客观地得到在网络环境下,从业务系统发出执行命令到接收到执行结果这段时间内数据库的执行情况,因此,不能反映应用程序执行数据库操作的性能。
第二种是修改业务代码,即,在执行SQL数据库的业务代码中加入监控代码。虽然第二种方式可以克服第一种方式中存在的缺陷,但是,在第二种方式中,需要修改原有的业务代码来加入监控代码使两者混杂在一起,这样增加了业务和监控的耦合性,降低了业务系统的可维护性。
第三种方式是采用动态代理的方式,即,采用动态代理机制来修改数据库驱动类。请参阅图1,其为现有技术中的动态代理结构示意图。如图1所示,被代理类为数据库操作驱动类,原执行方法为获取数据库连接的方法,代理类需要实现Invocation Handler接口,并重写接口中的invoke方法。由于代理类需要采用反射的方式才能调用其中的原执行方法,因此,代理类在进行监控时的执行效率较低,因此不适合在运行期对SQL进行监控。
发明内容
为了解决上述技术问题,本申请实施例提供了一种实现SQL数据库监控的方法和装置,以提高代理类在进行监控时的执行效率,同时,保证在运行期对SQL数据库实现监控。
本申请实施例公开了如下技术方案:
一种实现SQL数据库监控的方法,包括:当虚拟机装载用于获取数据库连接的驱动类时,更换所述驱动类中原方法的方法名;重新生成与所述驱动类中的原方法名相同的方法,并在重新生成的方法中调用所述驱动类中更换了方法名的原方法;修改方法的返回值,将获取的数据库连接对象修改为代理连接对象;在所述原方法的连接对象、通过所述连接对象获取的用于执行SQL的对象和执行结果集对象中添加监控代码,生成相应的代理对象,以便通过代理对象实现SQL执行的监控。
优选的,所述方法还包括:在虚拟机装载获取数据库连接的驱动类之前,读取监控配置文件,当所述监控配置文件指示执行监控时,将所述驱动类修改为代理驱动类。
优选的,当对SQL数据库的连接或者事务的开启关闭进行监控时,所述驱动类的连接对象为Connection。
一种监控SQL数据库的装置,包括:方法名更换单元,用于当虚拟机装载用于获取数据库连接的驱动类时,更换所述驱动类中原方法的方法名;生成单元,用于重新生成与所述驱动类中的原方法名相同的方法,并在重新生成的方法中调用所述驱动类中更换了方法名的原方法;添加单元,用于在所述原方法的连接对象、通过所述连接对象获取的用于执行SQL的对象和执行结果集对象中添加监控代码,生成相应的代理对象,以便通过代理对象实现SQL执行的监控。
优选的,所述装置还包括:读取单元,用于在虚拟机状态执行SQL数据库操作的驱动类之前,读取监控配置文件,当所述监控配置文件指示执行监控时,将所述驱动类修改为代理驱动类。
优选的,当对SQL数据库的连接或者事务的开启关闭进行监控时,所述驱动类的连接对象为Connection。
由上述实施例可以看出,与现有技术不同,本申请实施例在业务应用执行的过程中,动态修改数据库操作的驱动类,并对数据库访问相关类进行代理,实现对数据库SQL执行的监控。因此,具有以下优点:
本申请实施例在业务应用执行的过程中,能够在运行期通过字节码注入方式修改应用程序驱动类,没有采用反射方式,提高了代理类在进行监控时的执行效率。可以在真实的业务系统网络环境下对SQL数据库的性能进行监控,准确反映系统的性能。
在不更改已有的业务代码的基础上实现监控,完成监控程序与业务程序的解耦,不仅减少了监控过程对已有的系统的影响,降低了系统风险,而且也便于维护业务程序,无需修改业务系统的驱动程序包。
附图说明
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京中电普华信息技术有限公司,未经北京中电普华信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110045271.5/2.html,转载请声明来源钻瓜专利网。