数据传送方法及系统的制作方法

文档序号:6378560阅读:122来源:国知局
专利名称:数据传送方法及系统的制作方法
技术领域
本发明涉及数据被共享的多系统环境中的数据传送。
背景技术
在共享盘数据库管理系统(DBMS)中,多个DBMS(被称作DBMS构件)构成一群集并共享存储器。该群集内的每个DBMS构件都具有一个其中数据库页被缓存以用于快速存取的本地缓冲池(BP)。可以把页缓存在多个DBMS构件的缓冲池内。当一个DBMS构件的本地缓冲池内的页被改变(即,被更新)时,“缓冲器相干性”问题就会导致,由此具有那些页被缓存的其它DBMS构件必须检测它们的本地拷贝现已过期(即,“标准以下”)并且它们必须获得该页的最新版本。
在现有技术中已经开发了各种用于从一个系统向另一个系统传送已改变页的技术。在z/OS环境中,“耦合设施”(CF)提供了共享电子存储器以及很高速度的连通性并可以从国际商业机器公司买到。在1997年第2期第36卷IBM系统杂志上由Jeffrey W.Josten所著的“DB2’s use of the Coupling Facility for Data Sharing”中进一步描述了耦合设施,该文在此并入作为参考。
在z/OS环境中,当改变一DBMS构件内的缓冲池中的多个页时,通过每次写一页而把每个被改变的页传送到共享电子存储器。即,该DBMS构件对每个改变页发出一“写数据”命令。然而,由于改变大量页的工作量,每次一页写能够增加大量的中央处理单元(CPU)开销。
另外,该耦合设施提供一组控制结构及命令,该组控制结构及命令允许该DBMS构件把它们的兴趣注册在一给定页内,以便当该页随后被改变并写到该共享电子存储器内时,该耦合设施能够向那些已经把其兴趣注册到该页内的DBMS构件发送交叉无效(XI)信号的。该交叉无效信号被发送每页到。当已经收到该交叉无效信号的一DBMS构件之后引用其本地缓冲池内的那一页时,该DBMS构件能够快速检测到该页现在无效并且能够从该耦合设施快速刷新该页。
高速缓存结构内的被改变的数据与抛弃(castout)类相关联。通常,当把数据从一高速缓存结构传送到各个DBMS构件110A…N上的存储器时,由时间间隔或结构全阈值来触发该传送。然后,作出哪个抛弃类具有大量要被抛弃的被改变的数据的确定。对于所确定的类中的每一个,读取出现在该抛弃类中的所有被改变的条目的一个清单。对于该清单内的每一条目,读取条目数据并且给该条目加锁以用于抛弃。然后,在用于所有要被抛弃的条目的抛弃锁串行化下,把所有的条目写入与该DBMS构件相连的直接存取存储设备(DASD)。
在除z/OS之外的环境(例如,Unix,Windows,或Linux环境)中,典型地把被改变的页经由盘输入/输出(I/O)或是经由点到点系统间通信链路从处理器群集中的一个构件传送到另一个构件。某些新式的盘控制器开始配备大的电子存储高速缓存以及大量的中央处理单元(CPU)功率,并能够每次传送一个或多个页。
InfiniBand是一种用于处理器与I/O设备之间的数据流的体系结构及规范,该体系结构和规范提供每秒达2.5千兆字节的吞吐量以及对高达64,000个的可寻址设备的支持。期望Infiniband提供在群集处理器之间的更好的数据共享。然而,Infiniband没有解决缓冲器相干性问题。
因此,该技术中存在对改进的数据传送以及对共享数据的系统间的有效缓冲器相干性的需要。

发明内容
所提供的是用于传送数据的系统,方法及程序。标识已由一个或多个事务改变的多个数据对象。使用一条批量写命令来把该多个数据对象从本地存储器传送到一共享高速缓存结构。
在某些实现中,提供了一种方法,系统,以及程序,其中,当把第一系统上的未被缓存在共享高速缓存内的被改变的数据对象传送到盘上时,发送一条标识被传送到盘上的该被改变的数据对象的批量交叉无效命令。
在某些实现中,提供了一种方法,系统,以及程序,其中使用一条单独的批量抛弃命令来把多个数据对象从高速缓存结构传送到处理器存储器上。然后,把该多个数据对象从该处理器存储器传送到盘上。
本发明的所述实现提供了用于传送数据的方法,系统,以及程序。通过把高频高速缓存结构一起进行批处理,本发明的实现减少了被发送到共享外部存储器的命令数量,并因此改进了与在执行高的更新活动工作量时向共享外部存储器写数据,从该共享外部存储器抛弃数据,以及使数据交叉无相关联的性能(例如,主CPU开销及流过的时间)。


现在参见附图,其中相同的参考数字自始至终代表对应的部件图1A说明在一方框图中的根据本发明的某些实现的计算机体系结构。
图1B说明在一方框图中的根据本发明的某些实现的状态栏的进一步细节。
图1C说明在一方框图中的根据本发明的某些实现的用户寄存器阵列的进一步细节。
图2A说明根据本发明的某些实现的被实现以使用批量写命令的逻辑。
图2B说明根据本发明的某些实现的批量写命令的输入及输出。
图3A说明根据本发明的某些实现的被实现以使用批量交叉无效命令的逻辑。
图3B说明根据本发明的某些实现的批量交叉无效命令的输入及输出。
图4A说明根据本发明的某些实现的被实现以使用批量抛弃命令的逻辑。
图4B说明根据本发明的某些实现的批量抛弃命令的输入及输出。
图5说明DBMS构件和/或共享外部存储器的体系结构的一种实现。
具体实施例方式
在以下描述中,参考构成该描述的一部分并说明了本发明的几种实现的附图。应当理解也可以采用其它的实现并可以作出结构以及操作上的变化而不脱离本发明的范围。
图1A说明在一方框图中的根据本发明的某些实现的计算机体系结构。在这些图中,为了便于引用,一个例子内的元件的多个拷贝将被用相同的参考数字及字符来表示(例如,110A-110N,其中N表示该元件的第n个拷贝)。例如,将把多个DBMS构件称作为DBMS构件110A…110N。另外,诸如N的某些变量被用来表示表明元件的某一数目的整数值。当用在具有相同或不同的元件的不同例子中时,这些变量可以表示任何数目。
DBMS构件110A…N连到共享外部存储器120。在某些实现中,该共享外部存储器120是从国际商业机器公司可买到的一耦合设施。每个DBMS构件110A…110N都具有DBMS软件112A…N,中央处理单元114A…N,操作系统115A…N,本地存储器(例如,本地缓冲池116A…N),本地缓冲池向量117A…N,事务数据对象清单118A…N,以及处理器存储器119A…N。在某些实现中,出于抛弃的目的而保留“专用缓冲器”,并且该“专用缓冲器”不被用于数据库缓存,以及这样做以确保抛弃不妨碍本地缓冲池116A…N内的正常数据库缓存操作。
DBMS软件112A…N拥有和控制一组在该计算机系统内的资源。作为一个例子,该DBMS软件可以是由国际商业机器公司所提供的DB2。
每个中央处理单元114A…N执行操作系统115A…N,诸如由国际商业机器公司所提供的z/OS操作系统,该操作系统被用来控制程序的执行以及数据的处理。
本地缓冲池116A…N存储各个DBMS构件110A…110N的数据(例如,诸如页这样的数据对象)。本地缓冲池116A…N包括在本地系统上的用户分配和管理的存储区。DBMS构件110A…110N通过该共享外部存储器120注册兴趣,以表明对获得用于在其它DBMS构件110A…110N上被改变的数据的交叉无效信号的兴趣。兴趣的注册使指定数据对象与本地缓冲池向量117A…117N内的一索引发生联系,以使得该索引反映本地缓冲池向量116A…N内的该指定数据对象的有效性。每个本地缓冲池向量116A…N可以包括,例如,用于引用数据的名称栏;用于存储该数据的数据栏;以及用于附加数据的任意附加的数据栏。
DBMS构件110A…110N可以经由一个或多个盘控制器106访问一个或多个盘104(例如,直接存取存储设备(DASD))。
经由例如共享外部存储器120通道以及高速光纤链路可以把DBMS构件110A…110N连到共享外部存储器120。
共享外部存储器120包括可由DBMS构件110A…N访问的诸如高速缓存结构122这样的存储器,并包括用于执行由DBMS构件110A…N内的应用程序(例如,DBMS软件112A…112N)所请求的操作的一个或多个处理器140。该高速缓存结构122和/或共享外部存储器120可以包括其它的或附加的组件或信息。图1A中,高速缓存结构122包括目录124,数据区132,抛弃类控制块134,用户注册172,结构控制160,本地高速缓存控制块162,存储类控制164,以及被改变的数据管理设施,它们在2001年11月13日颁发给David A.Elko等的美国专利No.6,317,744B1中进一步详细描述,并且该专利在此全部并入作为参考。
把高速缓存结构122划分成目录124内的一组目录条目以及数据区132内的一组数据条目。在某些实现中,当经由例如表示该高速缓存结构122的期望的划分的编程接口参数来分配高速缓存结构122时,目录124和数据区132内的每种类型条目的数目被确定。
高速缓存结构122支持依照存储器类的指定数据条目的划分。针对高速缓存结构122所标识的每个指定数据对象驻留在连接指定的存储器类中。目录124中的目录条目被划分成存储类,并被安排为全相联阵列。把被改变的目录条目的子集另外划分成抛弃类。
目录124内的每个目录条目包括例如名称栏125,状态栏126,抛弃类栏127,存储器类构造128,并可以包括用省略号129所代表的附加信息。
每当把一指定数据对象放到共享外部存储器120高速缓存结构122或是本地缓冲池116A…N内时,该指定数据对象的名称就被注册到名称栏125内,并且它的状态被注册到目录124内的状态栏列126内。该状态信息表示例如数据是否被改变,未被改变,为抛弃而被加锁或驻留在共享外部存储器120内。
图1B说明在方框图内根据本发明某些实现的状态栏126的进一步细节。具体地,该状态栏126包括数据状态栏170,用户注册阵列172,用户数据栏174,并且可以包括用省略号176所代表的其它栏。
图1C说明在方框图内根据本发明某些实现的用户注册阵列172的进一步细节。用户注册172是包含用于该高速缓存结构的每个DBMS用户的一个条目的阵列。在该用户注册中的各个用户的条目内,该共享外部存储器120记录该用户是否具有在它们的本地缓冲池116A…N内的该指定条目的有效本地拷贝,并且如果具有,那么共享外部存储器120把该向量索引记录到已经与该用户的本地拷贝相联系的本地缓冲池117A…N中。这就是当需要时,对于该用户注册内的每个有效用户被交叉无效掉的本地缓冲池向量索引。例如,用户注册172包括本地高速缓存标识符(LCID)182,本地-高速缓存-条目数目(LCEN)184,以及用于该本地-高速缓存-条目数目的有效位(LVI)186。当为该指定名称及本地高速缓存执行注册过程时,把有效的本地-高速缓存-条目的数目注册在该本地-高速缓存注册内。当本地高速缓存被分离时,或是当为该指定的名称执行批量交叉无效过程并且该本地高速缓存是正被无效掉的本地高速缓存组的一构件时,使本地-高速缓存-条目的数目无效。当LVI栏186为零时,使LCEN栏184无效。
该状态还包括用户数据栏(UDF)174(图1B),它含有与最初在共享外部存储器120缓存中被改变且被保持到数据区被重新使用时的数据相关联的值。当该数据由于被改变而被缓存时,使该用户数据栏174有效。用户数据栏174含有时间值或时标,该时间值或时标代表该数据元素已被改变并且该改变尚未被转移到盘104时的最老的时间点。
数据区132内的数据条目含有被缓存的子系统数据。在某些实现中,数据条目包括零或多个的元素。每个数据条目都具有含有控制信息的一对应的目录条目。目录条目可以在没有关联的数据条目的情况下存在。
目录条目含有标识该结构的指定子系统数据对象,描述子系统数据对象的属性,允许在数据内的连接兴趣的注册,方便数据的舍抛弃以及影响结构资源管理操作的控制信息。目录条目总是被分配给含有被缓存的子系统数据的一数据条目并与该数据条目相关联。在没有相关联的数据条目的情况下,通过之前允许指定子系统数据对象的定义和在这些项内的连接兴趣的注册以及也许甚至在没有实际将该数据缓存到该结构中的情况下,目录条目也是可以被分配的并且也可以使用。
使得数据条目的内容或状态改变的高速缓存结构122的操作导致经由本地缓冲池向量117A…117N使得本地拷贝无效。所缓存的数据可以处于被改变的状态或者未被改变的状态。在某些实现中,如果所缓存的数据被改变,那么该高速缓存结构122内的数据版本就取代其它介质上的任何版本。可以为被改变的数据执行来自该高速缓结构122的抛弃操作。在某些实现中,串行化机制确保了多个DBMS构件110A…N不执行给定数据对象的并发抛弃。把该高速缓存结构122内的所有被改变的数据对象指定给一抛弃类。
数据区132是在高速缓存内的存储了用户数据的区域。由软件指定的名称来标识缓存在该共享高速缓存内的数据对象。因此,对于该共享高速缓存内数据的读或写的任何请求都指定了作为该请求的对象的数据对象的名称。按惯例用作为读或写命令的对象的该数据对象的名称来给该目录编制索引。
抛弃类控制块134包括用于与该高速缓存结构相关联的各个抛弃类的抛弃类控制块。根据本发明的原理,每个抛弃类控制块都具有指向对应于那一抛弃类的被改变的数据元素的目录条目的数据结构的指针。
当访问一数据对象(例如,为了改变该数据对象)时,DBMS构件110A…110N试图从本地缓冲池116A…116N中读取该数据对象。DBMS构件110A…110N使用本地缓冲池向量117A…117N来确定该数据是否在本地缓冲池116A…N内以及是否有效。如果该数据在本地缓冲池116A…116N内,并且尚未被无效掉,那么该数据对象就是可用的,并且不要求读取。如果该数据对象已被无效掉,那么DBMS构件110A…110N试图从共享外部存储器120的高速缓存结构122中读取该数据对象。该共享外部存储器120确定该数据对象在高速缓存结构122是否可得到。如果该数据对象在该高速缓存结构122内,则共享外部存储器120把该数据对象返回给DBMS构件110A…110N。如果该数据对象不在该高速缓存结构122内,则DBMS构件从盘104读取该数据对象。
本发明的实现使得更加有效的数据传送成为可能。具体地,DBMS构件110A…N用一条单独的命令,为了便于引用这里将把该命令称为“批量写命令”,把多个数据对象从本地缓冲池116A…N写到高速缓存结构122。另外,DBMS构件110A…N用一组包含用于把数据从高速缓存结构122带到处理器存储器119A…N内的一条单独的命令,为了便于引用这里将把该命令称为“批量抛弃命令”的命令来把多个数据对象从高速缓存结构122抛弃到盘104。对于该抛弃过程,发布另一命令以把该数据对象从处理器存储119A…N写到盘104上,并且这是一个相互独立的I/O过程。此外,每个DBMS构件110A…N发布一条单独的交叉无效命令以便使其它DBMS构件110A…N的本地缓冲池116A…N内的多个数据对象无效,为了便于引用这里将把该交叉无效命令称为“批量交叉无效命令”。
图2A说明了根据本发明某些实现的被实现来使用批量写命令的逻辑。控制从一个或多个事务改变DBMS构件110A…N之一的本地缓冲池116A…N内的数据对象在方框200开始。在提交一个或多个事务时或之前,在方框210内,DBMS构件110A…110N向具有被改变的数据对象清单的共享外部存储器120发布一个批量写命令。将把该被改变的数据对象写入该共享外部存储器120,以便被其它DBMS构件110A…110N访问。该批量写命令指定了标识被改变的数据对象的事务数据对象清单。在某些实现中,一旦发送了该批量写命令,在中央处理单元114A…114N上执行的操作系统115A…N就把该事务数据对象清单上所标识的数据对象发送到共享外部存储器120。
在某些实现中,DBMS构件110A…110N通过使用一事务数据对象清单(例如,事务页清单或TPL)118A…118N来完成该多个数据对象的写入。该事务数据对象清单记录所有的对于一给定事务的被改变的数据对象。在事务提交时或之前,取代每次处理一个事务数据对象清单条目来写该被改变的数据对象,用批量写命令提交多个事务数据对象清单条目(此处,每个事务数据对象清单条目都对应于一被改变的数据对象),以把所有这些数据对象写入一条单独的命令,从而实现比每次一页的写更好的性能。
在某些实现中,数据对象清单条目的第一个“M”数字被用来标识要被写的多个数据对象(其中M可以是1至任何更大的数字)。在某些实现中,256个数据对象清单条目可以被写入,假如没有数据对象与它们相关联,,或是较少数的数据对象清单条目可被写入,假如一个或多个条目具有与它们相关联的数据对象。在某些实现中,M=15页,并且每一页的大小为4096字节,以及一条命令上的数据传送的总数被限制为64K字节,包括指定要写入的条目以及还与那些条目相关联的数据对象的控制。
处理器140接收和处理批量写命令以把多个数据对象存入高速缓存结构122(方框220)。具体地,处理器140接收已存入本地缓冲池116A…N内的多个数据对象并为高速缓存结构122内的该数据对象寻找空间。对于每个被改变的数据对象,处理器140向在该数据对象内注册兴趣的每个DBMS构件110A…N发出交叉无效命令(方框230)。在某些实现中,响应于该交叉无效信号,在DBMS构件110A…110N上的硬件起到设置本地缓冲池向量117A…N内的位的作用。由此,通过用该批量写命令来把多个数据对象从本地缓冲池116A…N写到高速缓存结构122内而实现改进的性能。
图2B说明根据本发明某些实现的批量写命令的输入240及输出270。在某些实现中,批量写命令把输入240把输入240视为被划分成两部分的输入数据缓冲器250。第一部分为写操作框的清单252(WOB)(例如,高达256个)并且它描述要被写的每一条目。每条目的说明包括例如条目的名称,存储器及抛弃类信息,被改变/未被改变的指示器,本地缓冲器注册信息,以及附加区域。第二部分为要被写到指定条目的条目数据内容的清单254。该输入也将包含清单索引的起点256以及清单索引的终点258,它们将含有处理应该开始处的输入数据块内的WOB的索引以及处理应该结束处的输入数据块内的WOB的索引。此外,输入240包含数据偏移260,它包含在输入数据块内第一数据区的偏移量。输出270包含写操作响应块区域(WORBAREA)280,该区域含有用于每个被返回的并表示各个写的结果的WOB的写操作响应块(WORB)的清单。
在某些实现中,如果WOB内的所有条目都不能被处理,则批量写命令可以超时并由DBMS重新驱动。当该命令以“超时”响应码完成时,把当前的索引以及当前的数据偏移输出设置成表示WOB清单以及数据条目内容清单内的“下一个”(第一未被处理的)条目的值。用于超时响应的输出可以包括响应码,当前索引,以及当前数据偏移。DBMS能够把这些输出值传回作为下条批量写命令上的输入(清单索引的起点,数据偏移),以从其停止处继续清单的处理。此外,批量写命令在处理清单内的特定条目时会遇到错误。在此情形下,该批量写命令可以被设计成随表明特定错误的错误响应码(如果需要)而过早地停止处理,以及使用当前索引以及当前数据偏移输出值来告诉DBMS该错误发生地方的该清单内的条目及数据区。照这样,DBMS可以通过以从错误发生处的条目之后的条目开始继续处理清单来处理在处理该清单内的特定条目时所遇到的错误。与批量写命令相关联的响应码可以包括处理完成(成功);与模型相关的超时(超时)已发生;不相容状态(错误);目标存储器类满(错误);版本号失配(错误);分配被抑制(错误);数据区大小失配(错误);无效的本地高速缓存标识符(错误);无效的数据区大小(错误);无效的存储器类(错误);无效的抛弃类(错误);以及无效的抛弃奇偶位(错误)。
在本发明的某些实现中,在其中使用批量写命令来把数据对象写入共享外部存储器120的情形中,用于繁重的批量插入工作量的多系统数据共享开销被减少了57%。
例如,银行申请的事务正在改变DBMS构件110A的本地缓冲池116A内的每个帐户持有人的记录是有可能的。也许存在要加以改变的跨越500,000页的一百万条记录。一旦该事务提交,就使用批量写命令来把被改变的页从本地缓冲池116A写到共享外部存储器120的高速缓存结构122。
对于“提交时强制”缓冲器写协议(它被用于z/OS的DB2所使用),在该事务释放它的锁之前,在提交时或提交之前写入该被改变的数据对象。就是说,DBMS构件110A…N能够异步地把被改变的数据对象写到事务的执行。而且,当写数据对象时,该数据对象可以包含来自多个事务的改变。能够用诸如本地缓冲池阈值或系统检验点这样的事件来触发该异步写。实际上,当事务改变一单独的提交范围内的许多数据对象时,很可能大多数数据对象将被异步地写,并且仅有几个数据对象将需要在提交的时候被写。该批量写命令可在异步(即,由于阈值或系统检验点的背景下被写入的数据对象)及同步(即,在提交时被写的数据对象)这两种情形中由DBMS所使用。这样就由于主系统上所减少的CPU开销而导致了改进的性能。
存在被称作“非强制”的另一种缓冲器写协议。用该“非强制”协议,被改变的数据对象不需按提交时间写,但是被改变的数据对象却能够在提交后以“脏”(即,被改变)状态保持在本地缓冲池116A…N内,并且该数据对象受到该数据对象上的“懒惰锁”的保护(即,保持在一被改变的缓冲器过去提交上的锁,这样该锁不被该事务所占有而是由DBMS构件110A…N所占有)。对于“非强制”,几乎与该事务的执行完全异步地进行缓冲器的写。但是就像使用“提交时强制”协议一样,该“非强制”协议最终写入该数据对象(例如,当另一个DBMS构件110A…N想改变该数据对象时),并因此该批量写命令也适用于该“非强制”协议。该批量写命令是传送被改变的数据对象同时维护对于共享盘DBMS环境的缓冲器相干性,而不考虑“提交时强制”或“非强制”协议的更为有效的技术。
在某些实现中,使用试探法(例如,CPU成本)来确定何时更有效地使用批量写命令与每次一页写命令(即,几个单独的写命令)。本发明的技术适用于单工及双工共享外部存储器120结构这两者。用单工结构,不提供数据的冗余双工拷贝。用双工结构,提供数据的冗余双工拷贝。
图3A说明了根据本发明某些实现的使用批量交叉无效命令的逻辑。DBMS构件110A…N使用批量交叉无效命令来有效地交叉无效未被缓存在共享外部存储器120内,并且由此,未被使用该批量写命令在事务提交时写出到该共享外部存储器120的被改变的数据对象。当共享外部存储器120处理一个批量写命令或批量交叉无效命令时,使用一条单独的共享外部存储器120命令来把许多交叉无效请求从DBMS构件110A…N发送到该共享外部存储器120。不过,该共享外部存储器120将准确地执行每次由该处理产生的所有必要的DBMS构件的110A…N本地高速缓存向量条目的本地缓冲池向量117A…N交叉无效。共享外部存储器120已经具有对于发送这些交叉无效信号时的并行性的支持,不过,在某些实现中,它们不被批处理。
当被改变的数据被直接写到盘上时,由DBMS构件110A…N使用批量交叉无效命令,并且共享外部存储器120仅用于缓冲器无效。用于z/OS的DB2具有被称作‘GBPCACHE’的选项以允许用户控制它。目前,当GBPCACHE选项与NO一起使用作为一个输入参数(即,“GBPCACHENO”)时,数据不被缓存并且DBMS构件110A…N在提交时或提交前把被改变的数据写到盘104上(方框300)。在写该数据对象后,DBMS构件110A…N向具有数据对象清单的共享外部存储器120发布交叉无效请求,以发送用于每个数据对象的交叉无效信号(方框310)。用该批量交叉无效命令,DBMS构件110A…N现在能够发布一条共享外部存储器120命令,以发送用于多个数据对象的交叉无效信号。共享外部存储器120从该批量交叉无效命令中接收数据对象的清单,并且然后每次给一个数据对象发送该交叉无效信号(方框320)。
该批量交叉无效命令,像该批量写和批量抛弃命令一样,通过节省主CPU周期而允许更好的性能,这是由于它对于主机发送一条用于多个数据对象的共享外部存储器120命令而不是用于每个数据对象的一条命令更为有效。在本发明的某些实现中,在其中数据库数据对象不被缓存在共享外部存储器120内的情形中,开销被减少了37%。
图3B说明了根据本发明某些实现的批量交叉无效命令的输入340。在某些实现中,该批量交叉无效命令把输入340看作包含要被处理的名称清单352(例如,高达4096)的数据缓冲器350。该输入还将包含清单索引的起点356及清单索引的终点358,它们含有处理应该开始处的输入数据块内条目名的索引以及处理应该结束处的输入数据块内条目名的索引。该输入还可以包含在未发现条目的情况下将指定处理是否将继续到该输入数据块内的下个名称的错误动作关键字360。在某些实现中,对于该批量交叉无效命令不存在输出。
在某些情形中,“批量交叉无效”命令也许不能处理在一单独的请求内的全部名称清单。为了处理这种情况,“批量交叉无效”命令可被设计成(如果需要)超时并由DBMS重新驱动,从先前的循环上它停止处开始。为了实现该超时处理,该批量交叉无效命令可以产生以下输出,响应码以及当前索引。当该批量交叉无效命令以“超时”响应码完成时,把当前的索引输出设置成表明该名称清单内的“下一个”(未被处理的第一个)条目的值。该DBMS能够把该输出值传回作为下条命令上的输入(清单索引的起点),以从它停止处继续该清单的处理。
此外,该批量交叉无效命令在处理该清单内的特定条目时会遇到错误。为了处理这种错误,该批量交叉无效命令可以被设计成(如果需要的话)随表明该特定错误的错误响应码而过早地停止处理,以及使用当前索引来告诉DBMS该错误发生地方的该清单内的条目,以便允许该DBMS来处理在处理该清单内的特定条目时所遇到的错误,并且然后以发生该错误的地方的条目后的条目开始继续处理该清单。与该批量交叉无效命令相关联的响应码可以包括处理完成(成功);与模型有关的超时发生(超时);以及名称未发现(错误)。
图4A说明了根据本发明某些实现的被实现来使用批量抛弃命令的逻辑。在方框400,内控制从DBMS构件110A…110N向具有对将被从高速缓存结构122中读出的数据对象的抛弃请求清单的共享外部存储器120发布批量抛弃命令开始。在某些实现中,在该共享外部存储器120内为将被抛弃的每个数据对象设置抛弃(CO)指示器(也把它称作为抛弃锁),以阻止一个以上的DBMS构件110A…110N试图抛弃同一数据对象。对于读或写,该抛弃数据对象可以仍然可被访问。处理器140处理该批量抛弃命令(方框410)。具体地,该批量抛弃命令的处理导致了来自该清单的各个单独的抛弃请求,适当地为该抛弃而给条目加锁,积累在组合响应内该条目的要被的数据,以及返回在该组合响应内的总和读取信息。从而,多个数据对象被从高速缓存结构122返回到处理器存储器119A…119N。在方框420内,该DBMS构件110A…110N把该数据对象从处理器存储器119A…119N写到盘104上。当设置抛弃锁时,DBMS构件110A…110N释放该抛弃锁。在某些实现中,用批处理的一条解锁抛弃锁命令(可从国际商业机器公司得到)来释放该抛弃锁。
图4B说明了根据本发明某些实现的批量抛弃命令的输入440及输出470。在某些实现中,该批量抛弃命令把输入440看作含有由CASTOUTLIST指定的要为抛弃而读取的条目名称452(例如,多达8个)的清单的输入数据缓冲器450。该输入还将包含清单索引的起点456及清单索引的终点458,它们将含有处理应该开始处的输入数据块内条目名的索引以及处理应该结束处的输入数据块内条目名的索引。可选地,PROCESSID460能够被指定以便与在该请求上获得的用于抛弃锁的连接标识符一起放到该抛弃锁内。而且,输出470包括含有为该清单内的每一条目所读取的信息的一输出数据缓冲器480。具体地,输出数据缓冲器480包括具有条目控制的目录条目信息块482(DEIB)的一个或多个实例(仅示出一个),附加区域484(如果给出),以及将包含为输入清单452内的每一条目所读取的数据的条目数据内容486。
在某些情形中,该批量抛弃命令也许不能处理在一单独的CF批量抛弃请求内的全部名称清单。为了处理这些错误,该批量抛弃命令可以被设计成(如果需要)超时并由DBMS重新驱动,从先前的循环上该命令停止处开始。为了实现这一点,该命令输出可以包括一响应码以及当前索引。当该批量抛弃命令以“超时”响应码完成时,把当前的索引输出设置成表明该名称清单内的“下一个”(未被处理的第一个)条目的值。该DBMS能够把该输出值传回作为下条批量抛弃命令上的输入(清单索引的起点),以从该命令结束处继续该清单的处理。此外,该批量抛弃命令在处理该清单内的特定条目时会遇到错误。为了处理这些错误,该批量抛弃命令可被设计成(如果需要)随表明该特定错误的错误响应码而过早地停止处理,以及使用当前索引来告诉DBMS该错误发生的地方的该清单内的条目,以便允许该DBMS处理在处理该清单内的特定条目时所遇到的错误,并且然后从碰见该错误的条目后的条目开始继续处理该清单。该批量抛弃命令可与以下响应码相关联有关处理完成(成功);与模型相关的超时已发生(超时);数据未被改变(错误);名称未被列在目录内(错误);已为抛弃而对数据加锁(错误);数据块满(错误);不足的数据块(错误);以及不足的消息缓冲器空间(错误)。
在某些实现中,根据被改变数据的对象阈值,诸如抛弃类的阈值或高速缓存结构的阈值来安排抛弃。抛弃安排在IBM系统杂志1997年第2期第36卷上由Jeffrey W.Josten所著的“DB2’s use of theCoupling Facility for Data Sharing”作了进一步描述,该文在此引入以供参考。
因而,在本发明的某些实现中,使用了允许在一条单独的命令内写多个数据库数据对象的共享外部存储器120命令。当事务改变了属于同一对象的多个数据对象时,通过使用一条单独的批量写命令来把多个数据对象写到共享外部存储器120(取代对于每一数据对象使用一条单独的写命令)来减少多系统数据共享开销。在某些实现中,该批量写命令是在国际商业机器公司的耦合设施内可获得的Write AndRegister Multiple(WARM)命令。
而且,由于数据对象被从共享外部存储器120抛弃到处理器存储器119A…N,因此通过使用该批量抛弃命令来把多个数据对象从共享外部存储器120读入具有一条单独的命令的处理器存储器119A…N(取代对于每个数据对象使用一条单独的读命令)而可以用较少的CPU消耗来执行DBMS构件110A…N的抛弃处理。在某些实现中,该批量写命令是在国际商业机器公司的耦合设施内可获得的Read For CastoutMultiple(RFCOM)。
在某些实现中,对于未被缓存在该共享外部存储器内的数据库对象,本发明的某些实现并入了批量交叉无效命令的使用,以交叉无效具有一单独的共享外部存储器命令的数据对象的清单(取代对于每个数据对象使用一条单独的交叉无效命令)。在某些实现中,该批量交叉无效命令是在国际商业机器公司的耦合设施内可获得的InvalidateComplement Copies List(ICCL)命令。
因而,在存在相对很大型数据库的激活的繁重的改变和/或插入活动的应用情况中共享的多系统DBMS数据的CPU开销得以减少。这例如对于银行业及电信顾客装置特别有用。
本发明的某些实现管理本地缓冲池以及共享存储器高速缓存结构122,以模仿盘的I/O是如何工作的,而不是模仿当执行批量写以及批量抛弃命令时本地缓冲池是如何工作的。为了保持性能,高速缓存相干性问题已经被使用很高速度的,低等待时间的系统间通信协议解决了。
DB2以及z/OS是国际商业机器公司的商标。Unix是The Open Group的商标。Windows是微软公司的商标。Linux是Linus Torvalds的商标。
附加的实现细节所描述的用于保持网络组件上的信息的技术可以作为方法、装置或使用生产软件、固件、硬件、或它们的任何组合的标准编程和/或工程技术而制造的物品来实现。这里所使用的术语“制造的物品”涉及以硬件逻辑(例如,集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC)等等)或计算机可读介质诸如磁存储介质(例如,硬盘驱动器、软盘、磁带等等)、光存储器(CD-ROM、光盘等等)、易失性及非易失性存储器设备(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、固件、可编程逻辑等)所实现的代码或逻辑。计算机可读介质内的代码由处理器存取和执行。其中实现优选实施例的代码还可以通过传输媒体或从网络上的文件服务器存取。在这种情形中,其中实现该代码的制造的物品可以包含诸如网络常数线的传输媒体、无线传输媒体、通过空间、无线电波而传播的信号、红外信号等等。因而,“制造的物品”可以含有其中包含代码的介质。另外,“制造的物品”可以含有其中代码被包含、处理及执行的硬件与软件组件的组合。当然,本领域的那些技术人员将意识到可以对该结构做出许多修改而不脱离本发明的范围,而且制造的物品可以含有本领域所公知的任何信息承载媒介。
图2A、3A、以及4A的逻辑描述了以特定次序发生的特定操作。在另外的实现中,可以以不同的次序,修改的或去除的,执行某些逻辑操作。而且,可以将步骤加到上述逻辑上并仍然符合上述实现。此外,这里所描述的操作可以顺序地发生或者某些操作可以被并行处理,或者描述为由一单独的过程所执行的操作可以由分布式过程来执行。
图2A,3A,以及4A的逻辑被描述为以软件来实现。该逻辑可以是主系统的操作系统的一部分或应用程序。在还进一步的实现中,该逻辑可以保持在由控制单元所管理的存储区内或是保持在只读存储器或其他硬连线型设备内。优选逻辑可以以硬件或以可编程及不可编程门阵列逻辑实现。
图5说明了DBMS构件110A…110N和/或共享外部存储器120的体系结构的一种实现。DBMS构件110A…110N和/或共享外部存储器120计算机结构500具有处理器502(例如,一微处理器),存储器504(例如,一易失性存储设备),以及存储器506(例如,一非易失存储器,诸如磁盘驱动器,光盘驱动器,磁带驱动器,等等)。存储器506可包含一内部存储设备或是一被附连的或网络可访问的存储器。把存储器506内的程序装载到存储器504内,并由处理器502按本领域内所公知的一种方式来执行。该体系结构进一步包括启用与网络通信的一网卡508。输入设备510被用来向处理器502提供用户输入,并可以包括键盘,鼠标,笔型指示笔,麦克风,触敏式显示屏,或本领域内所公知的其它任何激活或输入机制。输出设备512能够再现从处理器502,或其它组件,诸如显示监视器,打印机,存储器,等等所传送的信息。
出于说明及描述目的而给出了上面的本发明优选实现的描述。这并不试图穷尽地或是把本发明限制到该公开的精确形式上。依据上述教导,许多修改和变化都是可能的。旨在本发明的范围应该不受该详细描述的限制,而是由所附带的权利要求书所限制。上述说明,举例以及数据提供了本发明组成的制造及使用的完整描述。由于能够做出本发明的许多实现而不脱离本发明的精神和范围,因此本发明在于此后附带的权利要求书。
权利要求
1.一种传送数据的方法,包括标识已由一个或多个事务改变的多个数据对象;以及使用批量写命令来把该多个数据对象从本地存储器传送到共享高速缓存结构。
2.权利要求1的方法,其中该多个数据对象被使用事务数据对象清单来加以标识。
3.权利要求1的方法,其中该批量写命令被与“提交时强制”协议一起使用。
4.权利要求1的方法,其中该批量写命令被与“非强制”协议一起使用。
5.权利要求1的方法,进一步包括使用试探法来确定是使用该批量写命令还是使用几个单独的写命令。
6.权利要求1的方法,其中该批量写命令把输入看作含有描述要被写的条目的写操作块清单、要被写的条目数据内容清单、清单索引的起点、清单索引的终点、以及数据偏移的输入数据缓冲器,并返回作为输出的用于每个写操作块的写操作响应块的清单,该清单表明每个写操作块的结果,其中每一条目都被与该数据对象中的一个相关联。
7.一种传送数据的方法,包括当把第一系统上的未被缓存在共享高速缓存内的被改变的数据对象传送到盘上时,发送标识该被传送到盘上的被改变的数据对象的一条批量交叉无效命令。
8.权利要求7的方法,其中该批量交叉无效命令使第二系统上的被改变的数据对象无效。
9.权利要求7的方法,进一步包括接收共享外部存储器上的该批量交叉无效;以及每次给一个数据对象发送该交叉无效信号。
10.权利要求7的方法,其中该批量交叉无效命令把输入看作包含条目清单、清单索引的起点、以及清单索引的终点的数据缓冲器,其中每一条目都被与该数据对象中的一个相关联。
11.一种传送数据方法,包括使用一条单独的批量抛弃命令来把多个数据对象从高速缓存结构传送到处理器存储器;以及把多个数据对象从该处理器存储器传送到盘上。
12.权利要求11的方法,其中该批量抛弃命令把输入看作要为抛弃而读取的条目的清单、清单索引的起点、清单索引的终点、以及含有为该清单内的每个条目所读取的信息的输出缓冲器,其中这些条目中的每一个都被与该数据对象中的一个相关联。
13.一种传送数据的系统,包括用于标识已由一个或多个事务改变的多个数据对象的装置;以及用于使用批量写命令来把该多个数据对象从本地存储器传送到共享高速缓存结构的装置。
14.权利要求13的系统,其中该多个数据对象被使用事务数据对象清单来加以标识。
15.权利要求13的系统,其中该批量写命令被与“提交时强制”协议一起使用。
16.权利要求13的系统,其中该批量写命令被与“非强制”协议一起使用。
17.权利要求13的系统,进一步包括用于使用试探法来确定是使用该批量写命令还是使用几个单独的写命令的装置。
18.权利要求13的系统,其中该批量写命令把输入看作含有描述要被写的条目的写操作块清单、要被写的条目数据内容清单、清单索引的起点、清单索引的终点、以及数据偏移的输入数据缓冲器,并返回作为输出的用于每个写操作块的写操作响应块的清单,该清单表明每个写操作块的结果,其中每一条目都被与该数据对象中的一个相关联。
19.一种传送数据的系统,包括用于当把第一系统上的未被缓存在共享高速缓存内的被改变的数据对象传送到盘上时,发送标识该被传送到盘上的被改变的数据对象的一条批量交叉无效命令的装置。
20.权利要求19的系统,其中该批量交叉无效命令使第二系统上的被改变的数据对象无效。
21.权利要求19的系统,进一步包括用于接收共享外部存储器上的该批量交叉无效的装置;以及用于每次给一个数据对象发送该交叉无效信号的装置。
22.权利要求19的系统,其中该批量交叉无效命令把输入看作包含条目清单、清单索引的起点、以及清单索引的终点的数据缓冲器,其中每一条目都被与该数据对象中的一个相关联。
23.一种传送数据的系统,包括用于使用一条单独的批量抛弃命令来把多个数据对象从高速缓存结构传送到处理器存储器的装置;以及用于把多个数据对象从该处理器存储器传送到盘上的装置。
24.权利要求23的系统,其中该批量抛弃命令把输入看作要为抛弃而读取的条目的清单、清单索引的起点、清单索引的终点、以及含有为该清单内的每个条目所读取的信息的输出缓冲器,其中这些条目中的每一个都被与该数据对象中的一个相关联。
25.一种包括用于传送数据的代码的产品,其中该代码能够引起操作,该操作包括标识已由一个或多个事务改变的多个数据对象;以及使用批量写命令来把该多个数据对象从本地存储器传送到共享高速缓存结构。
26.权利要求25的产品,其中该多个数据对象被使用事务数据对象清单来加以标识。
27.权利要求25的产品,其中该批量写命令被与“提交时强制”协议一起使用。
28.权利要求25的产品,其中该批量写命令被与“非强制”协议一起使用。
29.权利要求25的产品,该操作进一步包括使用试探法来确定是使用该批量写命令还是使用几个单独的写命令。
30.权利要求25的产品,其中该批量写命令把输入看作含有描述要被写的条目的写操作块清单、要被写的条目数据内容清单、清单索引的起点、清单索引的终点、以及数据偏移的输入数据缓冲器,并返回作为输出的用于每个写操作块的写操作响应块的清单,该清单表明每个写操作块的结果,其中每一条目都被与该数据对象中的一个相关联。
31.一种包括用于传送数据的代码的产品,其中该代码能够引起操作,该操作包括当把第一系统上的未被缓存在共享高速缓存内的被改变的数据对象传送到盘上时,发送标识该被传送到盘上的被改变的数据对象的一条批量交叉无效命令。
32.权利要求31的产品,其中该批量交叉无效命令使第二系统上的被改变的数据对象无效。
33.权利要求31的产品,进一步包括接收共享外部存储器上的该批量交叉无效;以及每次给一个数据对象发送该交叉无效信号。
34.权利要求31的产品,其中该批量交叉无效命令把输入看作包含条目清单、清单索引的起点、以及清单索引的终点的数据缓冲器,其中每一条目都被与该数据对象中的一个有关。
35.一种包括用于传送数据的代码的产品,其中该代码能够引起操作,该操作包括使用一条单独的批量抛弃命令来把多个数据对象从高速缓存结构传送到处理器存储器;以及把多个数据对象从该处理器存储器传送到盘上。
36.权利要求35的产品,其中该批量抛弃命令把输入看作要为抛弃而读取的条目的清单、清单索引的起点、清单索引的终点、以及含有为该清单内的每个条目所读取的信息的输出缓冲器,其中这些条目中的每一个都被与该数据对象中的一个相关联。
全文摘要
所公开的是用于传送数据的系统,方法及程序。当提交一事务时,标识已由该事务改变的多个数据对象。使用一条批量写命令来把该多个数据对象从本地存储器写到高速缓存结构。当把第一系统上的未被缓存在该共享外部存储器内的被改变的数据对象写到盘上时,使用一条批量交叉无效命令来使第二系统上的数据对象无效。另外,使用一条批量抛弃命令来把多个数据对象从该高速缓存结构读到处理器存储器内。
文档编号G06F12/00GK1489067SQ03156738
公开日2004年4月14日 申请日期2003年9月8日 优先权日2002年9月9日
发明者J·J·坎普贝尔, D·A·埃科, J·W·乔斯坦, H·P·罗伯特斯, D·H·苏尔曼, J J 坎普贝尔, 乔斯坦, 埃科, 罗伯特斯, 苏尔曼 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1