本发明涉及记录锁定管理,并且更具体地,涉及防止长期运行的事务在影响其它事务的延长的时间段内保持记录锁定。
背景技术:
在数据系统内,记录被存储到计算机可读介质,并且可以由数据系统的一个或多个用户访问。每次访问记录时,发布阻止其他用户访问相同记录的记录锁定。对各个记录的这些记录锁定可以被保持,直到被明确地释放。访问许多不同记录的批处理(batch)作业可以将记录锁定保持达延长的时间段,这可能导致等待与记录锁定和/或其它记录锁定资源相关联的底层记录的其它事务(transaction)超时。这个问题在利用跟踪事务的记录(例如财务记录、簿记记录等)的事务数据环境中尤其明显。
在事务数据环境中,保持记录锁定,直到由请求记录锁定的批处理应用发布显式同步(sync)点(通常称为提交或退出),或者直到在批处理应用的结束(称为任务结束(eot))时发布隐式同步点。如果使用事务数据操作的批处理应用不包括提交点,则整个批处理作业可被认为是一个事务,并且由该批处理应用访问的记录的记录锁定可仅在eot时被释放。这有可能导致等待系统中这些记录锁定资源的可能更重要的事务超时。
技术实现要素:
在一个实施例中,方法包括在数据系统的作业控制管理器处接收指定批处理应用的执行的命令。方法还包括在作业控制管理器处接收与批处理应用相关联的提交计数。此外,方法包括启动批处理应用,其中该批处理应用处理一组记录。方法还包括响应于该一组记录中的第一记录被批处理应用处理而锁定该第一记录,条件是除非批处理应用已经完成了处理一组记录中的最后一个记录,否则批处理应用不使第一记录被解锁。此外,方法包括响应于批处理应用已经完成对一组记录的第n个记录的处理,提交一组记录中由于批处理应用的执行而导致被锁定的所有记录。在该实施例中,n等于提交计数。
在另一实施例中,计算机程序产品包括具有随其体现的程序指令的计算机可读存储介质。计算机可读存储介质本身不是暂态信号,并且所体现的程序指令可由处理电路执行以使处理电路:通过处理电路在数据系统的作业控制管理器处接收指定批处理应用的执行的命令。此外,程序指令可执行以使处理电路:通过处理电路在作业控制管理器处接收与批处理应用相关联的提交计数。此外,程序指令可执行以使处理电路:通过处理电路启动批处理应用,该批处理应用处理一组记录。此外,程序指令可执行以使处理电路:通过处理电路响应于一组记录中的第一记录被批处理应用处理而锁定第一记录,条件是除非批处理应用已经完成了处理一组记录中的最后一个记录,否则批处理应用不使第一记录被解锁。此外,程序指令可执行以使处理电路:响应于批处理应用已经完成对一组记录中的第n个记录的处理,通过处理电路提交一组记录中由于批处理应用的执行而导致被锁定的所有记录。在该实施例中,n等于提交计数。
在又一实施例中,系统包括处理电路、存储器和存储到存储器的逻辑,逻辑在由处理电路执行时使处理电路在数据系统的作业控制管理器处接收指定批处理应用的执行的命令。逻辑还使得处理电路在作业控制管理器处接收与批处理应用相关联的提交计数,并且启动批处理应用,其中批处理应用处理一组记录。此外,逻辑使处理电路响应于一组记录中的第一记录被批处理应用处理而锁定第一记录,条件是除非批处理应用已经完成了处理一组记录中的最后一个记录,否则批处理应用不使第一记录被解锁。此外,逻辑使处理电路响应于批处理应用已经完成对一组记录中的第n个记录的处理,提交由于一组记录中由于批处理应用的执行而导致被锁定的所有记录。在该实施例中,n等于提交计数。
通过以下详细描述,本发明的其它方面和实施例将变得显而易见,以下详细描述结合附图以示例方式示出本发明的原理。
附图说明
图1a描述了根据本发明实施例的计算节点。
图1b示出了根据一个实施例的网络架构。
图2示出了根据一个实施例的分层数据存储系统。
图3示出了根据一个实施例的并行计算系统。
图4示出了根据一个实施例的方法的流程图。
具体实施方式
以下描述是出于说明本发明的一般原理的目的,并且不意味着限制在此所要求的发明构思。此外,在此描述的特定特征可以以各种可能的组合和排列中的每一种与其它描述的特征组合使用。
除非本文另外明确定义外,所有术语被赋予最广泛的解释,包括从说明书中隐含的含义以及本领域技术人员理解和/或如字典、专著等所定义的含义。
还须注意,除非另有说明外,如说明书和所附权利要求书中所使用的,单数形式“一”、“一个”和“该”包括复数指示物。进一步将理解,在本说明书中使用术语“包括”和/或“包含”时,指定存在所述特征、整数、步骤、操作、元素和/或组件,但不排除存在或额外存在一个或多个其它特征、整数、步骤、操作、元素、组件和/或其组合。如本文所用,术语"约"表示前面有术语"约"的值,以及与前面有术语"约"的值合理地接近的任何值,如本领域技术人员将理解的。当没有另外指明时,术语"约"表示前面有术语"约"的值的±10%的值。例如,"约10"表示9.0至11.0的所有值,并包括这些值。
以下描述公开了用于防止长期运行的事务持有记录锁定的系统、方法和计算机程序产品的若干优选实施例。
在一个通用实施例中,方法包括在数据系统的作业控制管理器处接收指定批处理应用的执行的命令。方法还包括在作业控制管理器处接收与批处理应用相关联的提交计数。此外,方法包括启动批处理应用,其中批处理应用处理一组记录。方法还包括响应于一组记录中的第一记录被批处理应用处理而锁定第一记录,条件是除非批处理应用已经完成了处理一组记录中的最后一个记录,否则批处理应用不使第一记录被解锁。此外,方法包括响应于批处理应用已经完成对一组记录中的第n个记录的处理,提交一组记录中由于批处理应用的执行而导致被锁定的所有记录。在该实施例中,n等于提交计数。
在另一通用实施例中,计算机程序产品包括计算机可读存储介质,计算机可读存储介质具有随其体现的程序指令。计算机可读存储介质本身不是暂态信号,并且所体现的程序指令可由处理电路执行以使处理电路:通过处理电路在数据系统的作业控制管理器处接收指定批处理应用的执行的命令。此外,程序指令可执行以使处理电路:通过处理电路在作业控制管理器处接收与批处理应用相关联的提交计数。此外,程序指令可执行以使处理电路:通过处理电路启动批处理应用,批处理应用处理一组记录。此外,程序指令可执行以使处理电路:通过处理电路响应于一组记录中的第一记录被批处理应用处理而锁定第一记录,条件是除非批处理应用已经完成了处理一组记录中的最后一个记录,否则批处理应用不使第一记录被解锁。此外,程序指令可执行以使处理电路:响应于批处理应用已经完成对一组记录中的第n个记录的处理,通过处理电路提交一组记录中由于批处理应用的执行而导致被锁定的所有记录。在该实施例中,n等于提交计数。
在又一通用实施例中,系统包括处理电路、存储器和存储到存储器的逻辑,逻辑在由处理电路执行时使处理电路在数据系统的作业控制管理器处接收指定批处理应用的执行的命令。逻辑还使得处理电路在作业控制管理器处接收与批处理应用相关联的提交计数,并且启动批处理应用,其中批处理应用处理一组记录。此外,逻辑使处理电路响应于一组记录中的第一记录被批处理应用处理而锁定第一记录,条件是除非批处理应用已经完成了处理一组记录中的最后一个记录,否则批处理应用不使第一记录被解锁。此外,逻辑使处理电路响应于批处理应用已经完成对一组记录中的第n个记录的处理,提交一组记录中由于批处理应用的执行而导致被锁定的所有记录。在该实施例中,n等于提交计数。
参考图1a,示出了根据一个实施例的计算节点10的示例的示意图。计算节点10仅是合适的计算节点的一个示例,而不旨在对本文描述的本发明的实施例的使用范围或功能提出任何限制。无论如何,计算节点10能够被实现和/或执行本文阐述的任何功能。此外,计算节点10可以被包括在如本文所描述的和/或本领域技术人员公知的任何系统、网络、云、集群和/或数据存储环境中。
在计算节点10中,存在计算机系统/服务器12,其可与许多其它通用或专用计算系统环境或配置一起操作。适合与计算机系统/服务器12一起使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户端、厚客户端、手持式设备、膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消耗电子产品、网络个人计算机(pc)、小型计算机系统、大型计算机系统、以及包括任何上述系统或设备的分布式云计算环境等。
计算机系统/服务器12可以在计算机系统可执行指令的一般上下文中描述,诸如由计算机系统执行的程序模块。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器12可以在分布式云计算环境中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
如图1a所示,计算节点10计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器,处理电路和/或处理单元(统称为处理器16),系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。
计算机系统/服务器12典型地包括多种计算机可读存储介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机可读存储介质,例如随机存取存储器(ram)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机刻度存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁存储介质(图中未显示,通常称为“硬盘驱动器”或“固态驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个计算机程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
计算机系统/服务器12可以具有驻留在其上的操作系统,例如microsoft
图1b示出了根据一个实施例的架构100。图1a所示的计算节点10可在图1b所示的体系结构100中使用。此外,架构100可包括多个远程网络102,包括第一远程网络104和第二远程网络106。网关101可以耦合在远程网络102和邻近网络108之间。在本架构100的上下文中,网络104、106各自可以采用任何形式,包括但不限于lan、诸如互联网的wan、公共交换电话网(pstn)、内部电话网等。
在使用中,网关101用作从远程网络102到邻近网络108的进入点。这样,网关101可以用作路由器,其能够引导到达网关101的给定数据分组;以及交换机,其针对给定的分组提供进出网关101的实际路径。
还包括至少一个数据服务器114,其耦合到邻近网络108,并且可以经由网关101从远程网络102进行访问。应该注意,(多个)数据服务器114可以包括任何类型的计算设备/组件。多个用户设备116耦合到每个数据服务器114。用户设备116还可以通过网络104、106、108中的一个网络直接连接。此类用户设备116可以包括台式计算机、膝上型计算机、手持式计算机、打印机和/或任何其它类型的逻辑。应当注意,在一种方式中,用户设备111也可以直接耦合到任何网络。
外围设备120或一系列外围设备120(例如,传真机、打印机、联网和/或本地存储单元或系统等)可以耦合到网络104、106、108中的一个或多个网络。注意,数据库和/或附加组件可以与耦合到网络104、106、108的任何类型的网络元件一起使用或集成到任何类型的网络元件中。在本说明书的上下文中,网络元件可以指示任何网络组件。
根据一些方式,在此描述的方法和系统可以用虚拟系统和/或模拟一个或多个其它系统的系统(诸如模拟ibmz/os环境的unix系统、虚拟地托管microsoftwindows环境的unix系统、模拟ibmz/os环境的microsoftwindows系统等)实现,和/或在虚拟系统和/或模拟一个或多个其它系统的系统上实现。在一些实施例中,可以通过使用vmware软件或一些其它已知虚拟层来增强该虚拟化和/或模拟。
在更多的方式中,一个或多个网络104、106、108可以表示通常被称为“云”的系统集群。在云计算中,诸如处理能力、外围设备、软件、数据、服务器等的共享资源以按需关系提供给云中的任何系统,从而允许跨许多计算系统访问和分配服务。云计算通常涉及在云中操作的系统之间的互联网连接,但是也可以使用其它连接系统的技术。
现在参考图2,示出了根据一个实施例的分层存储系统200。注意,根据各种实施例,图2中所示的一些元件可以被实现为硬件和/或软件。存储系统200可包括存储系统管理器212,用于与至少一个较高存储层202和至少一个较低存储层206上的多个媒体通信。存储系统管理器还可以包括用于管理作业请求的作业控制管理器,如在此根据各种实施例更详细地描述的。较高存储层202优选地可以包括一个或多个随机存取和/或直接存取介质204,例如非易失性存储器(nvm)、固态驱动器(ssd)中的固态存储器、闪存、ssd阵列、闪存阵列、硬盘驱动器(hdd)中的硬盘等,和/或本文提到的或本领域已知的其它介质。较低存储层206优选地可以包括一个或多个较低性能的存储介质208,包括较慢存取的hdd、诸如磁带驱动器中的磁带和/或光学介质等的顺序存取介质,和/或本文所述或本领域已知的其它介质。一个或多个附加存储层216可以包括系统200的设计者所期望的存储存储器介质的任何组合。此外,较高存储层202和/或较低存储层206中的任何一个可以包括存储设备和/或存储介质的某种组合。
存储系统管理器212可以通过网络210(诸如图2中所示的存储区域网络(san)或一些其它合适的网络类型)与较高存储层202和较低存储层206上的存储介质204、208进行通信。存储系统管理器212还可以通过主机接口214与一个或多个主机系统(未示出)通信,该主机接口可以是或可以不是存储系统管理器212的一部分。存储系统管理器212和/或存储系统200的任何其它组件可以以硬件和/或软件来实现,并且可以利用用于执行指令的本领域中已知类型的处理器(未示出),诸如中央处理器(cpu)、现场可编程门阵列(fpga)、专用集成电路(asic)等。当然,可以使用存储系统的任何布置,这对于本领域技术人员在阅读本说明书后将显而易见。
在更多实施例中,存储系统200可以包括任意数量的数据存储层,并且可以在每个存储层内包括相同或不同的存储存储器介质。例如,每个数据存储层可以包括相同类型的存储存储器介质,例如hdd、ssd、顺序存取介质(磁带驱动器中的磁带、光盘驱动器中的光盘等)、直接存取介质(cd-rom、dvd-rom等)或多个介质存储类型的任何组合。在一个此类配置中,较高存储层202可以包括用于在较高性能的存储环境中存储数据的大部分ssd存储介质的(直到并且包括所有ssd存储介质),并且包括较低存储层206和附加存储层216的其它存储层可以包括用于在较低性能的存储环境中存储数据的ssd、hdd、磁带驱动器等的任何组合。这样,更频繁访问的数据、具有更高优先级的数据、需要更快访问的数据等可以存储到更高存储层202,而不具有这些属性之一的数据可以存储到包括更低存储层206的附加存储层216。当然,本领域技术人员在阅读本说明书时,可以根据本文所呈现的实施例设计多个存储介质类型的许多其它组合,以实现为不同的存储机制。
在一个特定实施例中,存储系统200可以包括ssd和hdd的组合,其中较高存储层202包括ssd(并且可能包括一些缓冲存储器),并且较低存储层206包括hdd(并且可能包括一些缓冲存储器)。根据另一实施例,存储系统200可以包括ssd和具有磁带驱动器的磁带的组合,其中较高存储层202包括ssd(以及可能一些缓冲存储器),并且较低存储层206包括磁带(以及可能一些缓冲存储器)和用于从磁带访问数据的磁带驱动器。在又一实施例中,存储系统200可以包括hdd和磁带的组合,其中较高存储层202包括hdd(以及可能一些缓冲存储器),并且较低存储层206包括磁带(以及可能一些缓冲存储器)。
参考图3,示出了并行计算系统(sysplex)300,其包括多于一个的系统302,例如,系统1302a、系统2302b、...、系统n302n。每个系统包括多个组件。如图3所示,系统1302a包括虚拟电信接入方法(vtam)引擎304,其是保持对终端与应用程序之间的通信的控制的一组程序,并且可以被称为作业控制管理器。系统1302a还包括终端拥有区域(tor)306,其是专用于管理终端网络的客户端信息控制系统(cics)区域,以及多个应用拥有区域(aor)308,例如aor1308a、aor2308b、...、aorn308n。每个aor308专用于为应用提供空间以操作和利用系统的资源。aor308耦合到存储管理子系统(smsvsam)310的数据共享子系统以及系统记录器312。这些组件耦合到多个虚拟存储访问方法(vsam)数据集318、一个或多个网络314以及多个系统记录器数据集316。
该并行系统复合体300可用于提供记录级共享(rls)数据访问,其允许多系统访问vsam数据集,同时确保跨系统锁定和缓冲器无效。rls使用跨系统扩展服务(xes)来执行数据集级别锁定、记录锁定和数据高速缓存。rls在控制间隔级别保持数据一致性。它使用耦合设施(cf)高速缓存作为通过式存储高速缓存。响应于正被写入的数据的控制间隔,将数据写入cf高速缓存和直接存取存储设备(dasd)。这确保cf高速缓存中的故障不会导致vsam数据的丢失。当然,在一些实施例中,可以使用诸如系统1302a的单个系统来提供对vsam数据集318的访问。
现在参考图4,示出了根据一个实施例的方法400。在各种实施例中,方法400可以根据本发明在图1a、1b、2和3等中所描绘的任何环境中执行。当然,如本领域技术人员在阅读本说明书时将理解的,方法400中可以包括比图4中具体描述的操作更多或更少的操作。
方法400中的每个步骤可以由操作环境的任何合适的组件来执行。例如,在各种实施例中,方法400可以部分地或完全地由微处理器、服务器、大型计算机、其中具有一个或多个处理器的处理电路、或包括一个或多个处理器的一些其它设备来执行。可以在任何设备中利用处理电路(例如,以硬件和/或软件实现的并且优选地具有至少一个硬件组件的处理器、芯片和/或模块)来执行方法400的一个或多个步骤。说明性处理器包括但不限于mpu、cpu、asic、fpga等、其组合或本领域已知的任何其它合适的计算设备。
在一个实施例中,操作环境可以包括数据系统,该数据系统可以是环境中的附加系统的集群(例如,sysplex等)中的一者。在另一实施例中,数据系统可以包括服务器、个人计算机、移动设备或能够运行第一过程的任何设备。在又一实施例中,数据系统可以被包括在虚拟存储环境内。例如,数据系统可以是vsam环境的一部分。
如图4所示,方法400可以从操作402开始,其中在数据系统的作业控制管理器处接收指定批处理应用的执行的命令。命令可以具有任何格式,并且可以是本领域已知的任何类型。此外,命令可以从除了启动批处理应用的执行的设备之外的一个或多个物理或虚拟中间设备被转发到作业控制管理器。
作业控制管理器能够并被配置为使用数据系统的各种资源来控制由作业控制管理器接收的作业请求。作业控制管理器可以是本领域已知的任何类型。在各种方法中,作业控制管理器可以分配数据系统的资源以处理接收到的作业请求,在数据系统的有限资源内对作业执行进行优先级排序,并且对接收到的作业请求进行分类以确定要执行的下一作业,从而优化资源的使用和/或遵守由一个或多个系统管理员设置的和/或专用于所请求的作业的控制规范。在一些方式中,作业控制管理器可以利用一个或多个队列来存储接收到的作业请求。
批处理应用可以是任何类型、大小、结构及格式,如所属领域的技术人员所知,且与数据系统及其中操作的设备兼容。例如,批处理应用可以请求访问和/或处理一个或多个记录,该记录存储在数据系统中的一个或多个计算机可读存储介质上,例如ram、rom、hdd、ssd等。访问特定记录包括读取、写入、修改、删除、移动和/或以其它方式操纵特定记录,如本领域已知的。
在操作404中,在作业控制管理器处接收与批处理应用相关联的提交计数。提交计数可以是单个值或多于一个值。在任一情况下,提交计数指示在提交记录之前由批处理应用处理的记录的数量(例如,释放与处理的记录相关联的所有记录锁定)。
在一个实施例中,提交计数可以是表示在提交相关联的记录锁定之前要被处理的记录的最小数量的单个值。例如,作为最小值的提交计数可以具有值1、10、100、200、500、1000等,并且可以是基于为了处理这许多记录而经过的时间量的。提交计数作为最小值指示在提交与其相关联的记录锁定之前处理了至少该许多记录(等于提交计数)(并且可能更多),在对记录的处理已经完成之后记录锁定可能仍然是明显的。
在另一实施例中,提交计数可以是表示在提交相关联的记录锁定之前要被处理的记录的最大数量的单个值。例如,作为最大值的提交计数可以具有值5、10、100、200、500、1000等,并且可以是基于为了处理这许多记录而经过的时间量的。提交计数作为最大值指示在提交与其相关联的记录锁定之前处理了至多该许多记录(等于提交计数)(并且可能更少),在对记录的处理已经完成之后记录锁定可能仍然是明显的。
根据另一实施例,提交计数可以包括多个值,例如最小值和最大值,其表示在提交相关联的记录锁定之前要被处理的记录的最小和最大数量。例如,作为最小值或最大值的提交计数可以具有值1、5、10、100、200、500、1000等,其中最小值小于或等于最大值。在该实施例中,提交计数用作范围,使得记录锁定可以在最小值和最大值之间(并且包括最小值和最大值)的范围内的任何点处被提交。此外,针对最小值和最大值选择的实际值可以基于为了处理记录而经过的时间量。另外,当最小值与最大值相同时,则记录锁定在处理记录的该确切数量时提交。
如上所述,在方法400中,提交计数可以包括两个值:提交之前要被处理的记录的最小数量和提交之前要被处理的记录的最大数量。在该方式中,响应于确定在提交之前要被处理的记录的最小数量等于在提交之前要被处理的记录的最大数量,不跟踪由于批处理应用处理一组记录而等待执行的记录锁定请求的数量,其指示要被处理的记录的最小数量和最大数量的单个值,并且在处理了记录的该确切数量之后,执行提交以释放所有相关联的记录锁定。
在操作406中,由作业控制管理器直接或间接地启动批处理应用。批处理应用处理一组记录,处理包括访问记录。如本领域所公知的,根据批处理应用对记录的访问,为正被处理的记录发布记录锁定。一组记录可以包括从一到几百万的任意数量的记录,这取决于系统处理多个记录的处理的能力以及批处理应用的功能和设计。
另外,在一个实施例中,记录的附加处理可以与数据系统内的一个或多个附加应用相关联。例如,数据系统的第一应用可以对数据系统内的第一记录执行第一处理,并且数据系统的第二应用可以对数据系统内的第二记录执行第二处理。在另一实施例中,第一过程可以包括关于第一记录执行的一个或多个动作。例如,第一过程可以编辑第一记录、移除第一记录、创建第一记录、访问第一记录等。在又一实施例中,第一过程可以是更大的过程集合中的一部分。例如,第一过程可以是要由批处理应用在数据系统内执行的批处理过程的一部分。此外,在一个实施例中,第一过程可以包括事务过程(例如,cics事务等)、子系统过程、批处理过程等。
此外,在一个实施例中,一组记录中的每个记录可以包括能够被数据系统访问的任何数据。在另一实施例中,每个记录可以由数据系统的所有子系统和/或并行系统访问。例如,记录可以包括sysplex中的共享数据。在又一实施例中,记录可包括存储数据(例如,vsam内的虚拟存储数据等)。在又一个实施例中,记录可以存储在sysplex的一个或多个系统内、在与sysplex中的其它系统分离的存储区域内。
可以启动本领域已知的任何批处理应用,诸如处理财务记录、银行记录、人员记录、医疗记录、个人数据记录、社会安全和政府记录等的批处理应用。通过启动(其意指开启批处理应用(例如,执行批处理应用))以便其可以执行包括在批处理应用的代码内的一些或全部功能。
在操作408,响应于一组记录中的第一记录被批处理应用处理而锁定第一记录。此外,在操作408中,除非且直到批处理应用已经完成了处理一组记录中的最后一个记录,否则批处理应用不使第一记录解锁。最后一个记录是指除了被称为最后一个记录的记录之外,该组记录中的所有其它记录都已经被处理。该处理可以根据排队机制(例如先入先出(fifo)、先入后出(filo))按时间顺序、根据大小(最小到最大、最大到最小)、根据记录名称的字母顺序或记录的一些其它属性、或以随机顺序发生。
此外,可以响应于由批处理应用处理的附加记录而锁定这些附加记录。只要批处理应用访问一组记录的额外的记录,该记录锁定过程可以继续。然而,在所有一组记录已经被批处理应用处理后,基于批处理应用对记录的处理来预期不再生成记录锁定。
在该实施例中,针对第一记录的锁定可以包括访问锁定。例如,针对第一记录的锁定可以向批处理应用提供对数据系统及其任何并行系统或子系统内的对第一记录的独占访问。在另一示例中,针对第一记录的锁定可以阻止除批处理应用的过程以外的任何过程访问第一记录。在另一实施例中,批处理应用可以将针对第一记录的锁定保持达预定时间。在又一实施例中,批处理应用可以保持针对第一记录的锁定,直到满足一个或多个预定条标准。例如,针对第一记录的锁定可以由批处理应用保持,直到批处理应用发出命令以在处理完成之后释放该锁定。
在操作410中,响应于批处理应用已经完成对一组记录中的第n个记录的处理,提交一组记录中由于执行批处理应用而锁定的所有记录。通过提交意指对一个或多个受影响的记录进行由批处理应用处理产生的更新和改变,并且释放基于批处理应用的处理而发布的所有记录锁定,使得允许另一过程访问(多个)记录。在一个实施例中,n等于提交计数,并且是正整数,其指示在提交与一组记录相关联的记录锁定之前由批处理应用处理的记录的数量。
例如,在操作410中,假设n等于100,批处理应用将处理100个记录,并且响应于完成对第100个记录的处理,提交一组记录中由于执行批处理应用而被锁定的任何和所有记录,从而释放这些记录锁定。
根据一个实施例,方法400可包括发现存在并跟踪由于批处理应用处理一组记录而等待执行的记录锁定请求的数量。在本说明书中,术语"记录锁定请求"(也称为"等待者")包括记录访问请求和访问资源的任何其它请求,这些请求将导致在一个或多个特定记录上发布记录锁定,这些记录锁定正在等待并且由于与批处理应用所持有的记录锁定的竞争而不能被满足。即,跟踪等待记录锁定请求的存在和数量,其中在可由作业控制管理器访问的一种方式中将该值存储到计算机可读存储介质。
这些未决的记录锁定请求由一个或多个设备(不同于执行方法400的作业控制管理器的物理或虚拟设备)发出,以锁定至少一个记录和/或访问由于批处理应用的执行而已经被锁定的至少一个记录,因此是等待的并且没有被满足。作业控制管理器还可以发出记录锁定请求,该记录锁定请求由于它们由于批处理应用的执行而未被满足而变成未决的(等待者),但是这些未决的记录锁定请求可以为了不同于方法400的批处理应用的另一个应用的利益而发出。
此外,每个等待者可以具有与其相关联的超时值,该超时值指示在超时值之前如果未处理记录锁定则等待记录锁定请求何时将到期。在一个实施例中,与每个等待者相关联的超时值也由作业控制管理器确定,使得作业控制管理器能够确定每个记录锁定请求何时将到期。
这种对等待者的跟踪允许作业控制管理器在批处理应用的执行期间确定批处理应用的执行对访问一组记录中可被无限期地挂起的记录的其它请求的影响。这可能导致另一个应用和/或过程的执行中的严重延迟,该另一个应用和/或过程可能比批处理应用具有更高的优先级,并且因此应比方法400的批处理应用更方便地被处理。
此外,在一个实施例中,多个记录锁定请求可以在队列中进行排队。例如,对第一记录的锁定的第一请求可以在包含对当前正由其它过程保持的记录的锁定的多个不同请求的数据系统的全局等待队列内识别。在另一实施例中,对第一记录的锁定的第一请求可以是队列内对第一记录的锁定的多个请求中的一个。例如,第二过程可以是队列内的多个过程中的一个,其等待由批处理应用保持的第一记录的锁定。
在另一方式中,方法400还可包括响应于批处理应用已经完成对一组记录中的至少最小数量的记录的处理以及确定记录锁定请求(等待者)的数量超过阈值,提交一组记录中由于执行批处理应用而导致被锁定的任何和所有记录。在一种方式中,记录的最小数量小于提交计数,导致允许早期提交(在处理等于提交计数的记录量之前)来处理未决的记录锁定请求的技术。
在一个实施例中,未决的记录锁定请求的阈值可以是一个记录锁定请求。在替代实施例中,未决的记录锁定请求的阈值可以是2、4、5、10、20、50、100或更多未决的记录锁定请求。阈值可以由数据系统的管理者明确地设置。此外,阈值可以针对批处理应用而单独设置,使得可以为系统内执行的任何其它应用设置不同的阈值。
根据另一实施例,方法400可以包括确定从启动批处理应用到提交一组记录中由于执行批处理应用而导致被锁定的所有记录所经过的时间量。该操作可以响应于一组记录中的第n个记录被单独处理或者结合确定在启动批处理应用之后针对该组记录中的任何记录未曾发现未决的记录锁定(例如,在启动批处理应用之后没有发现等待者或者以其它方式跟踪等待者)来执行。
在另一个实施例中,方法400可以包括在作业控制管理器处接收指定第二批处理应用的执行的第二命令。该第二批处理应用可以遵守与在操作406中启动的批处理应用相同的规则及策略集合,或者可以遵守第二批处理应用特定的不同的规则及策略集合,该不同的规则及策略集合可以与在某些方式中管理在操作406中启动的批处理应用的执行的规则及策略相重叠。在一个实施例中,第二批处理应用可以与在操作406启动的批处理应用相同。
方法400还可以包括直接或间接地启动第二批处理应用,第二批处理应用处理第二组记录,其可以与第一组记录部分或完全重叠、或者可以与第一组记录不同。此外,方法400可以包括响应于第二组记录中的一个或多个记录被第二批处理应用处理而锁定一个或多个记录,以及跟踪由于批处理应用处理第二组记录而等待执行的记录锁定请求的数量(第二组记录的等待者)。执行记录的这种锁定,使得除非并且直到第二批处理应用已经完成了处理第二组记录中的最后一个记录,否则第二批处理应用不使一个或多个记录被解锁。
此外,方法400可以包括响应于批处理应用已经完成对第二组记录中的第m个记录的处理以及确定记录锁定请求的数量在完成第二组记录中的第m个记录的处理之后将在最短超时之前被处理,提交第二组记录中的由于执行第二批处理应用而导致被锁定的任何和所有记录。因此,也可以确定和/或接收每个记录锁定请求的超时值。该提交在完成第二组记录中的第m个记录的处理之后执行。此外,在一种方法中,m可以等于提交计数。
然而,在替代方式中,方法400可包括在完成对第二组记录中的第m个记录的处理之前提交第二组记录中由于执行第二批处理应用而导致被锁定的所有记录。该提交可以响应于确定记录锁定请求的数量在完成第二组记录中的第m个记录的处理之后将不会在最短超时之前被处理而执行。
这些确定基于与每个未决的记录锁定请求相关联的超时值。因此,比较所有等待记录锁定请求的超时,并且将最早发生或在最少时间量中发生的超时被选择为最短超时。通过将该超时选择为最短超时,可以确保如果具有最短超时的记录锁定请求将能够在没有超时的情况下被处理(在处理第二组记录中的第m个记录之后),则所有未决的记录锁定请求将能够在没有超时的情况下被处理。否则,在处理了最小数量的记录之后,第二组记录的处理被中断,以便确保没有未决的记录锁定请求将超时。
方法400可以在系统和/或计算机程序产品中实现。例如,系统可以包括处理电路和与处理电路集成的、可由处理电路执行的、或者与处理电路集成并可由处理电路执行的逻辑。集成是指处理电路是硬件处理器,其具有包括在其中的硬编码逻辑,诸如asic、fpga等。可执行是指处理器被配置为执行软件逻辑以实现由软件逻辑指定的功能,其中处理器可能是mpu、cpu、微处理器等。逻辑被配置为使处理电路执行方法400。
在另一示例中,计算机程序产品可以包括具有随其体现的程序指令的计算机可读存储介质。计算机可读存储介质可以是本领域已知的任何适当的存储设备,其被配置为存储和允许计算机访问其中存储的信息。所体现的程序指令可由处理电路执行以使处理电路执行方法400。
当方法400是利用遵守事务型vsam的数据系统(例如在ibmz/os环境中)或者利用本领域公知的事务型vsam的任何其它系统来执行时,可以在作业步骤中以作业控制语言(jcl)或者一些其它适当的位置(例如在igwsmsxx参数库(paramlib)成员中添加新的参数,以便使事务型vsam引擎能够决定何时执行自动提交。如在此所使用的,事务型vsam引擎描述了软件模块、库、软件开发包(sdk)和/或包括执行vsam事务型任务的功能的封装块的对象。如本领域技术人员所知,可以使用任何合适的引擎。在一些实施例中,事务型vsam引擎还可以被称为作业控制管理器。
新参数可以包括一个或多个值,诸如两个值或三个值。在一种方式中,新参数(提交计数)可包括指定记录锁定和记录访问请求的值的范围的最小值和最大值。该提交计数将由事务型vsam引擎使用,以确定何时以及是否代表由批处理应用使用的记录发出提交点,例如通过调用资源恢复服务(rrs)。事务型vsam引擎可以基于对当前事务或恢复单元(ur)中的等待记录锁定(等待者)的数量的分析,将提交频率(被访问的记录的数量和/或请求的记录锁定的数量)调整到最小值和最大值之间的值。另外,管理员或一些其他用户可在用于sys1.paramlib的存储管理子系统(igdsmsxx)的初始化例程成员中指定类似的系统级提交参数。此外,jcl值可超驰igdsmsxx中所指定的值。
在该示例中,事务型vsam引擎代表使用事务型vsam的批处理应用或作业发出一个或多个提交同步点(syncpoint)。如前所述,参数在jcl执行语句或sys1.parmlib的igdsmsxx成员中指定。以使事务型vsam引擎能够确定其何时应当发出提交同步点。对于被启用用于自动提交的每个ur或事务,事务型vsam引擎可以在记录访问请求(添加、擦除、更新)由批处理应用发出时对它们的数量进行计数。利用记录访问请求的计数和由参数指定的值,事务型vsam服务(tvs)决定执行ur的自动提交的时间点。在提交期间、紧接其后或者在退出同步点的情况下重置计数。
在一个实施例中,用于指定自动提交频率的参数可以如下:
//stepnameexecpositional-parm,tvsamcom=({minval},{maxval})
在该示例性参数中,tvsamcom包括一个或更多个值,其指示在提交记录之前要处理的记录的数量。minval参数是整数(1-99999),其表示在事务型vsam引擎代表批处理应用发出自动提交之前执行的记录访问请求的最小数量。而且,maxval参数是整数(0-99999),其表示在事务型vsam引擎代表批处理应用发出自动提交之前执行的记录访问请求的最大数量。当且仅当事务型vsam引擎没有将提交频率(例如由于锁竞争分析)动态地调整到低于由maxval参数指定的最大值的数时,该值才生效。
根据一个详细的实现示例,在存储管理子系统(smsvsam)的数据共享子系统(利用vsam)的初始化期间,事务型vsam引擎从存储管理子系统(sms)取得值并将其保存在内部控制块中。ur的数据集的第一个"打开"请求也从jcl执行语句中取得minval和maxval值,并将其保存在与打开请求相关联的控制块中。针对ur组发出的第一记录管理请求基于jcl执行语句和sys1.paramlib中指定的值设置针对ur的最终minval和maxval值。jcl声明中指定的值优先于igdsmsxx中的值。
在对minval和maxval指定相同值(minval=maxval&maxval>0)的情况下,事务型vsam引擎在已经执行了由批处理应用发出的指定数量的记录访问请求之后执行自动提交。在这种情况下,事务型vsam引擎不基于ur发现或获得的记录锁定的等待者的数量来调整提交频率,以便节省资源。
根据第一示例,假设tvsamcom=(100,100),dfsmstvs将在由应用执行的记录访问(记录处理)的数量达到100时代表应用发出提交。如果为minval指定的值小于maxval(minval<maxval&&maxval>0),则事务型vsam引擎将提交频率调整到minval和maxval之间的数。在这种情况下,事务型vsam引擎将通过请求由于ur而持有的记录锁定的等待者信息来执行ur的记录锁定竞争分析。远程系统将用最早超时的cics请求和超时发生的时刻(tod)来响应始发系统。在始发系统接收到所有系统都已经响应了对特定记录锁定的竞争请求的信号后,其将分析所有响应,包括来自其自身的那些响应。如果没有cics作业正在等待记录锁定,则这意味着没有竞争,并且事务型vsam引擎将仅在ur中处理的记录的数量达到maxval值时才发出提交。
根据第二示例,假设tvsamcom=(10,100),假如没有用于ur所持有的任何记录锁定的cics等待者,则当100个记录已经被处理时,dfsmstvs将代表应用发出提交。如果返回的信息示出存在等待至少一个记录锁定的cics作业,则事务型vsam引擎可以在100个记录被处理之前但是仅在最小数量的10个记录已经被处理之后提交。
在minval和maxval指定的范围内的提交频率的这种调节可以单独地或组合地考虑若干因素。事务型vsam引擎可以确定在系统中将最早超时的cics等待请求,然后基于该超时值,事务型vsam引擎将计算等待请求将超时的特定时间。此后,事务型vsam引擎将根据以下算法验证持有记录锁定的ur是否将在超时被达到之前被自然地提交(达到maxval)。
对于被启用用于动态自动提交的每个ur,事务型vsam引擎将保持每个微事务花费多长时间的平均值,使得可以建立完成ur所需的平均时间量。例如,如果用户指定minval值10和maxval值100,并且如果由于竞争而在实现100个记录的处理之前在批处理应用的处理期间没有发生动态自动提交,则事务型vsam引擎将响应于100个记录被处理而提交。存储执行100个记录的处理所经过的时间,并且使用该存储的时间和所有先前实现的间隔来计算处理记录直到计划提交的平均时间。事务型vsam引擎将使用该计算的平均时间来处理直到计划提交的记录,以基于接收的cics请求将超时的时间来识别是否应当较早地提交当前ur,或者当处理的记录的数量达到maxval值时是否让ur继续并提交。如果事务型vsam引擎识别到超时将在ur被提交之前发生,则通过达到记录访问请求的最大数量,事务型vsam引擎将标记ur,以便在执行针对相同ur发布的下一个请求之前,tvs将代表批处理应用执行自动提交。如前所述,响应于执行早期(在到达maxval之前)提交,在指定minval的情况中,事务型vsam引擎将仅响应于已经到达的minval发出提交,否则事务型vsam引擎将立即或在给定操作条件下尽可能快地发出提交。
在一个示例中,假设tvsamcom=(,100),一旦检测到竞争并且还响应于已经处理了100个记录就发出提交。在另一个示例中,假设tvsamcom=(1),并且假设没有指定的maxval,则响应于事务型vsam引擎找到或发现cics请求正在等待记录锁定,ur将被提交。在一个实施例中,可以响应于tvsamcom值都被设置为0(即,tvsamcom=(0,0))来禁用该特征。
根据一个实施例,可以响应于数据集被关闭而触发提交,在这种情况下,事务型vsam引擎将提交与发出关闭的任务控制块(tcb)相关联的ur。通过这样做,tvs保证在数据集关闭后没有记录锁定被保持。
在另一个实施例中,可以响应于批处理应用获得记录锁定并且事务型vsam引擎没有发出自动提交而触发提交。此提交可被发出,这是因为对于ur所持有的各种记录锁定的底层记录没有等待者,或在tvsamcom参数中指定的值永远不会到达,因此在所处理的记录的数量达到触发提交的maxval之前,存储记录锁定信息的锁定结构将变满是可能的。在这种情况下,tvs将强制自动提交以释放由批处理应用持有的记录锁定,并在满足阈值时清空锁定结构,该阈值可以是基于时间的、基于数量的、或基于某些其它可测量的参数。该阈值可以由管理员设置,或者可以使用默认值,诸如75%满、80%满、90%满等。
根据一个实施例,为了执行提交同步点,事务型vsam引擎将调用atrcmit或atr4cmitrrs宏,以指示要使ur的改变为永久的。在这一点之后,所有的工作都完全如同批处理应用是发布ssrcmit(commit_ur)rrs功能的应用一样。rrs将请求所有资源管理器使ur的改变是永久的。
rrsatrcmit调用将在用户tcb下以跨存储器模式从smsvsam地址空间进行。这样,rrs能够识别执行提交的tcb和与其相关联的ur。在提交开始之前,事务型vsam引擎将等待任何飞行中的异步请求将完成。这将保证与ur相关联的所有请求都被提交。当执行提交时,tcb将等待直到提交完成,使得新请求将不被允许。在任何提交失败的情况下,ur将被标记,错误被返回给用户,并且批处理应用将退出事务并重试以便使提交发生。
根据本文所述的若干实施例,可在数据存储环境中执行自动提交,以便代表不执行显式提交的批处理应用来清除记录锁定。这些记录锁定可以防止后续事务发生。关于何时以及是否提交记录锁定(并且由此释放相关联的记录以用于处理)的决定可以基于由一个或多个用户指定的参数和/或数据存储环境及其资源的特定工作负载。
此外,在这里描述的实施例中,不需要修改或更新应用来添加显式同步点以提交由此创建的记录锁定。这个优点对于在数据存储系统上执行的应用是有好处的,在数据存储系统上执行的应用太麻烦、太昂贵、太庞大、太耗时或以其它方式不切实际以致于对在其上执行的应用做出改变的,诸如因为应用或数据存储系统的管理员缺乏源代码来做出这样的改变。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c 等,以及过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
此外,根据各种实施例的系统可以包括处理器和与处理器集成和/或可由处理器执行的逻辑,该逻辑被配置为执行在此所述的一个或多个处理步骤。与其集成,意味着处理器具有作为硬件逻辑(诸如asic、fpga等)嵌入其中的逻辑。通过处理器可执行,意味着该逻辑是硬件逻辑、软件逻辑(诸如固件、操作系统的一部分、应用程序的一部分)等、或者处理器可访问并被配置为在处理器执行时使处理器执行一些功能的硬件和软件逻辑的一些组合。如本领域中已知的,软件逻辑可以存储在任何存储器类型的本地和/或远程存储器上。可以使用本领域已知的任何处理器,诸如软件处理器模块和/或硬件处理器,诸如asic、fpga、cpu、集成电路(ic)、图形处理单元(gpu)等。
将清楚的是,可以以任何方式组合前述系统和/或方法的各种特征,从而从以上呈现的描述中创建多个组合。
尽管上面已经描述了各种实施例,但是应该理解,它们仅是示例性的,而非限制性的。因此,优选实施例的广度和范围不应受到任何上述示例性实施例的限制,而应仅根据所附权利要求及其等同物来限定。
1.一种方法,包括:
在数据系统的作业控制管理器处接收指定批处理应用的执行的命令;
在所述作业控制管理器处接收与所述批处理应用相关联的提交计数;
启动所述批处理应用,其中,所述批处理应用处理一组记录;
响应于所述一组记录中的第一记录被所述批处理应用处理而锁定所述第一记录,条件是除非所述批处理应用已经完成了处理所述一组记录中的最后一个记录,否则所述批处理应用不使所述第一记录被解锁;以及
响应于所述批处理应用已经完成对所述一组记录中的第n个记录的处理,提交所述一组记录中由于所述批处理应用的执行而导致被锁定的所有记录,其中,n等于所述提交计数。
2.根据权利要求1所述的方法,还包括:
跟踪由于所述批处理应用处理所述一组记录而等待执行的记录锁定请求的数量。
3.根据权利要求2所述的方法,还包括:
响应于所述批处理应用已经完成对所述一组记录中的至少最小数量的记录的处理并且确定所述记录锁定请求的数量超过阈值,提交所述一组记录中由于所述批处理应用的执行而导致被锁定的所有记录,其中,记录的所述最小数量小于所述提交计数。
4.根据权利要求3所述的方法,其中,所述阈值是一个记录锁定请求。
5.根据权利要求1所述的方法,还包括:
响应于所述一组记录中的第n个记录被处理而确定从启动所述批处理应用到提交所述一组记录中由于所述批处理应用的执行而导致被锁定的所有记录所经过的时间量。
6.根据权利要求5所述的方法,其中,从启动所述批处理应用到提交所述一组记录中由于所述批处理应用的执行而导致被锁定的所有记录所经过的时间量是响应于确定以下两者而确定的:
所述一组记录中的第n个记录已经被处理,以及
在启动所述批处理应用之后针对所述一组记录中的任何记录未曾发现未决的记录锁定。
7.根据权利要求5所述的方法,还包括:
在所述作业控制管理器处接收指定第二批处理应用的执行的第二命令;
启动所述第二批处理应用,其中,所述第二批处理应用处理第二组记录;
响应于所述第二组记录中的一个或多个记录被所述第二批处理应用处理,锁定所述一个或多个记录,条件是除非所述第二批处理应用已经完成了处理所述第二组记录中的最后一个记录,否则所述第二批处理应用不使所述一个或多个记录被解锁;
跟踪由于所述批处理应用处理所述第二组记录而等待执行的记录锁定请求的数量;
响应于所述批处理应用已经完成对所述第二组记录中的第m个记录的处理并且确定所述记录锁定请求的数量在完成对所述第二组记录中的第m个记录的处理之后将在最短超时之前被处理,在完成对所述第二组记录中的第m个记录的处理之后提交所述第二组记录中由于所述第二批处理应用的执行而导致被锁定的所有记录,其中,m等于所述提交计数;以及
响应于确定所述记录锁定请求的数量在完成对所述第二组记录中的第m个记录的处理之后将不会在所述最短超时之前被处理,在完成对所述第二组记录中的第m个记录的处理之前提交所述第二组记录中由于所述第二批处理应用的执行而导致被锁定的所有记录。
8.根据权利要求1所述的方法,其中,所述提交计数包括两个值:
在提交之前要被处理的记录的最小数量;以及
在提交之前要被处理的记录的最大数量,
其中,响应于确定在所述提交之前要被处理的记录的最小数量等于在所述提交之前要被处理的记录的最大数量,不跟踪由于所述批处理应用处理所述一组记录而等待执行的记录锁定请求的数量。
9.一种计算机程序产品,所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质具有随其体现的程序指令,其中,所述计算机可读存储介质不是暂态信号本身,所体现的程序指令能够由处理电路执行以使所述处理电路:
由所述处理电路在数据系统的作业控制管理器处接收指定批处理应用的执行的命令;
由所述处理电路在所述作业控制管理器处接收与所述批处理应用相关联的提交计数;
由所述处理电路启动所述批处理应用,其中,所述批处理应用处理一组记录;
由所述处理电路响应于所述一组记录中的第一记录被所述批处理应用处理而锁定所述第一记录,条件是除非所述批处理应用已经完成了处理所述一组记录中的最后一个记录,否则所述批处理应用不使所述第一记录被解锁;以及
响应于所述批处理应用已经完成对所述一组记录中的第n个记录的处理,由所述处理电路提交所述一组记录中由于所述批处理应用的执行而导致被锁定的所有记录,其中,n等于所述提交计数。
10.根据权利要求9所述的计算机程序产品,其中,所体现的程序指令进一步能够由所述处理电路执行以使所述处理电路:
由所述处理电路跟踪由于所述批处理应用处理所述一组记录而等待执行的记录锁定请求的数量。
11.根据权利要求10所述的计算机程序产品,其中,所体现的程序指令进一步能够由所述处理电路执行以使所述处理电路:
响应于所述批处理应用已经完成对所述一组记录中的至少最小数量的记录的处理并且确定所述记录锁定请求的数量超过阈值,由所述处理电路提交所述一组记录中由于所述批处理应用的执行而导致被锁定的所有记录,其中,记录的所述最小数量小于所述提交计数。
12.根据权利要求9所述的计算机程序产品,其中,所体现的程序指令进一步能够由所述处理电路执行以使所述处理电路:
由所述处理电路确定从启动所述批处理应用到响应于所述一组记录中的第n个记录被处理而提交所述一组记录中由于所述批处理应用的执行而导致被锁定的所有记录所经过的时间量;
由所述处理电路在所述作业控制管理器处接收指定第二批处理应用的执行的第二命令;
由所述处理电路启动所述第二批处理应用,其中,所述第二批处理应用处理第二组记录;
由所述处理电路响应于所述第二组记录中的一个或多个记录被所述第二批应用处理而锁定所述一个或多个记录,条件是除非所述第二批处理应用已经完成了处理所述第二组记录中的最后一个记录,否则所述第二批处理应用不使所述一个或多个记录被解锁;
由所述处理电路跟踪由于所述批处理应用处理所述第二组记录而等待执行的记录锁定请求的数量;
响应于所述批处理应用已经完成对所述第二组记录中的第m个记录的处理并且确定所述记录锁定请求的数量在完成对所述第二组记录的第m个记录的处理之后将在最短超时之前被处理,由所述处理电路在完成对所述第二组记录中的第m个记录的处理之后提交所述第二组记录中由于所述第二批处理应用的执行而导致被锁定的所有记录,其中,m等于所述提交计数;以及
响应于确定所述记录锁定请求的数量在完成对所述第二组记录中的第m个记录的处理之后将不会在所述最短超时之前被处理,由所述处理电路在完成对所述第二组记录中的第m个记录的处理之前提交所述第二组记录中由于所述第二批应用的执行而导致被锁定的所有记录。
13.根据权利要求12所述的计算机程序产品,其中,从启动所述批处理应用到提交所述一组记录中由于所述批处理应用的执行而导致被锁定的所有记录所经过的时间量是仅响应于确定以下两者而确定的:所述一组记录中的第n个记录已经被处理,以及在启动所述批处理应用之后针对所述一组记录中的任何记录没有发现未决的记录锁定。
14.根据权利要求9所述的计算机程序产品,其中,所述提交计数包括两个值:
在提交之前要被处理的记录的最小数量;以及
在提交之前要被处理的记录的最大数量,以及
其中,响应于确定在所述提交之前要被处理的记录的最小数量等于在所述提交之前要被处理的记录的最大数量,不跟踪由于所述批处理应用处理所述一组记录而等待执行的记录锁定请求的数量。
15.一种系统,包括:
处理电路;
存储器;以及
存储到所述存储器的逻辑,所述逻辑在由所述处理电路执行时使所述处理电路:
在数据系统的作业控制管理器处接收指定批处理应用的执行的命令;
在所述作业控制管理器处接收与所述批处理应用相关联的提交计数;
启动所述批处理应用,其中,所述批处理应用处理一组记录;
响应于所述一组记录中的第一记录被所述批处理应用处理而锁定所述第一记录,条件是除非所述批处理应用已经完成了处理所述一组记录中的最后一个记录,否则所述批处理应用不使所述第一记录被解锁;以及
响应于所述批处理应用已经完成对所述一组记录中的第n个记录的处理,提交所述一组记录中由于所述批处理应用的执行而导致被锁定的所有记录,其中,n等于所述提交计数。
16.根据权利要求15所述的系统,其中,所述逻辑还使所述处理电路:
跟踪由于所述批处理应用处理所述一组记录而等待执行的记录锁定请求的数量。
17.根据权利要求16所述的系统,其中,所述逻辑还使所述处理电路:
响应于所述批处理应用已经完成对所述一组记录中的至少最小数量的记录的处理并且确定所述记录锁定请求的数量超过阈值,提交所述一组记录中由于所述批处理应用的执行而导致被锁定的所有记录,
其中,记录的所述最小数量小于提交计数,以及
其中,所述阈值是一个记录锁定请求。
18.根据权利要求15所述的系统,其中,所述逻辑还使所述处理电路:
响应于确定以下两者来确定从启动所述批处理应用到提交所述一组记录中由于所述批处理应用的执行而导致被锁定的所有记录所经过的时间量:
所述一组记录中的第n个记录被处理,以及
在启动所述批处理应用之后针对所述一组记录中的任何记录未曾发现未决的记录锁定;
在所述作业控制管理器处接收指定第二批处理应用的执行的第二命令;
启动所述第二批处理应用,其中,所述第二批处理应用处理第二组记录;
响应于所述第二组记录中的一个或多个记录被所述第二批处理应用处理,锁定所述一个或多个记录,条件是除非所述第二批处理应用已经完成了处理所述第二组记录中的最后一个记录,否则所述第二批处理应用不使所述一个或多个记录被解锁;
跟踪由于所述批处理应用处理所述第二组记录而等待执行的记录锁定请求的数量;
响应于所述批处理应用已经完成对所述第二组记录中的第m个记录的处理并且确定所述记录锁定请求的数量在完成对所述第二组记录中的第m个记录的处理之后将在最短超时之前被处理,在完成对所述第二组记录中的第m个记录的处理之后提交所述第二组记录中由于所述第二批处理应用的执行而导致被锁定的所有记录,其中,m等于所述提交计数;以及
响应于确定所述记录锁定请求的数量在完成对所述第二组记录中的第m个记录的处理之后将不会在所述最短超时之前被处理,在完成对所述第二组记录中的第m个记录的处理之前提交所述第二组记录中由于所述第二批应用的执行而导致被锁定的所有记录。
19.根据权利要求18所述的系统,其中,所述逻辑还使所述处理电路:
响应于所述批处理应用已经完成对所述一组记录中的至少最小数量的记录的处理并且确定所述记录锁定请求的数量超过第一阈值,提交所述一组记录中由于所述批处理应用的执行而导致被锁定的所有记录,其中,记录的所述最小数量小于所述提交计数。
20.根据权利要求15所述的系统,其中,所述提交计数包括两个值:
在提交之前要被处理的记录的最小数量;以及
在提交之前要被处理的记录的最大数量,以及
其中,响应于确定在所述提交之前要被处理的记录的最小数量等于在所述提交之前要被处理的记录的最大数量,不跟踪由于所述批处理应用处理所述一组记录而等待执行的记录锁定请求的数量。
技术总结