用于数据库工作负荷仿真器的方法和装置的制作方法

文档序号:6562489阅读:167来源:国知局
专利名称:用于数据库工作负荷仿真器的方法和装置的制作方法
技术领域
本发明一般地涉及改进的数据处理系统,并特别涉及用于测试数据库的用计算机实现的方法和装置。更具体地说,本发明涉及用计算机实现的方法、装置和计算机可用程序代码,用于利用事务处理来仿真环境以便测试数据库。
背景技术
软件应用经常以事务处理方式(transactional manner)彼此交互作用。一些软件应用请求信息,另一些供应信息,并且其他的软件应用在参与这种电子事务处理时两个功能都执行。在大多数电子事务处理的背后是用于存储、检索、处理和管理在这些事务处理中使用的信息的系统。这些系统一般叫做数据库。数据库可以是少量信息的简单组织,或者可能涉及极为巨大、复杂、相互关联并且相互依赖的信息集合。
随着数据库的大小和复杂性增长,数据库的可靠性和性能变成关键问题。数据库在较小规模上可以可靠地执行,支持相对较少数量的电子事务处理。但是,使该数据库经受大量的事务处理可能导致该数据库执行得不适当、不可靠、反应缓慢,或者完全崩溃。在事务处理量保持不变但所存储的信息大小增长时,或者当事务处理要求更密集的处理来完成时,可能发生同样的情况。
为了测试并识别数据库潜在的可靠性和性能问题,管理员和其他用户建立了仿真环境,在仿真环境中,他们能够使数据库经受各种水平的工作负荷。为了针对被测试的受验数据库识别潜在的问题场景,这些仿真很重要。例如,可以建立特定的仿真环境,以便测试数据库系统是否足以支持每分钟10,000个请求在线目录中项目的项目描述的网络事务(Web transcation),或者测试数据库是否能够同时处理用于各种处理密集的作业的200个用户或者连接到它的应用。
数据库的制造商、管理员、用户和第三方供应商已经创建了测试数据库的潜在可靠性和性能问题的工具。目前的仿真技术在时间量、精力以及建立充分的仿真所需的花费方面具有与其相关联的成本。在很多情况下,为从仿真获取有意义的结果所需的具有专门技能的人力资源量使得这些仿真成本令人望而却步。此外,对为建立每一个仿真场景所需的不同部件的数量和复杂性也存有顾虑。
而且,目前可获得的工具和技术依赖于测试场景的划分和每一个场景的较小片段的大量复制。结果,从这些工具和技术所产生的仿真对被仿真的特定场景片段的较窄上下文很敏感。
例如,当经受请求在线目录中项目的项目细节的网络事务处理时,仿真可能只限于测试数据库的负荷处理能力。这样的仿真是数据库的真实性能的反映,因为这种类型的仿真不包括几个其他的应用和用户的同时活动,所述应用和用户可能由于完全不相关的事务处理而连接到所述数据库。
结果,当只有几个网络事务处理正在请求项目描述,另外几个或者在下订单、付款,或者在更改客户简档时,该仿真并非数据库的真实性能的反映。仿真只对对网络上的大量项目描述请求做出响应的上下文敏感。仿真结果只对该有限场景是有意义的。
此外,即使是建立这些对上下文敏感的仿真也要求复杂的软件编程或者代码开发,这本身就造成了通常与任何软件开发工程相伴的诸多障碍。总之,要求开发、测试和调试代码的专门技能以及时间,然后,仿真的真正目的才能开始。
在很多情况下,这些类型的范围有限的仿真经常是不够的。仿真测试的成本和复杂性成指数增加,因为盲目地简单复制充足数量的范围有限、对上下文敏感、较小的仿真并不实际。并且,这种技术并不有效,因为在很多情况下,重复相同的事务处理,例如删除客户记录,在数据库首次处理该事务并删除客户记录以后,不能被复制。为了从较大的仿真获得有意义的结果,在这许多复制仿真的每一个中需要相关的变化。目前,利用专为这个目的所写的代码来实现这种变化,这是非常乏味且劳动密集的工作。因此,当前可获得的工具和技术使用定制代码、劳动和资源密集的测试环境解决仿真数据库工作负荷这个问题。

发明内容
本发明提供了用计算机实现的方法、装置和计算机可用程序代码,用于将指令集执行被选择的次数,以便针对被选择数量的用户仿真用户负荷。响应于将所述指令集执行所述被选择的次数,获得被选择数量的跟踪记录(trace)。所述被选择数量的跟踪记录被同时重放,以便仿真数据库的工作负荷。


在所附权利要求中给出了相信为本发明特有的新颖特征。但是,当结合附图阅读,通过参考说明性实施例的下列具体描述,可以最好地理解本发明本身及其优选使用模式、进一步的目的和优点,在附图中图1是根据本发明的说明性实施例的数据处理系统的网络的图形表示;图2是根据本发明的说明性实施例示出的数据处理系统的框图;图3是根据本发明的说明性实施例示出仿真数据库工作负荷时使用的部件的图;图4是根据本发明的说明性实施例用于仿真数据库工作负荷的例图;图5是根据本发明的说明性实施例示出数据库工作负荷仿真器中的工作流的图;图6是根据本发明的说明性实施例重放跟踪记录文件的图;图7是根据本发明的说明性实施例的用于基准测试程序(benchmark)控制器的过程的流程图;图8是根据本发明的说明性实施例的由数据库产生的跟踪记录文件的片断的图;图9是根据本发明的说明性实施例的Java应用的例子,所述Java应用按照在Java公共客户端跟踪记录中所解释的那样执行命令。
具体实施例方式
现在参考附图,特别是参考图1到2,提供了其中可以实施本发明的实施例的数据处理环境的示范图。应该理解,图1到2只是示范性的,并非旨在声明或者暗示任何有关其中可以实施本发明的实施例或者方案的环境的限制。不偏离本发明的精神和范围,可以对所绘出的环境做出很多修改。
现在参考附图,图1绘出了其中可以实施本发明方案的数据处理系统网络的图形表示。网络数据处理系统100是计算机网络,在其中可以实施本发明的实施例。网络数据处理系统100包含网络102,网络102是用来在网络数据处理系统100内被连接在一起的各种设备和计算机之间提供通信链路的介质。网络102可以包括例如有线、无线通信链路或光缆的连接。
在所绘出的例子中,服务器104和服务器106以及存储单元108连接到网络102。此外,客户端110、112和114连接到网络102。这些客户端110、112和114可以是例如个人计算机或者网络计算机。在所绘出的例子中,服务器104给客户端110、112和114提供例如引导文件、操作系统镜像和应用的数据。在这个例子中,客户端110、112和114是服务器104的客户端。网络数据处理系统100可以包括额外的服务器、客户端,以及其他未示出的设备。
在所绘出的例子中,网络数据处理系统100是互联网,网络102代表世界范围的使用传输控制协议/互联网协议(TCP/IP)组来与彼此通信的网络和网关的集合。在互联网的核心是主要节点或主机之间的高速数据通信线路的主干,由成千上万的路由数据和消息的商业、政府、教育以及其他的计算机系统组成。当然,网络数据处理系统100也可以被实施为许多不同类型的网络,例如企业内部互联网、局域网(LAN)和广域网(WAN)。图1旨在作为例子而非作为对本发明不同实施例的体系结构的限制。
现在参考图2,示出了其中可以实施本发明的方案的数据处理系统的框图。数据处理系统200是计算机的一个例子,例如图1中的服务器104和客户端110,其中可以放置实施本发明的实施例的过程的计算机可用代码或者指令。
在所绘出的例子中,数据处理系统200采用了中心体系结构(hubarchitecture),包括北桥和存储器控制器中心(NB/MCH)202以及南桥和输入/输出(I/O)控制器中心(SB/ICH)204。处理单元206、主存储器208以及图形处理器210连接到NB/MCH 202。图形处理器210可以通过加速图形端口(AGP)连接到NB/MCH 202。
在所绘出的例子中,局域网(LAN)适配器212连接到SB/ICH204。音频适配器216、键盘和鼠标适配器220、调制解调器222、只读存储器(ROM)224、硬盘驱动器(HDD)226、CD-ROM驱动器230、通用串行总线(USB)端口以及其他通信端口232,并且PCI/PCIe设备234通过总线238和总线240连接到SB/ICH 204。PCI/PCIe设备可以包括例如以太网适配器、插入卡以及用于笔记本计算机的PC卡。PCI使用卡总线控制器,而PCIe并非如此。ROM 224可以是例如快闪二进制输入/输出系统(BIOS)。
HDD 226和CD-ROM驱动器230通过总线240连接到SB/ICH204。HDD 226和CD-ROM驱动器230可以使用例如集成驱动电路(IDE)或串行先进技术连接(SATA)接口。超级I/O(SIO)设备236可以连接到SB/ICH 204。
操作系统在处理单元206上运行,并协调和提供对图2中的数据处理系统200内的各种部件的控制。作为客户端,操作系统可以是在商业上可获得的操作系统,例如MicrosoftWindowsXP(Microsoft和Windows是微软公司在美国、其他国家或者上述国家的商标)。面向对象的编程系统,例如JavaTM编程系统,可以结合操作系统运行,并提供从在数据处理系统200上执行的JavaTM程序或应用对操作系统的调用(Java是太阳微系统公司的在美国、其他国家或者上述国家的商标)。
作为服务器,数据处理系统200可以是例如IBMeServerTMpSeries计算机系统,运行高级交互执行(AIX)操作系统或LINUX操作系统(eServer、pSeries和AIX是国际商用机器公司在美国、其他国家或者上述国家的商标,而LINUX是Linus Torvalds在美国、其他国家或者上述国家的商标)。数据处理系统200可以是在处理单元206中包括多个处理器的对称多处理器(SMP)系统。另外,可以采用单处理器系统。
用于操作系统、面向对象编程系统以及应用或者程序的指令被放置在存储设备上,例如HDD 226,并且可以被加载到主存储器208中,供处理单元206执行。本发明实施例的过程由处理单元206使用计算机可用程序代码执行,所述程序代码可以被放置在例如主存储器208、ROM 224的存储器中,或者放置在一个或更多个外围设备226和230中。
普通技术人员将理解,依据实现方式,图1到2中的硬件可能变化。除了在图1到2中所绘出的硬件以外,或者代替所述硬件,可以使用其他的内部硬件或者外围设备,例如快闪存储器、等效非易失存储器,或光盘驱动器,等等。而且,可将本发明的过程应用于多处理器数据处理系统。
在一些说明性示例中,数据处理系统200可以是个人数字助理(PDA),它配有提供非易失存储器的快闪存储器,用于存储操作系统文件和/或用户产生的数据。
总线系统可以由一个或更多个总线组成,例如图2中所示的总线238或总线240。当然,可以使用任何类型的通信构架或体系结构实施所述总线系统,所述通信构架或体系结构在连到所述构架或体系结构的不同部件或设备之间提供数据转移。通信单元可以包括一个或更多个用来发送和接收数据的设备,例如图2的调制解调器222或网络适配器212。存储器可以是例如主存储器208、ROM 224或者像在图2中的NB/MCH 202中找到的那样的高速缓存。图1到2中所绘出的例子以及上面描述的例子并非意在暗示体系结构的限制。例如,数据处理系统200也可以是平板计算机、膝上型计算机,或者除了具有PDA形式以外的电话设备。
本发明的方案提供了用于数据库工作负荷仿真系统的用计算机实现的方法、装置和计算机可用程序代码。本发明的方案仿真了数据库工作负荷,这一般由昂贵的测试配置和测试驱动器驱动。在这些说明性例子中,工作负荷仿真器是无上下文的,所以测试开发者无需对工作负荷的特性有任何了解。本发明的方案不要求针对任何特定上下文的编码或脚本定制。
此外,仿真器被设计成支持直接数据库测试。数据在数据库管理系统(DBMS)应用编程接口(API)层上被捕获。此外,本发明的方案不要求中间件集群(middleware cluster)的配置和长期维护。
现在转到图3,根据本发明的说明性实施例示出了说明在仿真数据库工作负荷时使用的部件的图。在这个例子中,所示出的部件形成了最小测试环境配置的一个例子。如所示那样,环境300包含负荷驱动器302。这个部件在环境300中产生输入,以便仿真数据库业务。
在这些说明性例子中,构建了环境300,用于仿真基于单个客户端或者请求者的数据库工作负荷。当然,依据具体实现方式,仿真也可以应用于多于一个请求者。在这些例子中,客户端的数量仅受负荷驱动器302可以仿真的客户端数量限制。客户端是产生对数据库的请求的实体,并且可以是例如计算机或计算机上的处理器。
环境300还包含Web服务器304、应用服务器306,以及数据库系统308。在这些例子中,网络服务器304和应用服务器306形成了中间件。Web服务器304起到处理数据库的用户或请求者的业务的作用。在这些例子中,Web服务器304被用来处理互联网协议(IP)和超文本传输协议(HTTP)业务。应用服务器306提供对数据库系统308的访问。应用服务器306可使用各种类型的目前可获得的程序来实现,例如WebSphere应用服务器,它是可从国际商用机器公司获得的产品。在这些例子中,产生业务时只使用单个客户端,因而只需要在单个节点上的单个应用服务器,例如应用服务器306。在这些例子中,客户端是被仿真的客户端,例如图1中的客户端110。在正常操作中,采用不同节点上的大量应用服务器,例如十个应用服务器。
此外,在实际的数据库实现中,除了网络服务器304以外,需要不同数据处理系统上的额外的Web服务器。目前,采用两个或更多个负荷驱动器,例如负荷驱动器302。可以看到,通过使用单个客户端或请求者运行仿真过程,减少了建立测试环境需要的部件数量。结果降低了时间和硬件方面的成本,使得这种类型的测试更为可行。
在仿真来自客户端的请求时,负荷驱动器302将业务驱动或发送到Web服务器304。这种业务是来自客户端的被仿真的请求的形式。负荷驱动器302是目前使用的部件,用于在数据库工作负荷仿真中仿真业务。在这些例子中,业务的仿真只针对单个用户或客户端。
使用仿真过程310处理不同的部件,例如负荷驱动器302、Web服务器304、应用服务器306和数据库系统308。该过程将适当的命令发送到这些不同部件,以便执行工作负荷仿真过程。在第一阶段,仿真过程310发送命令到负荷驱动器302,以便产生到Web服务器304的业务。该业务包含对数据库系统308的不同请求。
仿真过程310还发送命令到数据库系统308,以便开始记录仿真中产生的请求的跟踪记录。当仿真完成时,该跟踪记录被存储在跟踪记录312中。在这些例子中,跟踪记录312内的每一个跟踪记录均代表单个客户端产生的动作或请求。针对某个期望数量的用户或客户端,仿真过程310重复这个循环或者某些系列的步骤。每一次运行新仿真时,负荷驱动器302以不同于其他仿真的方式产生请求。贯穿目前在负荷驱动器302中使用的过程,这些输入被改变,以便仿真对数据库的请求。
由数据库系统308对跟踪记录的记录被通过数据库管理系统(DBMS)应用程序接口(API)提供,大多数数据库管理器提供所述数据库管理系统(DBMS)应用程序接口(API)。例如,DB2通用数据库允许跟踪其可调用层接口(CLI)。CLI是给各种目前可获得的数据库系统提供的标准数据库API。DB2通用数据库是可从国际商用机器公司获得的产品。
在已经收集了期望数量的跟踪记录之后,仿真过程310向数据库系统308重放这些跟踪记录,以便仿真来自多个客户端的业务。例如,在仿真该数据库的工作负荷时,可以同时重放一百个跟踪记录,以便仿真来自一百个不同的访问数据库系统308的客户端的业务。
以这种方式,通过该过程减少了为仿真大量数据库业务所需的在时间和硬件方面的增加的精力。这种类型的过程不要求产生工作负荷脚本来仿真多个客户端。使用本发明的方案,通过理解事务组合(transaction mix)和不同类型的随机函数来定制脚本所需的时间是不必要的。如果使用上下文数据库工作负荷仿真器,则用户通常记录运行中的业务并研究输出,以便理解业务的模式。此后,用户被要求定义事务组合和边界。跟踪记录中的数值数据被用随机函数代替,并且去除了冗余的事务。此后,重放该跟踪记录。使用本发明的方案,不需要这些类型的步骤。和使用上下文数据库工作负荷仿真器相反,在跟踪记录内不要求改变或者编码。
现在转到图4,根据本发明的说明性实施例绘出了用于仿真数据库工作负荷的例图。在这个例子中,测试者400执行三个基本任务。这些任务是配置任务402、收集任务404和重放任务406。配置任务402是用来配置最小测试环境的任务。例如,使用可从国际商用机器公司获得的DB2通用数据库。在这个例子中采用该部件以及Web服务器、Java消息传送(JMS)服务器、应用服务器和负荷驱动器来形成测试环境。
此后,收集任务404是一个指令集,执行该指令集以便从所配置的测试环境收集N×M个跟踪记录文件。收集任务404只不过是使运行过程开始的任务,就像测试者每天所执行的。在这个例子中,利用最小测试环境使用运行过程。作为收集任务404的结果,从运行过程产生了数据库跟踪记录文件。收集任务404将该过程运行M次,其中运行的每一次重复均产生N个跟踪记录文件。
此后,使用重放任务406同时重放Y个跟踪记录文件。在这个过程中,测试者用从收集任务404收集的跟踪记录文件的同时重放来对数据库管理系统施压。在这个例子中,Y是在任何给定测试执行中打算仿真的用户数量。在这些例子中,Y小于或等于M×N。跟踪记录文件被标记并被同时重放,以便仿真很多数据库用户。利用这个过程,不需要跟踪记录文件解析、编码或定制。
接着转到图5,根据本发明的说明性实施例绘出了示出数据库工作负荷仿真器中的工作流的图。作为例子,绘出了跟踪记录文件收集的一种可能的指示。在这个数据库工作负荷仿真器中存在的部件包括仿真器用户接口(UI)500、基准测试程序(bench mark)控制器502、负荷驱动器管理器504、中间件管理器506、数据库管理器508,以及跟踪记录文件管理器510。在这个例子中,测试者512是开始收集跟踪记录文件的用户或软件应用,所述跟踪记录文件进入并将跟踪记录文件命令收集到仿真器用户接口500中(消息M1)。
在这个例子中,仿真器用户接口500、基准测试程序控制器502、负荷驱动器管理器504以及中间件管理器506是在图3的仿真过程310内的部件。
仿真器用户接口500是接收收集跟踪记录文件的请求的用户接口。基准测试程序控制器502在这些说明性实施例中是任务协调者。负荷驱动器管理器504起到负荷驱动器的封装的作用。中间件管理器506管理例如Web服务器、应用服务器以及Java消息服务(JMS)服务器的中间件。数据库管理器508提供数据库管理系统的控制。数据库管理器508是在被测试的数据库内的过程。使用这种类型的管理器将各种命令发送到数据库系统。使用跟踪记录文件管理器510处理运行所产生的跟踪记录文件。
仿真器用户接口500将收集跟踪记录文件消息转发到基准测试程序控制器502(消息M2)。接着,基准测试程序控制器502通过从备份镜像回收数据库管理系统来启动。通过由基准测试程序控制器502发送停止命令到数据库管理器508发生这个过程(消息M3)。此后,基准测试程序控制器502发送消息到数据库管理器508来启动数据库(消息M4)。此后,基准测试程序控制器502将恢复数据库命令发送到数据库管理器508(消息M5)。
基准测试程序控制器502还回收中间件。随着基准测试程序控制器502将停止中间件的命令发送到中间件管理器506,发生了这个回收过程(消息M6)。此后,基准测试程序控制器502将再次启动中间件的命令发送到中间件管理器506(消息M7)。中间件的停止和启动保证在运行之间从中间件清除状态信息和高速缓存数据。
在中间件上的中间件软件已被启动之后,并且在测试开始之前,基准测试程序控制器502发送允许记录命令到数据库管理器508(消息M8)。使用这个消息来允许数据库管理系统API捕获数据。然后,通过由基准测试程序控制器502发送运行基准测试程序命令到负荷驱动器管理器504,开始针对单个用户的运行(消息M9)。一旦运行完成,基准测试程序控制器502发送禁止记录命令到数据库管理器508,从而禁止用来收集数据的数据库管理系统API(消息M10)。
然后,基准测试程序控制器502发送保存跟踪记录文件命令到跟踪记录文件管理器510(消息M11)。使用这个特定消息将运行所产生的跟踪记录文件保存在某个期望或被选择的位置,供以后使用。
在这些说明性例子中,所绘出的工作流被重复了获取期望数量的跟踪记录文件和被仿真用户所要求的重复次数。在这些例子中,每一个跟踪记录文件均可以是执行不同动作的不同用户的仿真。
现在转到图6,根据本发明的说明性实施例绘出了重放跟踪记录文件的图。在这个例子中,仿真系统包含仿真器用户接口600、基准测试程序控制器602、数据库管理器604、中间件管理器606、跟踪记录文件管理器608以及重放运行时对象610。仿真器用户接口600、基准测试程序控制器602、数据库管理器604、中间件管理器606和跟踪记录文件管理器608分别对应于图5中的仿真器用户接口500、基准测试程序控制器502、数据库管理器508、中间件管理器506和跟踪记录文件管理器510。在此重放过程中使用的额外部件是重放运行时对象610。这个特定对象负责跟踪记录文件中被捕获的业务的解释和将工作负荷施加到被测试的系统。
在这个例子中,例如DB2的很多数据库系统包括重放跟踪记录文件的能力。通过同时运行用来重放跟踪记录文件的程序的多个实例,重放多个跟踪记录文件。但是,如果数据库系统不具有跟踪记录重放工具,则重放运行时对象610可以被实施为仿真过程的一部分。在这种情况下,采用跟踪记录文件解释器和执行器。跟踪记录文件解释器和执行器是解释跟踪记录中的数据并产生在记录该跟踪记录时所发生的动作或请求的过程。
在这个特定的重放过程中,中间件管理器606不执行任何动作,因为不再需要应用服务器。
在这个例子中,测试者612是通过和仿真器用户接口600交互作用开始重放跟踪记录文件的用户或者应用。在这个例子中,测试者612发送重放Y个跟踪记录文件命令到仿真器用户接口600(消息S1)。使用这个命令来重放Y个跟踪记录文件。仿真器用户接口600将这个命令中继到基准测试程序控制器602(消息S2)。
响应于接收到这个重放跟踪记录文件的命令,基准测试程序控制器602回收被测试的系统,并且数据库被恢复。随着基准测试程序控制器602将停止数据库命令发送到数据库管理器604(消息S3),发生了这个过程。此后,基准测试程序控制器602发送启动数据库命令到数据库管理器604(消息S4)。然后基准测试程序控制器602发送恢复数据库命令到数据库管理器604(消息S5)。
接着,基准测试程序控制器602发送取得跟踪记录文件命令到跟踪记录文件管理器608(消息S6)。基准测试程序控制器602使用这个消息为仿真获得所需要的跟踪记录文件。例如,如果要仿真一千个数据库用户,则从跟踪记录文件管理器608获得一千个跟踪记录文件进行重放。
在重放跟踪记录文件之前,数据库被预热(warm up)。这通过由基准测试程序602发送预热数据库命令到数据库管理器604来实现(消息S7)。在这些例子中,在基准测试(benchmarking)首次启动之前,数据应该被加载到缓冲池中。使用消息S7执行这个过程。这种类型的过程是常见的目前使用的数据库基准测试的做法。
然后,基准测试程序控制器602发送启动工作负荷命令到重放运行时对象610(消息S80)。使用这个命令为数据库同时重放收集的跟踪记录文件。在已经播放了跟踪记录文件之后,基准测试程序控制器602发送取得事务处理率(transaction rate)命令到数据库管理器604(消息S9)。这个特定度量在数据库性能中是一个关键的度量。
基准测试程序控制器602将这个度量返回到仿真器用户接口600(消息S10)。接着,仿真器用户接口600将该事务处理率呈现给测试者612(消息S11)。
现在转到图7,根据本发明的说明性实施例示出了基准测试程序控制器的过程的流程图。在这些例子中,图7中所示的过程可以被实施在基准测试程序控制器中,例如图5中的基准测试程序控制器502或者图6中的基准测试程序控制器602。
所述过程通过复位数据库管理器开始(步骤700)。然后确定应该采取什么动作(步骤702)。如果动作是收集跟踪记录文件,则设置计数器n等于零(步骤704)。步骤704中的计数器n用来对已经进行的运行次数进行计数。适当的命令被发送到数据库,以便将数据库恢复到先前状态(步骤706)。对于数据库,一个期望的先前状态是恰好在测试数据库被填充了测试数据之后的状态。测试数据通常由随机函数产生。但是在这些说明性实施例中,在测试中期望以相同的测试数据作为起始点来启动每一个测试。在填充了数据以后,数据库通常被备份。然后,可以将数据库从备份镜像恢复到先前状态。在这些例子中,在测试中,状态在运行之间不被恢复。
此后,过程复位全部中间件数据处理系统(步骤708)。使用这个步骤复位不同的数据处理系统,在所述数据处理系统上可以运行例如网络服务器或应用服务器的中间件。实施步骤708以便在用于仿真客户端的工作负荷的不同运行之间清除高速缓存数据中的状态信息。接着,过程开启数据库活动跟踪(步骤710)。通过发送适当的API命令到数据库管理器来使用这个过程。这个命令的一部分可以包括指定应该将跟踪记录文件存储在哪儿。对于DB2 CLI,记录或创建跟踪记录的命令是“db2-v update cli cfg for section COMMON usingTrace %1和db2-v update cli cfg for section COMMON usingTracePathName%CLI_TRACE_PATH%”。
然后,该过程运行基准测试程序(步骤712)。这可以通过由基准测试程序控制器运行批处理文件脚本来开始。此后,确定计数器n是否小于N(步骤714)。N是要被仿真的不同客户端的数量。如果计数器n不小于N,则n被增加1(步骤716),然后过程返回如上所述的步骤712。在这些说明性例子中,数据库仅在其第一次运行之后被恢复。否则,该过程关闭数据库活动跟踪(步骤718),并保存跟踪记录文件供以后重放(步骤720)。此后过程终止。
再次参考步骤702,如果动作是重放跟踪记录文件,则过程恢复数据库(步骤722)。此后,从贮存库获得跟踪记录文件(步骤724)。然后,该过程通过将数据库从磁盘加载到高速缓存来预热数据库(步骤726)。此后,同时重放M个跟踪记录文件(步骤728)。在这些例子中,M是针对所述数据库应该被仿真的客户端的数量。要被重放的跟踪记录文件的数量可以小于实际记录的跟踪记录文件的数量。结果,M可以小于N。
对于例如DB2 CLI的数据库,通过数据库配备的重放工具完成重放。在这个例子中,使用语句“start”db2cli.exe trace file 1运行这个程序的一个实例来重放跟踪记录文件1。这个命令被针对不同的跟踪记录文件名同时重复,以便同时重放这些跟踪记录文件。通过脚本或批处理文件可以启动不同的实例,所述脚本或批处理文件针对每一个要重放的跟踪记录文件重复所述命令。此后,通过对持续时间内被进行的顺序查询语言语句的数量计数获得事务处理率(步骤730),此后过程终止。
现在转到图8,根据本发明的说明性实施例绘出了数据库产生的跟踪记录文件的图。在这个例子中,跟踪记录800是数据库产生的Java公共客户端(JCC)跟踪记录文件的一部分的一个例子,其中存在着SQL语句和其他的命令。在这些例子中,跟踪记录800被存储在图3的跟踪记录312中。这个跟踪记录被重放,以便仿真在这些例子中由单个客户端产生的事务。
如果重放工具不支持特定类型的跟踪记录,则本发明的方案可以包括解释跟踪记录的内容并执行适当命令的重放过程。
现在转到图9,代码900是java应用的一个例子,它按照在DB2通用JDBC驱动器、a.k.a Java公共客户端(JCC)跟踪记录中解释的那样执行命令。如果数据库系统支持重放其产生的跟踪记录,则这种类型的过程是不必要的。
因此,本发明的方案提供了用于仿真数据库工作负荷的用计算机实现的方法、装置和计算机可用程序代码。建立最小测试环境,以便允许单个少量客户端在数据库上产生工作负荷业务。通过客户端收集这个运行的跟踪记录。这个运行被针对仿真所需要的任意多的客户端重复。每次进行运行时,为客户端产生跟踪记录。这些跟踪记录被保存,然后被同时向数据库重放,以便仿真来自期望数量的客户端的工作负荷。在本发明的方案中,不需要文件分配、编码和定制来仿真数据库上的工作负荷。
以这种方式,测试数据库所需要的时间和硬件量被减少。在这些例子中,针对单个客户端产生每一个产生跟踪记录的运行。依据特定实现方式,可以在一个跟踪记录中仿真若干客户端。但是,添加额外的客户端可能增加测试的复杂性,并且在某种情况下要求额外的硬件和软件资源。因此,尽管可以仿真额外的客户端,但是,依据所述仿真复杂性的增加,这样的改变是可选的。
本发明可以具有完全硬件实施例的形式、完全软件实施例的形式,或者既包含硬件元素也包含软件元素的实施例的形式。在优选实施例中,本发明在软件中实施,它包括但不限于固件、驻留软件、微码等。
此外,本发明可以具有可从计算机可用或计算机可读介质访问的计算机程序产品的形式,所述介质提供程序代码供计算机或任何指令执行系统使用,或者结合它们一起使用。为了本描述的目的,计算机可用或计算机可读介质可以是任何有形的装置,它能够包含、存储、传递、传播或传输供指令执行系统、装置或设备使用或者结合它们一起使用的程序。
介质可以是电子、磁性、光学、电磁、红外或半导体系统(或装置或设备),或者传播介质。计算机可读介质的例子包括包括半导体或固态存储器、磁带、可移动计算机磁盘、随机访问存储器(RAM)、只读存储器(ROM)、刚性磁盘和光盘。当前的光盘例子包括紧制盘-只读存储器(CD-ROM)、紧制盘-读/写(CD-R/W)和DVD。
适于存储和/或执行程序代码的数据处理系统将包括至少一个通过系统总线直接或间接地耦合到存储器元件的处理器。存储器元件可以包括在程序代码实际执行期间所采用的本地存储器、大容量存储器和高速缓存存储器,高速缓存存储器提供至少一些程序代码的临时存储,以便减少在执行期间必须从大容量存储器取出代码的次数。
输入/输出或I/O设备(包括但不限于键盘、显示器、指示设备等)可直接或通过中间的I/O控制器耦合到系统。
网络适配器也可以耦合到所述系统,以使数据处理系统能够通过中间的私有或公共网络变成耦合到其他的数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器以及以太网卡仅仅是目前可获得的网络适配器类型中的几种。
为了说明和描述的目的,已经给出了本发明的描述,本发明的描述并非是穷尽的或者局限于所公开形式的发明。对于普通技术人员来说,很多修改和改变将是显然的。选择并描述了实施例以便最好地说明本发明的原理、实际应用,并使其他普通技术人员能够针对具有各种适合所构思的特定使用的修改的各种实施例理解本发明。
权利要求
1.一种用于仿真数据库上的工作负荷的、用计算机实现的方法,所述用计算机实现的方法包含将指令集执行被选择的次数,以便仿真被选择数量的客户端的工作负荷;响应于将所述指令集执行所述被选择的次数,获得被选择数量的跟踪记录;和同时重放所述被选择数量的跟踪记录,以便仿真所述数据库上的所述工作负荷。
2.如权利要求1所述的用计算机实现的方法,还包含配置测试环境。
3.如权利要求1所述的用计算机实现的方法,还包含从所述被选择数量的跟踪记录的所述同时重放中接收一组度量。
4.如权利要求3所述的用计算机实现的方法,其中,所述的一组度量包含事务处理率。
5.如权利要求1所述的用计算机实现的方法,还包含在所述指令集的每一次执行之前停止所述数据库;在所述指令集的每一次执行之前停止所述数据库之后,启动所述数据库;和在所述指令集的每一次执行之前启动所述数据库之后,将所述数据库恢复到先前状态。
6.如权利要求5所述的用计算机实现的方法,还包含在所述指令集的每一次执行之前停止中间件;和在所述指令集的每一次执行之前已经停止所述中间件之后,启动所述中间件,其中,状态信息和被高速缓存的数据从所述中间件被清除。
7.如权利要求1所述的用计算机实现的方法,其中,所述获得步骤包含允许记录跟踪记录;从所述指令集的每一次执行接收跟踪记录,以便形成多个跟踪记录;和保存所述多个跟踪记录。
8.如权利要求1所述的用计算机实现的方法,其中,所述执行步骤和所述获得步骤由基准测试程序控制器执行。
9.一种计算机程序产品,包含具有用于仿真数据库上的工作负荷的计算机可用程序代码的计算机可用介质,所述计算机程序产品包括用于执行权利要求1到8中任何一个的方法中的步骤的计算机可用程序代码。
10.一种数据处理系统,包含总线;连接到所述总线的通信单元;连接到所述总线的存储器,其中,存储设备包括一组计算机可用程序代码;和连接到所述总线的处理器单元,其中,所述处理器单元执行所述的一组计算机可用程序代码,以便将指令集执行被选择的次数,从而仿真被选择数量的客户端的工作负荷;响应于将所述指令集执行所述被选择的次数,获得被选择数量的跟踪记录;和同时重放所述被选择数量的跟踪记录,以便仿真所述数据库上的所述工作负荷。
11.如权利要求10所述的数据处理系统,其中,所述处理器单元还执行所述计算机可用程序代码来配置测试环境。
12.如权利要求10所述的数据处理系统,其中,所述处理器单元还执行所述计算机可用程序代码,以便从所述被选择数量的跟踪记录的所述同时重放中接收一组度量。
13.如权利要求12所述的数据处理系统,其中,所述的一组度量包含事务处理率。
14.如权利要求10所述的数据处理系统,其中,所述处理器单元还执行所述计算机可用程序代码,以便在所述指令集的每一次执行之前停止所述数据库;在所述指令集的每一次执行之前停止所述数据库之后,启动所述数据库;和在所述指令集的每一次执行之前启动所述数据库之后,将所述数据库恢复到先前状态。
15.如权利要求14所述的数据处理系统,其中,所述处理器单元还执行所述计算机可用程序代码,以便在所述指令集的每一次执行之前停止中间件;和在所述指令集的每一次执行之前已经停止所述中间件之后,启动所述中间件,其中,状态信息和被高速缓存的数据从所述中间件被清除。
全文摘要
将指令集执行被选择的次数,以便仿真被选择数量用户的用户负荷的计算机实现的方法、装置和计算机可用程序代码。响应于将所述指令集执行了所述被选择的次数,获得被选择数量的跟踪记录。同时重放所述被选择数量的跟踪记录,以便仿真所述数据库上的所述工作负荷。
文档编号G06F17/30GK1975691SQ200610142578
公开日2007年6月6日 申请日期2006年10月30日 优先权日2005年10月31日
发明者托尼·劳, 彼德·舒姆 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1