代理服务器、包含其的数据库执行信息的获取系统和获取方法转让专利

申请号 : CN201310698219.9

文献号 : CN104731780B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 纪婷琪佘敏吉惠冷合礼王旭政张涛王森赵晨

申请人 : 青岛海尔空调器有限总公司海尔集团公司

摘要 :

本发明涉及一种代理服务器、包含其的数据库执行信息的获取系统和获取方法。其中,数据库执行信息的获取系统包括代理服务器、至少一台数据源服务器、以及至少一台应用服务器。代理服务器接收应用服务器发送的数据库执行指令,数据库执行指令配置的链接地址为数据源服务器链接地址;代理服务器创建代理数据源,在代理数据源中配置数据源服务器链接地址,将数据库执行指令中的链接地址修改为代理数据源的地址、并发送给数据源链接地址指向的数据源服务器;代理服务器还基于代理数据源记录数据库执行指令的执行信息。采用本发明的代理服务器、包含其的数据库执行信息的获取系统和获取方法,可以监控SQL语句的执行效率以及执行参数。

权利要求 :

1.一种数据库执行信息的获取系统,其特征在于,包括代理服务器、分别与代理服务器通信连接的至少一台数据源服务器、以及分别与代理服务器通信连接的至少一台应用服务器;

所述代理服务器用于接收所述应用服务器发送的数据库执行指令,所述数据库执行指令配置的链接地址为数据源服务器链接地址;

所述代理服务器用于创建代理数据源,在所述代理数据源中配置所述数据源服务器链接地址,将所述数据库执行指令中的链接地址修改为所述代理数据源的地址、并发送给所述数据源服务器链接地址指向的数据源服务器;

所述代理服务器还用于基于所述代理数据源记录所述数据库执行指令的执行信息;

所述数据库执行信息的获取系统还包括与所述代理服务器通信连接的存储模块;

所述代理服务器通过独立的异步调用线程来将数据源查询指令和数据源语句的执行信息保存至存储模块。

2.根据权利要求1所述的数据库执行信息的获取系统,其特征在于:所述代理服务器在收到每条所述数据源查询指令和所述数据源语句的执行信息后,将所述数据源查询指令和所述数据源语句的执行信息保存至所述存储模块;

或者,

所述代理服务器在收到预定数量的所述数据源查询指令和所述数据源语句的执行信息后,一次性将预定数量的所述数据源查询指令和所述数据源语句的执行信息保存至所述存储模块。

3.根据权利要求1或2所述的数据库执行信息的获取系统,其特征在于:所述执行信息包括执行所述数据源查询指令的执行时间、执行参数、所述数据源查询指令本身、所述数据源查询指令的类型、执行结束时间和异常信息的一种或多种。

4.根据权利要求1或2所述的数据库执行信息的获取系统,其特征在于:所述代理数据源包括数据库链接对象、SQL语句对象和存储过程语句对象。

5.一种代理服务器,其特征在于,包括:

接收模块,用于接收应用服务器发送的数据库执行指令,所述数据库执行指令配置的链接地址为数据源服务器链接地址;

创建模块,用于创建代理数据源,在所述代理数据源中配置所述数据源服务器链接地址,将所述数据库执行指令中的链接地址修改为所述代理数据源的地址、并发送给所述数据源服务器链接地址指向的数据源服务器;

记录模块,用于基于所述代理数据源记录所述数据库执行指令的执行信息;

所述记录模块通过独立的异步调用线程来将数据源查询指令和数据源语句的执行信息保存至外部的存储模块。

6.根据权利要求5所述的代理服务器,其特征在于:所述记录模块用于在收到每条所述数据源查询指令和所述数据源语句的执行信息后,将所述数据源查询指令和所述数据源语句的执行信息保存至所述存储模块;

或者,

所述记录模块用于在收到预定数量的所述数据源查询指令和所述数据源语句的执行信息后,一次性将预定数量的所述数据源查询指令和所述数据源语句的执行信息、保存至所述存储模块。

7.根据权利要求5或6所述的代理服务器,其特征在于:所述执行信息包括执行所述数据源查询指令的执行时间、执行参数、所述数据源查询指令本身、所述数据源查询指令的类型、执行结束时间和异常信息的一种或多种。

8.根据权利要求7所述的代理服务器,其特征在于:所述代理数据源包括数据库链接对象、SQL语句对象和存储过程语句对象。

9.一种数据库执行信息的获取方法,其特征在于,包括:代理服务器接收应用服务器发送的数据库执行指令,所述数据库执行指令配置的链接地址为数据源服务器链接地址;

所述代理服务器创建代理数据源,在所述代理数据源中配置所述数据源服务器链接地址,将所述数据库执行指令中的链接地址修改为所述代理数据源的地址、并发送给所述数据源服务器链接地址指向的数据源服务器;

所述代理服务器基于所述代理数据源记录所述数据库执行指令的执行信息;

所述“所述代理服务器基于所述代理数据源记录所述数据库执行指令的执行信息”具体包括:代理服务器通过独立的异步调用线程来将所述数据源查询指令和所述数据源语句的执行信息保存至存储模块。

10.根据权利要求9所述的数据库执行信息的获取方法,其特征在于:代理服务器在收到每条所述数据源查询指令和所述数据源语句的执行信息后,将所述数据源查询指令和所述数据源语句的执行信息、保存至存储模块;

或者,

代理服务器在收到预定数量的所述数据源查询指令和所述数据源语句的执行信息后,一次性将预定数量的所述数据源查询指令和所述数据源语句的执行信息保存至存储模块。

11.根据权利要求9或10所述的数据库执行信息的获取方法,其特征在于:所述执行信息包括执行所述数据源查询指令的执行时间、执行参数、所述数据源查询指令本身、所述数据源查询指令的类型、执行结束时间和异常信息的一种或多种。

12.根据权利要求9或10所述的数据库执行信息的获取方法,其特征在于:所述代理数据源包括数据库链接对象、SQL语句对象和存储过程语句对象。

说明书 :

代理服务器、包含其的数据库执行信息的获取系统和获取

方法

技术领域

[0001] 本发明涉及一种数据库查询技术,特别是一种代理服务器、包含其的数据库执行信息的获取系统和获取方法。

背景技术

[0002] 业务系统大都需要与数据库进行交互,保存数据或查询结果,这些操作底层都是通过数据库的结构化查询语言(Structured Query Language,SQL)语句来完成的。
[0003] 随着系统业务的复杂性和数据量的增大,SQL语句的执行效率越来越成为系统性能的瓶颈,如何能定位系统中执行过的SQL语句的执行效率以及执行时候的上下文信息(即参数)成为了亟待解决的问题。
[0004] 部分数据库提供了服务器端的监控工具来查看这些SQL,但不具有通用性,如oracle后台提供工具可以查看,但是到myql或其他数据库时则不能实现查看。

发明内容

[0005] 在下文中给出关于本发明的简要概述,以便提供关于本发明的某些方面的基本理解。应当理解,这个概述并不是关于本发明的穷举性概述。它并不是意图确定本发明的关键或重要部分,也不是意图限定本发明的范围。其目的仅仅是以简化的形式给出某些概念,以此作为稍后论述的更详细描述的前序。
[0006] 本发明的一个主要目的在于提供一种代理服务器、包含其的数据库执行信息的获取系统和获取方法,其可以封装获取SQL和执行参数信息的组件,进而封装对底层具体数据库产品和上层开发人员调用的复杂性从而监控SQL语句的执行效率以及执行参数。
[0007] 根据本发明的一方面,一种数据库执行信息的获取系统,包括代理服务器、分别与代理服务器通信连接的至少一台数据源服务器、以及分别与代理服务器通信连接的至少一台应用服务器;
[0008] 所述代理服务器用于接收所述应用服务器发送的数据库执行指令,所述数据库执行指令配置的链接地址为数据源服务器链接地址;
[0009] 所述代理服务器用于创建代理数据源,在所述代理数据源中配置所述数据源服务器链接地址,将所述数据库执行指令中的链接地址修改为所述代理数据源的地址、并发送给所述数据源链接地址指向的数据源服务器;
[0010] 所述代理服务器还用于基于所述代理数据源记录所述数据库执行指令的执行信息。
[0011] 根据本发明的第二方面,一种代理服务器,包括:
[0012] 接收模块,用于接收应用服务器发送的数据库执行指令,所述数据库执行指令配置的链接地址为数据源服务器链接地址;
[0013] 创建模块,用于创建代理数据源,在所述代理数据源中配置所述数据源服务器链接地址,将所述数据库执行指令中的链接地址修改为所述代理数据源的地址、并发送给所述数据源链接地址指向的数据源服务器;
[0014] 记录模块,用于基于所述代理数据源记录所述数据库执行指令的执行信息。
[0015] 根据本发明的第三方面,一种数据库执行信息的获取方法,包括:
[0016] 代理服务器接收应用服务器发送的数据库执行指令,所述数据库执行指令配置的链接地址为数据源服务器链接地址;
[0017] 所述代理服务器创建代理数据源,在所述代理数据源中配置所述数据源服务器链接地址,将所述数据库执行指令中的链接地址修改为所述代理数据源的地址、并发送给所述数据源链接地址指向的数据源服务器;
[0018] 所述代理服务器基于所述代理数据源记录所述数据库执行指令的执行信息。
[0019] 采用本发明的数据库执行信息的获取系统和获取方法,可以监控SQL语句的执行效率以及执行参数。

附图说明

[0020] 参照下面结合附图对本发明实施例的说明,会更加容易地理解本发明的以上和其它目的、特点和优点。附图中的部件只是为了示出本发明的原理。在附图中,相同的或类似的技术特征或部件将采用相同或类似的附图标记来表示。
[0021] 图1为本发明的数据库执行信息的获取系统的一种实施方式的结构图;
[0022] 图2为本发明的代理服务器一种实施方式的结构图;
[0023] 图3为本发明的数据库执行信息的获取方法的一种实施方式的流程图。

具体实施方式

[0024] 下面参照附图来说明本发明的实施例。在本发明的一个附图或一种实施方式中描述的元素和特征可以与一个或更多个其它附图或实施方式中示出的元素和特征相结合。应当注意,为了清楚的目的,附图和说明中省略了与本发明无关的、本领域普通技术人员已知的部件和处理的表示和描述。
[0025] 参见图1所示,为本发明的数据库执行信息的获取系统的一种实施方式的结构图。
[0026] 在本实施方式中,数据源语句执行信息的获取系统包括代理服务器10、分别与代理服务器10通信连接的至少一台数据源服务器20、以及分别与代理服务器通信连接的至少一台应用服务器30。
[0027] 代理服务器10用于接收应用服务器30发送的数据库执行指令,数据库执行指令配置的链接地址为数据源服务器20链接地址。
[0028] 代理服务器10还用于创建代理数据源,在代理数据源中配置数据源服务器20链接地址,将数据库执行指令中的链接地址修改为代理数据源的地址、并发送给数据源链接地址指向的数据源服务器20。代理数据源例如可以包括数据库链接对象、SQL语句对象和存储过程语句对象等。
[0029] 代理服务器10还用于基于代理数据源记录数据库执行指令的执行信息。
[0030] 作为一种实施方式,数据源语句执行信息的获取系统还可以包括与代理服务器10通信连接的存储模块40。
[0031] 代理服务器10将数据源查询指令和数据源语句的执行信息保存至存储模块40。
[0032] 执行信息例如可以包括执行数据源查询指令的执行时间、执行参数、数据源查询指令本身、数据源查询指令的类型、执行结束时间和异常信息的一种或多种。
[0033] 为了提高存储效率,作为一种实施方式,代理服务器10可以通过独立的异步调用线程来将数据源查询指令和数据源语句的执行信息保存至存储模块40。
[0034] 作为一种实施方式,代理服务器10可以在收到每条数据源查询指令和数据源语句的执行信息后,将数据源查询指令和数据源语句的执行信息保存至存储模块40。
[0035] 或者,
[0036] 代理服务器10还可以在收到预定数量的数据源查询指令和数据源语句的执行信息后,一次性将预定数量的数据源查询指令和数据源语句的执行信息保存至存储模块40。
[0037] 例如,代理服务器10在接收到应用服务器30发送的数据源查询指令后,应用服务器30发出的所有SQL语句链接执行都经过该代理服务器10来执行。代理服务器10还负责创建与SQL执行相关用到的其他对象,如数据库链接对象Connection、SQL语句对象Statement和PreparedStatement对象,存储过程语句CallableStatement对象等。
[0038] 在通过代理服务器10获取这几个对象时,都会创建对应对象的代理对象,在这些代理对象内要运行SQL语句时,会记录执行的开始时间,传入的参数,执行语句的类型(普通SQL语句或是预处理SQL语句)执行结束时间和执行过程中产生的异常信息中的一种或多种。
[0039] 参见图2所示,为本发明的代理服务器的一种实施方式的结构图。
[0040] 在本实施方式中,代理服务器10包括接收模块11、创建模块12和记录模块13。
[0041] 接收模块11用于接收应用服务器30发送的数据库执行指令,数据库执行指令配置的链接地址为数据源服务器链接地址。
[0042] 创建模块12用于创建代理数据源,在代理数据源中配置数据源服务器链接地址,将数据库执行指令中的链接地址修改为代理数据源的地址、并发送给数据源链接地址指向的数据源服务器20。代理数据源例如可以包括数据库链接对象、SQL语句对象和存储过程语句对象。
[0043] 记录模块13用于基于代理数据源记录数据库执行指令的执行信息。
[0044] 执行信息例如可以包括数据源查询指令的执行时间、执行参数、所述数据源查询指令本身、数据源查询指令的类型、执行结束时间和异常信息的一种或多种。
[0045] 作为一种实施方式,记录模块13用于将数据源查询指令和数据源语句的执行信息保存至外部的存储模块40。
[0046] 作为一种实施方式,记录模块13通过独立的异步调用线程来将所述数据源查询指令和所述数据源语句的执行信息保存至外部的存储模块。
[0047] 记录模块13还用于在收到每条数据源查询指令和数据源语句的执行信息后,将数据源查询指令和数据源语句的执行信息保存至存储模块40;
[0048] 或者,
[0049] 记录模块13用于在收到预定数量的数据源查询指令和数据源语句的执行信息后,一次性将预定数量的数据源查询指令和数据源语句的执行信息保存至存储模块40。
[0050] 参见图3所示,为本发明的数据库执行信息的获取方法的一种实施方式的流程图。
[0051] 在该实施方式中,数据库执行信息的获取方法包括:
[0052] S10:代理服务器10接收应用服务器30发送的数据库执行指令,数据库执行指令配置的链接地址为数据源服务器链接地址。
[0053] S20:代理服务器创建代理数据源,在代理数据源中配置数据源服务器链接地址,将数据库执行指令中的链接地址修改为代理数据源的地址、并发送给数据源链接地址指向的数据源服务器20;代理数据源例如可以包括数据库链接对象、SQL语句对象和存储过程语句对象。
[0054] S30:代理服务器10基于代理数据源记录数据库执行指令的执行信息。
[0055] 执行信息例如可以包括执行数据源查询指令的执行时间、执行参数、所述数据源查询指令本身、数据源查询指令的类型、执行结束时间和异常信息的一种或多种。
[0056] 作为一种实施方式,步骤S30可以具体包括:
[0057] 代理服务器10将数据源查询指令和数据源语句的执行信息保存至存储模块40。
[0058] 作为一种实施方式,步骤S30还可以包括:
[0059] 代理服务器10通过独立的异步调用线程来将数据源查询指令和数据源语句的执行信息保存至存储模块40。
[0060] 作为一种实施方式,在步骤S30中,
[0061] 代理服务器可以10在收到每条数据源查询指令和数据源语句的执行信息后,将数据源查询指令和数据源语句的执行信息保存至存储模块40;
[0062] 或者,
[0063] 代理服务器10还可以在收到预定数量的数据源查询指令和数据源语句的执行信息后,一次性将预定数量的数据源查询指令和数据源语句的执行信息保存至存储模块40。
[0064] 采用本发明的代理服务器、包含其的数据库执行信息的获取系统和获取方法,对开发人员完全透明。技术人员完全感觉不到代理服务器和代理对象的存在,原有的业务程序不需要做任何改动。
[0065] 此外,采用本发明的数据源语句执行信息的获取系统和获取方法可以满足所有数据源SQL的监控。无论使用的是c3p0,dbcp,weblogic的数据源还是其他,只要这些数据源是标准的DataSource接口实现,都可以无缝的接入到代理服务器上来。
[0066] 第三,本发明的代理服务器10对数据源查询指令(即SQL语句)的拦截不影响正常业务操作。
[0067] 第四,通过异步方式将数据保存到第三方介质(存储模块)中,同时支持批量存储,提升了响应速度。
[0068] 第五,实现了系统底层SQL执行透明化。通过记录数据源语句的执行信息(SQL执行历史记录),可以明细获取SQL执行的瓶颈及最耗时的地方达到有针对性优化的效果。
[0069] 上面对本发明的一些实施方式进行了详细的描述。如本领域的普通技术人员所能理解的,本发明的方法和装置的全部或者任何步骤或者部件,可以在任何计算设备(包括处理器、存储介质等)或者计算设备的网络中,以硬件、固件、软件或者它们的组合加以实现,这是本领域普通技术人员在了解本发明的内容的情况下运用他们的基本编程技能就能实现的,因此不需在此具体说明。
[0070] 在本发明的设备和方法中,显然,各部件或各步骤是可以分解、组合和/或分解后重新组合的。这些分解和/或重新组合应视为本发明的等效方案。还需要指出的是,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行。某些步骤可以并行或彼此独立地执行。同时,在上面对本发明具体实施例的描述中,针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更多个其它实施方式中使用,与其它实施方式中的特征相组合,或替代其它实施方式中的特征。
[0071] 应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。
[0072] 虽然已经详细说明了本发明及其优点,但是应当理解在不超出由所附的权利要求所限定的本发明的精神和范围的情况下可以进行各种改变、替代和变换。而且,本发明的范围不仅限于说明书所描述的过程、设备、手段、方法和步骤的具体实施例。本领域内的普通技术人员从本发明的公开内容将容易理解,根据本发明可以使用执行与在此所述的相应实施例基本相同的功能或者获得与其基本相同的结果的、现有和将来要被开发的过程、设备、手段、方法或者步骤。因此,所附的权利要求旨在在它们的范围内包括这样的过程、设备、手段、方法或者步骤。