监视存储过程的执行的制作方法

文档序号:6496714阅读:220来源:国知局
监视存储过程的执行的制作方法
【专利摘要】提供了一种用于监视在数据库管理系统中执行的存储过程的方法。所述方法可以包括-针对所述存储过程之一提供以下事件数据以及所述存储过程的标识:指示所述存储过程的执行开始的第一时间;指示所述存储过程的所述执行结束的第二时间;被分配给作为所述存储过程的一部分执行的SQL语句的至少一个SQL语句标识符;以及针对每个SQL语句标识符,指示相关SQL语句作为所述存储过程的一部分在所述第一时间与所述第二时间之间执行的执行次数的计数器。此外,所述方法可以包括通过所述数据库管理系统提供定期的数据库监视信息,包括可通过所述SQL语句标识符识别的已执行SQL语句的参数值。此外,可将所述值与所述执行次数相关联。
【专利说明】监视存储过程的执行
【技术领域】
[0001]本发明一般地涉及用于监视在数据库管理系统(DBMS)中执行的存储过程的方法,以及涉及存储过程性能监视系统。
[0002]本发明进一步地涉及数据库系统、计算机系统、数据处理程序,以及计算机程序产品O
【背景技术】
[0003]今天,数据库系统,尤其是关系数据库系统所存储和处理的数据量以加速度增长。由于数据量不断增长,访问数据库中存储的数据所需的时间也在持续增加。这给数据库管理员带来巨大压力,迫使其优化数据库系统的功能和性能。
[0004]现在,许多数据库管理系统均配备有相关的优化和监视工具。数据库管理系统的目的是组织数据并允许快速、便捷地访问检索已存储的数据。存在各种类型的数据库管理系统,例如关系数据库管理系统、分层数据库管理系统以及网络数据库管理系统。典型的数据库访问语句可以包括读取、写入、更新和删除语句。
[0005]但是,监视和跟踪数据库的内部功能需要额外的计算能力,这可能对数据库管理系统的整体性能产生负面影响。众所周知的用于测量数据库管理系统性能的技术涉及快照数据。快照数据传递有关数据库内部功能的连续信息。例如,存储数据的时间、查找和读取数据所需的时间和/或删除数据的时间被连续测量。一般而言,快照数据记录代表了有关数据库管理系统的内部功能和实际状态的大量数据。其它数据与数据库中的事件相关,例如,有关已开始和已完成的SQL语句或具有相似性质的其它事件的通知器。警告也可以与特定事件相关。
[0006]另一方面,存储过程变得非常流行,以便从应用程序卸载逻辑操作。同时,这样的应用逻辑现在可在存储过程中作为数据库(远为更接近数据)的一部分执行。通常,在存储过程中执行循环。一般而言,只有完整的存储过程的执行时间可作为全局快照和事件数据被测量。为了优化数据库的功能和性能,可能需要具有有关存储过程内的SQL语句执行的远为更细粒度的信息。另一方面,这种密切监视相当于持续测量数据库的性能数据的额外开销。
[0007]查询语言通常用于访问数据和数据库管理系统。数据库应用程序可使用查询语言编写以访问数据库中存储的数据。例如,结构化查询语言(SQL)是一种非常有名的查询语言。数据库应用程序可结合使用SQL以及C0B0L、PL/1、JAVA和C之类的其它语言进行编写以访问数据库中存储的数据。
[0008]可使用被称为“存储过程”(SP)的模块访问一个或多个数据库管理系统中的数据。存储过程可以是程序或脚本文件,并且在物理上存储在数据库管理系统中,一般存储在可在其上访问存储过程的数据库管理系统中。数据库应用程序可调用(invoke或call)—个或多个存储过程。存储过程一般可包括一个或多个数据访问语句(SQL语句),或对其它存储过程的调用以发出数据请求,以便获取一个或多个数据库中的数据(嵌套式存储过程)。例如,存储过程可包括一个或多个SQL语句以从数据库管理系统检索数据。存储过程可与多个数据库应用程序共享。文献US2007/0282837A1公开了一种有关分布式环境中存储过程的性能测量的方法。此方法公开了对执行一个或多个存储过程的一个或多个组件的识别。存储过程分别具有存储过程标识符。从数据库管理系统收集与至少一个或多个存储过程关联的数据库数据。此文献进一步公开了特定数据基于存储过程标识符中的特定一个,在与存储过程标识符中的特定一个关联的至少一个执行开始时间、在至少一个执行结束时间,以及在至少一样本时间中相关联。
[0009]另一文献US7809694B2公开了分析来自关系数据库的性能数据以发现性能较差的SQL语句,包括创建在关系数据库管理系统中执行的查询语句的性能数据事件记录以及压缩(condense)事件记录中的性能数据。可针对每个压缩的事件记录生成性能摘要。性能摘要然后可基于性能特征进行分析以识别完全执行的(purely performing) SQL语句。
[0010]目前对存储过程的监视支持可能涉及两个主要问题领域。首先,对于多数数据库管理员,从监视角度而言,存储过程可能是“黑匣子”。管理员无法获知存储过程“内部”正在发生的事情。其次,现在为了获取一定的细节级别,数据库管理员可能需要采用“非常昂贵”的跟踪(tracing),其具有巨大的CPU开销。作为进一步的步骤,可能需要手动匹配所收集的例如有关在存储过程中执行的语句的细节信息。此过程的成本也会非常高,并且耗时、易于出错。此外,事件和快照数据收集可能没有考虑到在存储过程的应用逻辑中花费的时间。
[0011]这样,可能需要一种用于数据库管理系统中的存储过程的改进的性能管理方法,其没有因为收集存储过程内的额外性能数据而导致额外的性能负担。

【发明内容】

[0012]可通过根据独立权利要求的用于监视数据库管理系统中的存储过程的方法、存储过程性能监视系统、数据库系统、计算机系统、数据处理程序以及计算机程序产品满足上述需求。
[0013]在一个实施例中,可提供一种用于监视在关系数据库管理系统中执行的存储过程的方法。所述方法可包括针对所述存储过程之一提供以下事件数据以及所述存储过程的标识:指示所述存储过程的执行开始的第一时间;指示所述存储过程的所述执行结束的第二时间;被分配给作为所述存储过程的一部分执行的SQL语句的至少一个SQL语句标识符;以及针对每个SQL语句标识符,指示相关SQL语句作为所述存储过程的一部分在所述第一时间与所述第二时间之间执行的频率的执行次数计数器。此外,此方法可包括通过所述数据库管理系统提供定期的数据库监视信息,尤其是全局快照数据,其中所述定期的数据库监视信息包括可通过所述SQL语句标识符识别的已执行SQL语句的参数值。此外,此方法可包括将可通过所述SQL语句标识符识别的已执行SQL语句的参数值与指示相关SQL语句作为所述存储过程的一部分在所述第一时间与所述第二时间之间执行的频率的执行次数计数器相关联。这可导致可通过所述存储过程的所述标识识别的所述存储过程的监视数据。
[0014]根据另一实施例,可提供一种用于监视在数据库管理系统尤其是关系数据库管理系统中执行的存储过程的系统。所述监视系统包括第一提供单元,其适合于针对所述存储过程之一提供以下事件数据以及所述存储过程的标识:指示所述存储过程的执行开始的第一时间;指示所述存储过程的所述执行结束的第二时间;被分配给作为所述存储过程的一部分执行的SQL语句的至少一个SQL语句标识符;以及针对每个SQL语句标识符,指示相关SQL语句作为所述存储过程的一部分在所述第一时间与所述第二时间之间执行的执行次数的计数器。该监视系统可包括第二提供单元,其适合于通过所述数据库管理系统提供定期的数据库监视信息,其中所述定期的数据库监视信息包括可通过所述SQL语句标识符识别的已执行SQL语句的参数值。此外,该监视系统可包括相关联单元,其适合于将可通过所述SQL语句标识符识别的已执行SQL语句的参数值与指示相关SQL语句作为所述存储过程的一部分在所述第一时间与所述第二时间之间执行的执行次数的计数器相关联,从而导致可通过所述存储过程的所述标识识别的所述存储过程的监视数据。
[0015]需要注意,一般而言,定期的数据库监视信息,其称为快照数据和/或事件数据,可能涉及所有已在具有同一 SQL语句标识符的存储过程的内部和外部执行的语句。另需注意,术语“将值相关联”尤其可以意味着构建可用值的平均值。
[0016]具体说明
[0017]在本申请的上下文中,遵循以下约定:
[0018]数据库管理系统一数据库管理系统可表示任何适合于存储和访问数据的数据库管理系统。它可以是其中以行和列组织数据的关系数据库管理系统、分层数据库管理系统或网络数据库管理系统。
[0019]存储过程——存储过程可表示用户编写的可实现业务逻辑并且可被应用程序使用例如“CALL”语句调用的程序。一般而言,存储过程可作为数据库管理系统或数据库引擎的一部分被编译和存储。在通过使用模块化改进应用开发之外,存储过程还可具有提高应用安全性的优点,因为应用逻辑可在数据库服务器的控制下运行,并且可以支持应用集成解决方案。此外,它们可被用于强制执行业务逻辑。换言之,术语“存储过程”可表示可被访问数据库系统(尤其是关系数据库系统)的软件应用使用的子例程。存储过程实际可存储在与数据库管理系统相关的数据库数据词典中。存储过程可用于加强和集中最初在软件应用中实现的应用逻辑。可将需要执行多个SQL语句的广泛或复杂处理移入存储过程,并且所有软件应用可调用这些程序。人们可通过从一个存储过程中执行另一存储过程来使用嵌套式存储过程。
[0020]存储过程标识——特定数据库管理系统中的特定存储过程可以具有与特定存储过程相关的唯一标识符。与特定存储过程相关的所有活动因此可使用存储过程标识进行跟踪。该标识符可以是唯一的编号。
[0021]第一时间一术语“第一时间”可表示具有特定时间戳的第一时间实例。第一时间可表示存储过程的开始。每当存储过程可被调用时,便可记录第一时间以供将来分析。
[0022]第二时间一术语“第二时间”可表示具有另一特定时间戳的第二时间实例。第二时间可表示存储过程的结束。每当存储过程可被终止时,便可记录第二时间以供将来分析。
[0023]定期的数据库监视信息——一般而言,数据库管理系统定期存储有关其内部功能的统计数据。语句的执行时间只是一个例子。其它数据可包括页面缺失以及下面提及的很多其它统计数据。定期的数据库监视信息还可包括同步收集的快照数据和/或异步收集的事件数据。[0024]参数——术语“参数”可表示一个数据库性能统计信息的特定度量。每个参数可包含特定的值。这些值可随时间发生变化。
[0025]SQL语句一术语“SQL语句”可表示数据库管理系统的语句。可将其理解为用于在关系数据库管理系统中管理数据的标准“结构化查询语言”语句。现在已知有多种方言:SQL-86、SQL-89、SQL-92、SQL: 1999、SQL:2003 或 SQL: 2008。SQL 语言可以具有本领域的技术人员熟知的预定的语言构建集。
[0026]SQL语句标识符——特定数据库管理系统中的特定SQL语句可以具有与特定SQL语句相关的唯一标识符。与特定SQL语句相关的所有活动因此可通过SQL语句的标识跟踪。该标识符可以是唯一的编号。
[0027]上述用于监视在数据库管理系统中执行的存储过程的方法可提供若干优点。
[0028]本发明的方法和监视系统可允许与已知的技术相比更优雅得多的存储过程监视,从而能实现更佳的数据库管理系统性能调节。可实现该目的,而没有根据现有技术紧密监视在存储过程内执行的语句的负担。每个执行语句不必收集被称为快照数据的、定期的数据库监视信息。而是,为了监视存储过程的“内部操作”,可仅收集非常有限的数据量。不是去收集存储过程内每个执行语句的全局快照数据,而是可使用在数据库管理系统中毕竟可用的信息(特定SQL语句的执行时间)来监视存储过程。
[0029]在此方法的一个实施例中,此方法可以额外地包括使用至少一个参数的值计算至少一个参数的平均参数值。如上所述,这可允许监视存储过程,而无需收集作为存储过程的一部分执行的每个SQL语句的快照数据。所述参数之一可以是特定SQL语句的执行时间。在抽象形式中,这样的SQL语句可以是“READ ACCOUNT-BALANCE OF PERS0N_A”。存储过程内部迎外部的所有这些读取语句可用于生成语句的平均执行时间。语句可通过例如标识符编号“129”来识别。需要注意,此类性能数据毕竟可针对每个SQL语句从DBMS收集。这样,无需执行额外的数据收集便可生成参数的平均值。
[0030]在此方法的另一实施例中,所述相关联可对应于用至少一个参数的平均参数值乘以标识的SQL语句的执行次数,其中表示具有平均参数值的SQL语句的SQL语句标识符等于与执行次数相关的SQL语句标识符。通过这样做,在计算方面“便宜的”方法可用于测量存储过程内的性能。此乘法运算可针对具有特定SQL语句标识符(其作为存储过程的一部分被执行)的每个SQL语句类型、并且针对所有允许计算平均值的可用参数(B卩,例如不是字符串变量)而执行。通过将存储过程开始与结束之间的所有这些相乘数据求和,可提供非常好的详细的存储过程内部操作性能数据。
[0031]在此方法的又一实施例中,定期的数据库监视信息可仅包括与已执行SQL语句相关的参数值,所述已执行SQL语句可通过已作为存储过程的一部分执行的那些SQL语句的SQL语句标识符识别。该实施例可被称为“精确方法”。可使用筛选的快照数据,其中筛选过程仅提供存储过程内已执行SQL语句的参数值。不会收集其它可代表大多数全局快照数据的参数。这样,不会出现由用于存储过程内的性能管理操作的大型全局快照文件所产生的开销。
[0032]在此方法的再一实施例中,已执行SQL语句的每个参数为以下各项构成的组中的至少一项:执行次数、已检查的行数、已处理的行数、索引扫描数、表空间扫描数、缓冲写入数、累积数据库时间、累积处理器时间(CPU时间)、累积锁定时间、以及用于同步I/O、或用于同步执行单元切换、或用于全局锁、或用于另一线程完成的读取活动、或用于另一线程完成的写入活动、或用于闩锁(latch)、或用于页闩锁、或用于放弃锁(drain lock)、或用于针对待释放声明(claim)的放弃锁的累积等待时间、或者用于日志写入器的累积等待时间。其它选项可包括获取页(getpages)数量、同步缓冲区读取数量、数据库排序操作数量、已创建的并列组数量、由于超过限制导致不使用记录ID列表的次数,或由于没有足够内存保存列表导致不使用记录ID列表的次数。
[0033]在此方法的又一实施例中,用于存储定期的数据库监视信息的第一缓冲区和用于存储事件数据的第二缓冲区相互独立地进行操作。这尤其意味着可使用两个不同的缓冲区/存储区域保存快照数据和事件数据。从实现的角度来看,这意味着与快照数据相关的数据库逻辑可保持不变,而只是必须将事件数据收集添加到数据库管理系统的内部逻辑以执行本发明的方法。
[0034]在此方法的又一实施例中,可使用组合的缓冲区存储定期的数据库监视信息和事件数据。此实现可具有将快照数据和事件数据存储在一个数据库管理缓冲区从而可加速对这些数据的访问的优点。
[0035]在此方法的另一优选实施例中,此方法可额外地包括提供用于使监视存储过程的数据可用于运行数据库管理系统的数据库服务器以外的系统的第一接口。具体而言,这可意味着用于生成性能管理数据的计算可在服务器上执行,并且只有存储过程性能数据的视觉化可在包括图形用户界面的客户端系统上执行。
[0036]在此方法的另一优选实施例中,此方法可额外地包括用于使所述事件数据和所述定期的数据库监视信息可用于运行所述数据库管理系统的所述数据库服务器以外的系统的第二接口。具体而言,这可意味着所有计算可以在与运行数据库管理系统的系统分离的客户端系统上执行。在这种情况下,有关存储过程性能数据的所有计算可作为图形用户环境的一部分执行。
[0037]此外,计算机或计算机系统可包括用于监视在数据库管理系统中执行的存储过程的监视系统。该监视系统还可作为数据库系统的一个组件实现,该数据库系统可以是计算机系统的一部分。
[0038]应该注意,实施例可以采取完全硬件实施例、完全软件实施例或包含硬件和软件元素两者的实施例的形式。在优选实施例中,本发明在软件中实现,所述软件包括但不限于固件、驻留软件和微代码。
[0039]在另一实施例中,提供了用于在数据处理系统中执行的数据处理程序,该数据处理程序包括当该程序在数据处理系统上运行时,用于执行上述方法的软件代码部分。该数据处理系统可以是计算机或计算机系统。
[0040]此外,实施例可以采取可从计算机可用或计算机可读介质访问的计算机程序产品的形式,所述计算机可用或计算机可读介质提供了可以被计算机或任何指令执行系统使用或与计算机或任何指令执行系统结合的程序代码。出于此描述的目的,计算机可用或计算机可读介质可以是任何这样的装置,其包含用于存储、传送、传播或传输由指令执行系统、装置或设备使用或与所述指令执行系统、装置或设备结合使用的程序的装置。
[0041]所述介质可以是电、磁、光、电磁、红外线或半导体系统或传播介质。计算机可读介质的例子可包括半导体或固态存储器、磁带、可移动计算机软盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的当前例子包括压缩盘-只读存储器(CD-ROM)、压缩盘-读/写(CR-R/W)、DVD和蓝光光盘。
[0042]应该注意,本发明的实施例已参考不同的主题进行描述。具体而言,某些实施例已参考方法类型权利要求进行描述,而其它实施例已参考装置类型权利要求进行描述。但是,本领域的技术人员可根据上面和下面的描述中理解,除非另有说明,否则除了属于一种主题类型的特征的任何组合之外,与不同主题相关的特征之间——尤其是方法类型权利要求的特征与装置类型权利要求的特征之间一的任何组合均被视为在本文献中公开。
[0043]通过下文描述的实施例示例,上面定义的各方面以及本发明的进一步方面将变得显而易见,这些方面参考实施例示例进行解释,但是本发明并不限于这些实施例示例。
【专利附图】

【附图说明】
[0044]将参考下图,仅借助实例描述本发明的优选实施例:
[0045]图1示出用于监视存储过程的方法的实施例的框图。
[0046]图2示出用于监视存储过程的方法的实施例所需的组件的框图。
[0047]图3示出“精确方法”实施例的流程图的框图。
[0048]图4示出要在数据库管理系统的后端系统中执行的方法部分的实施例的流程图的框图。
[0049]图5示出要在数据库管理系统的处理端执行的流程图的框图实例,该流程图用于执行用于监视存储过程的方法。
[0050]图6示出用于监视存储过程的监视系统的实施例的框图。
[0051]图7示出根据一个实施例包括监视系统的计算机系统的框图。
【具体实施方式】
[0052]在下文中,将给出附图的详细描述。各图中的所有图示均为示意性的。首先,将描述用于监视存储过程的方法的实施例的框图。之后,将描述用于存储过程的方法和监视系统的实施例。
[0053]图1示出用于监视存储过程的方法的实施例的框图100。此方法可包括针对存储过程之一提供102以下事件数据以及所述存储过程的标识:指示存储过程的执行开始的第一时间;指示存储过程的执行结束的第二时间;被分配给作为存储过程的一部分执行的SQL语句的至少一个SQL语句标识符;以及针对每个SQL语句标识符,指示相关SQL语句作为存储过程的一部分在第一时间与第二时间之间执行的执行次数的计数器。此外,此方法可包括由数据库管理系统提供104定期的数据库监视信息,尤其是全局快照数据,其中定期的数据库监视信息可以包括可通过SQL语句标识符识别的已执行SQL语句的参数值。应该注意,具体而言,特定种类的所有语句(例如,可能已经在存储过程的内部迎外部执行的特定读取语句)可通过唯一的SQL语句标识符识别。
[0054]此外,此方法可包括将可通过SQL语句标识符识别的已执行SQL语句的参数的值(特别是平均值)与作为存储过程的一部分在第一时间与第二时间之间执行的相关SQL语句的执行次数的计数器相关联106。这可导致可通过存储过程的标识识别的存储过程的监视数据。这意味着存储过程的监视数据可根据特定SQL语句的平均执行时间信息推导出。[0055]图2示出用于监视存储过程的方法的实施例所需的组件的框图200。在数据库管理系统202中,可执行存储数据208。存储过程208可在存储过程库210中存储和管理。数据库管理监视数据收集系统可由参考标号204表示。用户界面或系统206可用于将监视结果提供给数据库管理员。应该注意,图2被水平分为两半。上半部分230可表示处理端,而图2下半部分232可表示后端。后端更多地涉及数据的物理存储,而处理端可更多地涉及控制与监视系统相关的信息流。数据库管理数据收集系统204可从数据库202请求218快照数据一即,定期的数据库监视信息。此类快照可被写入212快照数据缓冲区214。数据流箭头216可表示将快照数据从快照数据缓冲区214读入数据库管理监视数据收集系统204。另一方面,数据库管理监视数据收集系统204可请求226上面指定的事件数据。这些事件数据可被写入220事件数据缓冲区222。数据流箭头224可表示将事件数据从数据缓冲区222读入数据库监视数据收集系统204。
[0056]作为示例,来自快照数据缓冲区214的快照数据可以包括可通过特定SQL语句标识符识别的特定SQL语句的执行时间。此类特定SQL语句可以是从数据库读取特定数据,例如,特定日期之间账户内的所有交易。另一方面,存储在事件数据缓冲区222中的事件数据具体可包括存储过程的开始时间、存储过程的结束时间,以及用于计数作为存储过程的一部分执行的特定SQL语句的执行次数的计数器。
[0057]数据库管理监视数据收集单元204还可将快照数据缓冲区的快照数据与来自事件数据缓冲区的事件数据进行组合和/或相关联以进行所需的计算,具体是指执行时间与次数相乘。结果可被发送228到用户界面,具体是指可在其上将监视数据提供给数据库管理员的图形用户界面。
[0058]图3可示出“精确方法”的实施例的流程图的框图。如果启用了存储过程监视,则可以执行根据流程图300的以下指令。在302,可发起从数据库管理系统对于存储过程的“请求事件数据”。接下来,在304,可读取数据库管理系统提供的事件数据。在306,可检查用于该特定存储过程的新事件是否可用。如果答案为“否”,则可在循环中重复此检查。如果答案为“是”,则可以在308检查可存在哪个事件。如果是“开始SP”调用(SP=存储过程),则可以在310发出从数据库管理系统请求筛选的“开始全局快照数据”。之后,执行可返回到循环以检测用于该存储过程的新事件数据。如果事件可以是“结束SP”调用,则可在312发起从数据库管理系统请求最终的筛选的全局快照数据。之后,在316,可读取来自数据库管理系统的有关所跟踪的SQL语句的事件数据。最后,可在318处理用于特定存储过程的事件数据和快照数据。处理种类已在上文进行了描述。
[0059]如果在308检测存在哪类事件期间,结果为需要跟踪的SQL语句,则可以在314存储跟踪信息。之后,执行返回到循环以检测用于特定存储过程的新事件数据是否可用。
[0060]与图3的“精确方法”相比,图4和5涉及“低成本方法”。图4可能涉及可在后端(图2,232)执行的步骤400。如果打开存储过程监视,则可以在402连续收集数据库管理系统提供的事件数据。之后,可以在404检测可能存在哪类事件。如果它是“开始调用”存储过程,则可在406处理“开始存储过程数据”。之后,执行可以返回到步骤402。如果检测404产生结束SP调用可存在的事实,则可以在412检测结束SP调用是否来自“顶部”存储过程。如果在存储过程内调用其它存储过程可被视为“正常的” SQL语句,则所讨论的方法还适用于嵌套式存储过程。这也应该是一实施例中的情况。然后,另外还需要SP标识符,而非SQL语句标识符。在步骤412之后,可在414处理和存储用于存储过程的事件数据。如果在步骤404,结果为必须跟踪SQL语句,则可执行步骤410。在此,所跟踪的存储过程数据可被处理,具体而言,可计数SQL语句的执行频率。在步骤410之后,可以继续从头执行步骤 402。
[0061]图5可以是图4的流程图500的延续,该图示出将在数据库管理系统的处理端执行的流程图的框图,该流程图用于执行用于监视存储过程的方法。图5所示的执行步骤可涉及处理端(图2,230)。首先,可在502检查是否可显示存储过程监视数据。如果答案为“是”,则可以在步骤504请求全局快照数据。此外,在506,可获取用于特定存储过程的存储的事件数据。此外,在步骤508,可使用所跟踪的SQL语句统计数据将所获取的事件数据与全局快照数据相关联。相关联的种类已在上面进行说明。之后,在步骤510,可在用户界面中显示用于该特定存储过程的监视数据。然后,可在步骤512检测是否可分析另一存储过程。如果答案为“是”,则可继续执行步骤506以获取用于该另一存储过程的存储的事件数据。如果没有要分析的下一个存储过程,则可以在步骤514结束这些步骤的执行。
[0062]图6可以示出用于监视存储过程的监视系统的实施例的框图。监视系统600可以包括第一监视单元602,其适合于为存储过程之一提供以下事件数据以及存储过程的标识:指示存储过程的执行开始的第一时间;指示存储过程的执行结束的第二时间;被分配给作为存储过程的一部分执行的SQL语句的至少一个SQL语句标识符;以及针对每个SQL语句标识符,指示相关SQL语句作为存储过程的一部分在第一时间与第二时间之间执行的执行次数的计数器。
[0063]此外,监视系统600可包括第二提供单元604,其适合于通过数据库管理系统提供定期的数据库监视信息,具体是指快照数据。这样,定期的数据库监视信息120可包括通过SQL语句标识符识别的已执行SQL语句的参数值。
[0064]此外,监视系统600可包括相关联单元606,其适合于将可通过SQL语句标识符识别的已执行SQL语句的参数值与作为存储过程的一部分在第一时间与第二时间之间执行的相关SQL语句的执行次数的计数器相关联。这可导致监视可通过存储过程的标识识别的存储过程的数据。
[0065]本发明的实施例实际上可在任何类型的计算机上实现,而不考虑所使用的适合于存储和/或执行程序代码的平台。例如,如图7所示,计算机系统700可包括一个或多个处理器702,其中每个处理器带有一个或多个核,另外还包括关联的存储元件704、内置存储设备706 (例如,硬盘、诸如压缩盘驱动器或数字视频盘(DVD)驱动器的光盘、闪存记忆棒等)、多种当今的计算机典型具有的其它元件和功能(未示出)。存储元件704可包括主存储器,例如在程序代码的实际执行期间采用的随机存取存储器(RAM)、以及提供至少某些程序代码的临时存储以减少必须从长期存储介质或外置大容量存储装置716检索用于执行的代码和/或数据的次数的高速缓冲存储器。计算机700的内部元件可通过具有相应适配器的总线系统718链接在一起。此外,包括监视系统600 (另请参阅图6,600)数据库管理系统720可与系统总线718相连。数据库管理系统还可直接联接到一个或多个硬盘706,如图7的双箭头所示。
[0066]计算机系统700还可包括输入装置,例如键盘708、鼠标710或麦克风(未示出)。此外,计算机700可包括输出装置,例如监视器712(例如,液晶显示器(LCD)、等离子体显示器、发光二极管显示器(LED)或阴极射线管(CRT)监视器)。计算机系统700可通过网络接口连接714连接到网络,例如,局域网(LAN)、广域网(WAN),例如因特网或包括无线网络的其它任何类似的网络类型。这可允许耦接到其它计算机系统或存储网络或磁带驱动器。本领域的技术人员将理解,存在许多不同类型的计算机系统,并且上述输入和输出装置可采取其它形式。一般而言,计算机系统700至少可包括实现本发明的实施例所需的最少的处理、输入和/或输出装置。
[0067]进一步地,本领域的技术人员将理解,上述计算机系统700的一个或多个元件可位于远端位置并通过网络连接到其它元件。进一步地,本发明的实施例可在具有多个节点的分布式系统上实现,其中本发明的每个部分可位于分布式系统内的不同节点上。在本发明的一个实施例中,节点对应于计算机系统。备选地,节点可对应于具有关联物理存储器的处理器。节点还可备选地对应于具有共享存储器和/或资源的处理器或智能手机。
[0068]进一步地,执行本发明的实施例的软件指令可存储在计算机可读介质上,所述计算机可读介质例如光盘(CD)、软盘、磁带或其它任何计算机可读存储器件。[0069]尽管参考有限数量的实施例描述了本发明,但是从本公开受益的本领域的技术人员将理解,可构想不偏离此处公开的发明范围的其它实施例。因此,本发明的范围应该仅被所附权利要求限制。
[0070]还应该注意,术语“包括”并不排除其它元件或步骤,并且“一”或“一个”不排除多个。另一方面,术语“包括”还可包括“由…构成”的情况。另外,结合不同实施例描述的元件可被组合起来。另外应该注意,权利要求中的参考标号不应被视为限定元件。
【权利要求】
1.用于监视在数据库管理系统中执行的存储过程的方法(100),所述方法包括: -针对所述存储过程之一提供(102)以下事件数据以及所述存储过程的标识: -指示所述存储过程的执行开始的第一时间, -指示所述存储过程的所述执行结束的第二时间, -被分配给作为所述存储过程的一部分执行的SQL语句的至少一个SQL语句标识符,以及 -针对每个SQL语句标识符,指示相关SQL语句作为所述存储过程的一部分在所述第一时间与所述第二时间之间执行的执行次数的计数器, -通过所述数据库管理系统提供(104)定期的数据库监视信息,其中所述定期的数据库监视信息包括可通过所述SQL语句标识符识别的已执行SQL语句的参数值, -将可通过所述SQL语句标识符识别的已执行SQL语句的参数值与作为所述存储过程的一部分在所述第一时间与所述第二时间之间执行的所述相关SQL语句的所述执行次数的所述计数器相关联(106),从而导致可通过所述存储过程的所述标识识别的所述存储过程的监视数据。
2.根据权利要求1的方法,所述方法还包括使用至少一个参数的值计算所述至少一个参数的平均参数值。
3.根据权利要求2的方法,其中相关联(106)对应于将所述至少一个参数的所述平均参数值乘以所述已识别SQL语句的执行次数,其中表示具有所述平均参数值的所述SQL语句的SQL语句标识符等于与所述执行次数相关的SQL语句标识符。
4.根据权利要求1的方法,其中所述定期的数据库监视信息仅包括与可通过已作为所述存储过程的一部分执行的那些SQL语句的SQL语句标识符识别的已执行SQL语句相关的参数值。
5.根据上述任一权利要求的方法,其中已执行SQL语句的每个所述参数为由执行次数、已检查的行数、已处理的行数、索引扫描数、表空间扫描数、缓冲写入数、累积数据库时间、累积处理器时间、累积锁定时间以及累积等待时间构成的组中的至少一个。
6.根据上述任一权利要求的方法,其中用于存储所述定期的数据库监视信息的第一缓冲区(214)和用于存储所述事件数据的第二缓冲区(222)相互独立地被操作。
7.根据权利要求1至4中任一权利要求的方法,其中使用组合的缓冲区来存储所述定期的数据库监视信息和所述事件数据。
8.根据上述任一权利要求的方法,所述方法还包括提供用于使所述存储过程的所述监视数据对于运行所述数据库管理系统的数据库服务器以外的系统(206)可用的第一接口。
9.根据上述任一权利要求的方法,还提供用于使所述事件数据和所述定期的数据库监视信息对于运行所述数据库管理系统的所述数据库服务器以外的系统可用的第二接口。
10.用于监视在数据库管理系统(202、720)中执行的存储过程的系统(600),所述监视系统包括: -第一提供单元(602),其适合于针对所述存储过程之一提供以下事件数据以及所述存储过程的标识: -指示所述存储过程的执行开始的第一时间, -指示所述存储过程的所述执行结束的第二时间,-被分配给作为所述存储过程的一部分执行的SQL语句的至少一个SQL语句标识符,以及 -针对每个SQL语句标识符,指示相关SQL语句作为所述存储过程的一部分在所述第一时间与所述第二时间之间执行的执行次数的计数器, -第二提供单元(604),其适合于通过所述数据库管理系统提供定期的数据库监视信息,其中所述定期的数据库监视信息包括可通过所述SQL语句标识符识别的已执行SQL语句的参数值, -相关联单元(606),其适合于将可通过所述SQL语句标识符识别的已执行SQL语句的参数值与作为所述存储过程的一部分在所述第一时间与所述第二时间之间执行的所述相关SQL语句的所述执行次数的所述计数器相关联,从而导致可通过所述存储过程的所述标识识别所述存储过程的监视数据。
11.一种数据库系统(202、720),其中包括根据权利要求10的所述监视系统(600)。
12.—种计算机系统(700),包括根据权利要求10的监视系统(600)。
13.一种用于在数据处理系统(700)中执行的数据处理程序,其包括当所述程序在数据处理系统(700)上运行时,用于执行根据上述权利要求1至9中任一项的方法(100)的软件代码部分。
14.一种存储在计算机可用介质上的计算机程序产品,其包括当所述程序在计算机(700)上运行时,使所述计算机(700)执行根据权利要求1至9中任一项的方法(100)的计算机可读程序装置。
【文档编号】G06F12/00GK103842973SQ201280048469
【公开日】2014年6月4日 申请日期:2012年9月27日 优先权日:2011年10月5日
【发明者】M·查弗勒, M·E·魏劳赫, J·B·托布勒, S·阿伦斯沃德, M·赖克特, A·利默 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1