用以提高事务处理吞吐量的事务聚集的制作方法

文档序号:6478113阅读:161来源:国知局
专利名称:用以提高事务处理吞吐量的事务聚集的制作方法
技术领域
本发明的实施方式涉及自动用以提高事务处理吞吐量的事务聚集。
背景技术
数据流编程也称为基于流的编程(FBP),它是一种已被用于简单且有效地表示高 容量批量数据处理的技术简单是因为逻辑是自然捕获的;有效是因为并行和流水线并行 处理都能够用于增加吞吐量。然而,这些相同的基于流的编程技术却很少被公认为是用于 在线和事务处理应用的表现的手段。 基于流的事务处理(FBTP)描述了用于创建高性能事务处理系统的基于流的应用 开发技术。客户期望扩展FBP系统(例如,国际商业机器公司的DataStage产品)的功能, 以涵盖事务处理。客户从所得系统的高性能以及使用通用图形开发工具在事务处理和高容 量批量数据处理之间共享业务逻辑的能力这二者中获得价值。 存在执行事务组合的系统。Microsoft Transaction Server (MTS,微软事务服 务器)和J肌aTM2平台企业版(J2EE)应用服务器都具有特征声明的事务组合。(Java和所 有基于Java的商标和标志是Sun微系统公司在美国、其他国家或两者的商标,Microsoft是 微软公司在美国、其他国家或两者的商标。)然而,由于这些系统没有表示为数据流网络,所 以其没有受益于随之而产生的数据分离属性;因此,其能够达到的事务聚集的程度较低,从 而限制了其增加吞吐量的能力。

发明内容
本发明提供了用于增加事务处理吞吐量的方法、计算机程序产品、计算机程序以 及系统。获取具有消息标识符和会话标识符的事务项。将该事务项添加到聚集事务列表中 的、其中没有其他事务项具有相同会话标识符的最早聚集事务。执行所述聚集事务列表中 满足执行标准的第一聚集事务。响应于确定聚集事务没有提交,将所述聚集事务分解为多 个较小的聚集事务,并且基于系统吞吐量的测量来调节每个聚集事务的目标大小。


现在将仅通过示例的方式并参考以下附图描述本发明的优选实施方式 图1示出了根据某些实施方式的计算设备的细节。 图2示出了根据某些实施方式的具有事务处理的数据流图。 图3示出了根据某些实施方式的具有提交和错误处理的数据流图。 图4示出了根据某些实施方式的具有有害队列的数据流图。 图5示出了根据某些实施方式的事务处理阶段的列表。 图6示出了根据某些实施方式的聚集事务的处理的数据流图。 图7示出了根据某些实施方式的流水线安全概念的数据流框图。 图8示出了根据某些实施方式的并行性使用的示意图。
图9A、图9B和图9C示出了根据某些实施方式的逻辑。
图10示出了根据某些实施方式的可以使用的系统架构。
(相同的参考标号始终表示相应的部分)
具体实施例方式
在以下的描述中参考构成描述一部分的附图,其示出了本发明的若干实施方式。 可以理解,可以在不脱离本发明范围的情况下使用其他实施方式,并且可以进行结构上和 操作上的改变。 实施方式允许创建和部署事务处理系统,在其中个体事务能够聚集为较大的事 务,其聚集方式使系统行为仍然是正确的,但是平均事务大小可以较大。这可以通过分摊对 相关联事务资源(例如,数据库、排队系统、事务文件系统等等)进行大量改变所需的事务 协调成本,来改进整个系统的吞吐量。这些成本在分布式事务协调环境中可能会特别高。
实施方式提供了以自动化方式聚集事务以减小开销的自适应逻辑,这在吞吐量提 高时增加大小,并且在吞吐量受到负面影响的情况下自动地减小大小。 实施方式将事务处理系统表示为数据流网络,或使用等同的基于数据流的编程语 言。实施方式还依赖于数据分离属性的标识,其允许确定何时可以进行事务聚集。在某些 实施方式中,数据分离属性可以与用来表示批量类型数据流系统中并行性的可能性的属性 相同。另外,数据流网络的面向集合(set-oriented)的性质支持自动聚集的进行。
图1示出了根据某些实施方式的计算设备的细节。客户端计算机100通过通信路 径190连接到服务器计算机120。客户端计算机100包括一个或多个客户端应用110。
服务器计算机120包括事务聚集调节(TAA)系统130、调节数据140 (例如系统吞 吐量的测量)、聚集事务列表150以及一个或多个服务器应用160。服务器计算机120为客 户端计算机100提供对数据存储170中数据的访问。 客户端计算机100和服务器计算机120可以包括本领域已知的任何计算设备,例 如服务器、主机(mainframe)、工作站、个人计算机、手持式计算机、膝上型电话设备、网络设 备、计算机集群等等。 通信路径190可以包括任何类型的网络,例如,端对端网络、星型网络、存储区域 网络(SAN)、局域网(LAN)、广域网(WAN)、因特网、内联网等等。 数据存储170可以包括存储设备阵列,例如直接访问存储设备(DASD)、磁盘束 (JBOD)、独立磁盘冗余阵列(RAID)、虚拟化设备等等。 过程可以描述为数据流图。过程可以包括以下部分数据流图、操作符以及弧 (arc)。数据流图可以描述为有向图,其中图的顶点/框称为操作符,并且弧描述数据的有 向流动。数据流图将数据描述为从各数据源通过不同的操作符流向各数据目标的数据流。 可以根据数据流编程语言来绘制或创建数据流图。操作符能够从外部源读取数据,向外部 源写入数据,和/或在这样做时应用数据变换。 一般地,操作能够消耗来自每个传入弧的数 据,并且能够在每个传出弧上产生数据。在通常的数据流过程编辑工具中,提供有多种操作 符作为内置操作符,以提供通用数据访问和变换,而其他操作符能够由用户创建并容易地 集成到系统中。弧表示两个相连接操作符之间的数据流。弧表现为先进先出(FIFO)队列。 也即,弧上的数据项不能彼此超越。它们以其进入的顺序离开弧。
连续过程可以描述为从连续数据源(即,连续地提供数据的数据源)进行读取并 在输入数据变为可用时产生对应于输入数据的结果数据的过程。 事务过程是连续过程,其从作为其数据源的事务源进行读取,并向作为其目标的
事务数据源进行写入。典型的情况是从消息队列进行读取,并向一个或多个数据库系统中
的一个或多个数据库表进行写入,以及向输出消息队列和事务文件系统进行写入。 为了说明方便,假设事务过程具有单个输入操作符。需要注意的是,作为输入的多
个操作符可以预先合并为单个馈送。 图2示出了根据某些实施方式的事务过程的数据流图200。在图2中,消息队列 get(获得)方法(MQ获得)从消息队列获取消息。查找框在表中执行查找。变换框(xform) 变换数据。关系数据库管理系统(RDBMS)对表进行插入、更新以及删除对表执行的这些动 作。消息队列put(放置)方法(MQ放置)将消息放置到消息队列中。
每个数据项从称为事务项的输入中读取。每个事务项具有会话标识符(SID)以及 用于描述事务内容的任何其他数据。当两个事务项携带相同的SID时,这意味着它们将在 分离的事务中被处理,并且这些事务按照事务项到达的顺序来执行。每个事务项还携带有 消息标识符(MID),其对于具有相同SID的所有事务而言是唯一的。两个具有不同SID值的 事务项能够作为相同事务的部分或者作为分离事务的部分来一起处理,并且其处理顺序无 关紧要。 在某些实施方式中,SID是与输入消息相关联的令牌,其关联方式使得具有不同 SID的任何两个消息能够并行处理。在实践中,这是通过标识不能并行处理的消息集合以及 将相同的SID与相同集合中的所有消息进行关联来实现的。在某些实施方式中,SID是消 息的一部分(例如,账号或客户号可以标识会话,或者浏览器cookie值可以是因特网应用 (例如,在线购物)的SID)。 在某些实施方式中,MID是与输入消息相关联的令牌,其唯一地标识该输入消息,
即使该输入消息与其他消息相结合作为一个事务实现的部分来执行。如果消息负载中没有 固有的MID,则可以为MID指派来自基于消息进入输入队列的到达顺序的计数器的整数。
在某些实施方式中,消息标识符在SID内是唯一的,使得SID+MID共同形成消息的 唯一ID。实施方式使用该唯一的ID以应对故障。在处理中,输入队列处的一个传入消息在 其处理期间可以在处理流中产生多个记录(例如,显示我的所有账户余额)。由于一个传入 请求消息,大约每6个账户创建一个记录。这6个记录将在整个数据流图中移动,并且可以 分离并由各操作符独立地处理。所有这些记录携带与传入请求消息相同的MID和SID。由 此,如果这些记录中的任何一个出现任何问题,则可以通过唯一识别消息的SID+MID将"过 失(blame)"置于特定的传入消息上。 即使没有输入消息的任何排序要求,实施方式仍然适用于系统。仅为了增强理解, 此处提供了一个简单的银行ATM示例。(需要注意的是,为了此处说明的目的,这是一个高 度简化的示例。真实的ATM网络远比其复杂。)假设存在一个银行ATM机的网络。 一个ATM 机处的每个人在ATM机处创建与其个人会话相关的消息。这些消息必须按顺序处理,并且 因此必须携带相同的SID。但是来自多个ATM机的消息流在其最终进入应用的输入队列时 是交错的。因为每个ATM机每次只能服务一位顾客,所以实施方式可以使用ATM机的ID作 为SID。
图3示出了根据某些实施方式的具有提交和错误处理的数据流图300。在事务过 程期间,收集错误,并且生成错误原因文件,其被转发到提交块。在提交块中,如果没有不可 接受的错误,则提交事务处理(即,提交块可以确定虽然有错误,但仍然应当进行提交)。
图4示出了根据某些实施方式的具有有害队列的数据流图400。事务过程还具有 相关联的有害或拒绝队列。有害队列可以描述为放置有害事务项的队列。有害事务项是不 能成功处理的事务项。也就是说在"MQ获取"之后一直到(并且包括)"交付"所尝试的用 于处理该事物项的所有资源活动由于错误而失败,或总是提交失败(潜在地,即使是在一 定数目的重复尝试之后)。 在图4中,事务流包括主要计划或"计划A",其是预期的处理流;以及备选计划或 "计划B",其将不能处理的事务放置到有害或拒绝队列中。 在任意给定时刻,事务过程具有与输入中可用于处理的不同的并发会话标识符 (SID)的数目成比例的可用并行性。每个会话事务项顺序地处理,但是会话之间存在并行 性。这是应用服务器和其他事务处理环境所频繁表现出的并发。 在某些实施方式中,可以通过对可用并行性与事务粒度进行权衡来提高性能。如 果具有足够的过量并行性可用,则可以聚集来自不同会话的事务以减少开销,同时仍然具 有足够的并行性以用于高性能执行。 图5示出了根据某些实施方式的事务处理阶段的列表。事务处理包括聚集阶段 510、计算阶段512、提交阶段514、具有错误原因的解聚集阶段516以及没有错误原因的解 聚集阶段518。 在聚集阶段510,在从诸如队列的事务资源中读取事务项时,启动用于确定事务是 否能够与其他事务项聚集为较大事务的逻辑。 维护聚集事务的列表。列表中的顺序是待处理的事务聚集的顺序。传入事务项被 添加到尚未包含具有相同SID的事务的第一个聚集事务中。 图6示出了根据某些实施方式的具有聚集事务的处理的数据流图600。在满足执 行标准(例如,定时器超时或聚集事务的大小到达目标大小)时,列表中的第一个聚集事务 被移除,并沿数据流发送,以便在计算阶段514中进行处理。聚集事务的数据(即,组成聚 集事务的事务项)被发送到数据流图中,每次发送一个事务项。聚集的最后一个事务项之 后跟随工作单元结束(也称为"波")标记。波标记可以描述为去往作为事务边界的阶段的 信号,例如,它是去往图6中的RDBMS插入和RDBMS删除从而进行提交的信号。由此,波标 记可以描述为信号通知其在计算中所跟随的、聚集事务的计算阶段的结束。
聚集阶段510中聚集事务的建立可以与在前聚集事务的计算阶段512并行继续。
上文提到的并行标准可以包括定时器超时(以限定事务执行时延)以及聚集事 务的大小达到目标大小。 适应性地选择聚集事务的目标大小。针对每个正在处理的聚集事务测量系统吞吐 量。只要事务吞吐量提高,便增加目标大小。当事务吞吐量降低时,减小目标大小。具有多 种技术用于避免目标大小的激烈振荡,包括基于移动平均对其进行调节、添加随机噪声因 子等等。实施方式包括所有这些调节技术。 在某些实施方式中存在优化,其中聚集事务的列表中的第一列表项不会被阻止。 第一列表项不需要添加到聚集事务的列表中(例如,因为波标记确保所有列表项都会得到
8处理和提交),但是可以直接发送到流中。当波标记已经流过过程的弧并且终端操作符已经 完成该工作单位的计算时,则认为已经针对该聚集事务完成了计算。 在某些实施方式中,具有相同SID的不止一个记录不放置在聚集中,这是因为假 设数据流处理下游不会在单个事务中发生,并且可以使用流水线处理;因此,副作用的顺序 一致性没有保证。如果数据流处理下游提供顺序一致性(例如,没有流水线,并且仅有一个 数据库连接,因为其全部是一个过程),则实施方式相应地改变聚集逻辑。具体地,实施方式 改变聚集逻辑以允许具有相同SID的不止一个记录放置到聚集中,因为数据完整性本质上 由顺序处理来维护。 图7示出了根据某些实施方式的具有流水线安全概念的数据流图700。在某些实 施方式中,如果数据流没有参考(即,查找)本身也被更新的任何资源,则数据流称为流水 线安全的。在该情形中,实施方式能够将具有相同SID的多个事务项聚集到一个聚集事务 中,只要这些具有相同SID的多个项按照到达的顺序处理,就不会影响应用的语义。另外, 实施方式可以将组成聚集事务的个体事务项流水线化到数据流执行过程中,这允许对流水 线并行性的扩展使用以改进性能。另外,实施方式不需要建立第一聚集事务集合。相反,该 第一集合能够虚拟地存在。针对第一聚集事务集合而标识的每个项能够直接被发送到流图 中。在满足上述"执行标准"时,实施方式可以将工作单元结束标记放置到流图中,并开始 对来自紧跟其后的下一聚集事务集合中的项进行流水线化。实施方式保证在先前的聚集 事务完全提交(即,包括所有事务,包括由稍后描述的解聚集所创建的那些事务)之前,不 会提交后续聚集事务。 在某些实施方式中,如果数据流不是流水线安全的,则实施方式(a)逐个处理通 过整个数据流的聚集事务的事务项,但是保留计算阶段512之后的任何提交,或者(b)分离 聚集事务以使得没有具有相同SID的两个事务项进入相同的聚集事务集合。因为聚集事务 集合被逐个处理(包括其最终提交),所以这保证了过程语义的保持。 在某些实施方式中,流水线安全例如表示数据流可以在表Y中查找账号X,继而 使用结果来更新表Z。表是分离的,所以在查找和更新之间没有依赖关系;因此,实施方式 可以在不发生任何语义改变的情况下将进入流的请求流水线化。在流的操作符之间可以存 在任何类型的缓冲区,并且不影响语义。在某些实施方式中,执行所有的查找,然后执行所 有的更新,在某些实施方式中,查找和更新是交错的。 流水线安全还表示数据流可以在表Y中查找账号X,然后针对账号X在特定行更 新表Y,只要已知流水线中没有别处携带账号X。在这种情况下,表不是分离的,但是已知行 是分离的。 流水线不安全意味着数据流可以在表Y中查找账号X,然后使用一些结果更新表 Y,但是实施方式无法知道该更新是否是针对将由后续记录在后续查找中进行查找的记录。 查找是或可以是针对相同的记录。在这种情况下,将数据流的输入消息流水线化是不安全 的,因为更新和查找将如何交错是未知的,并且不同的交错可能产生不同的语义。例如,设 想所有的输入消息携带相同的账号X。如果在表Y中首先执行所有的查找,然后执行所有的 更新,结果可能与查找和更新交错的情况明显不同。 由此,在给出通过对数据流图的分析而获取的数据流及其操作符属性的有关知识 的情况下,实施方式在实现时可以主动进行并行/重叠。
在计算阶段512,在通过数据流处理聚集事务时,个体事务流过操作符的图,通过 图的路径最终由工作单元结束标记遍历,该标记分开并连接,以跟随通过图的路径,从而保 证图是空的并且可以检测到处理的结束。该波特征在2005年4月21日公开的美国专利申 请No. 20050086360中进行了描述,在此通过参考引入其全部内容。 在数据流图上流动的每个数据项携带导致其创建的原始事务的会话标识符(SID) 和消息标识符;因此,如果单个传入事务项导致数据流图创建了以某些变换逻辑或目标资 源为目的地的多个数据项,则这些数据项中的每一个携带来自该记录的SID和MID。
未决聚集事务包括在聚集事务的处理期间由过程表示的更新、插入、删除、入队和 出队等。 一旦数据流图已经完成聚集事务的处理,则实施方式尝试提交未决聚集事务。
如果在计算阶段期间检测到错误,例如,SQL数据库操作失败,或变换计算除以零, 则从导致错误的数据项中提取MID。如果检测到多个错误,则可能存在表示导致错误的事务 项集合的MID的汇集。这些MID称为错误原因,并且其将在下文描述的解聚集阶段516中 被使用。 一旦错误原因中出现了至少一个错误MID,则计算阶段可以立即结束。备选地,可 以收集错误原因MID的全集,或者一旦错误原因中发现某个数目的MID,则计算阶段512立 即结束。此处可以使用多种决策。例如,错误可能导致全部或部分事务(坏MID)被引导至 解聚集阶段516。 —旦计算阶段结束,如果没有错误原因,则实施方式执行提交阶段514。如果存在 错误原因,则实施方式立即转到解聚集阶段516。 如果存在提交,则提交未决聚集事务。如果提交成功,则这完成了聚集事务中所有 事务的处理,并且实施方式返回聚集阶段510,以标识和开始另一聚集事务的处理。
如果提交失败,则针对资源的活动的所有副作用自动回滚(通常是针对事务资 源)。 在某些实施方式中,可以通过浏览聚集阶段510期间的输入队列以及在其余更新 操作成功时执行破坏性的出队操作,来将事务的开始延缓到最后的可能时刻。也即,实施方 式刚好在提交操作之前执行破坏性的出队操作。在给定的特定聚集粒度下,这将保持事务 "开放时间"尽可能小。破坏性出队操作(也称为破坏性读取)是从队列中读取并删除消息 的操作,不同于读取但不删除消息的浏览。 在具有错误原因的解聚集阶段516,如果存在已经标识的错误原因,则实施方式将 聚集事务划分为多个更小的聚集事务,以使得每个新的聚集事务仅包含具有最多一个错误 原因中的MID的事务项。在某些实施方式中,攻击型(offending)导致错误的事务项被隔 离在其自身的"聚集"事务中,每个这样"聚集"事务包含恰好一个事务项。然后实施方式 以与上述相同的方式处理这些新聚集事务中的每一个,如同这些新聚集事务是起初流出聚 集操作符的聚集事务一样。 在一定量的解聚集之后,作为错误原因的个体事务项自己组成了"聚集"事务。在 这种情况下,实施方式已经进行了尽可能多的解聚集,并且事务项仍然导致失败。在某些实 施方式中,事务项在流中重试一定的次数,并且一旦事务项被发现以错误原因结束达某个 次数,则该事务项被作为有害数据而被拒绝。有害数据事务被放置到有害数据队列中,并且 执行包括将该事务从传入队列中出队以及将其入队到有害队列中的事务。该事务不应当失 败,但是,如果该事务确实失败了 ,则确定系统已经崩溃。
在没有错误原因的解聚集阶段518,如果没有错误原因,则系统可能由于瞬态问题 或资源耗尽而未能提交未决聚集事务,因为聚集事务确实过大。在这种情况下,实施方式通 过将聚集事务分为一定数目的较小聚集事务来解聚集(例如,事务可以分成两半,分解为 个体事务项,等等)。然后实施方式以与上述相同的方式处理这些新聚集事务中的每一个,
如同这些新聚集事务是最初流出聚集操作符的聚集事务一样。如果未能提交的聚集事务包 括一个事务项,则实施方式将该聚集事务作为有害数据来处理。 在某些实施方式中,在将有害数据队列用于数据项时,第二事务是可用的。该有害 队列可以馈送到具有不同逻辑的备选事务处理数据流图中。该第二图试图不同地处理项, 并试图提交针对资源的不同活动。虽然事务项对于初始处理流是有害的,但是事务项仍然 可能由第二处理流成功处理。第二流甚至可以重新聚集事务,并且以其他方式使用此处针 对基本事务的聚集系统所描述的相同技术。第二流可以依赖于拒绝原因的性质。例如,因无 效名称和地址数据而被拒绝的MIDS可以在第二流中清理并重新处理,而因无效数值数据 而被拒绝的MIDS可以发送回源,以便在第二流中修复。在某些实施方式中,可以具有这类 流逻辑的任意长度的链,每个流逻辑消耗来自之前流(例如,初始流、第二流、第三流等等) 的拒绝。 图8示出了根据某些实施方式的使用并行性的示意图800。实施方式可以通过在 聚集阶段之前执行分裂阶段来并行执行上述技术。分裂阶段通过保证具有相同SID的所有 事务项最终处于相同的分区中的任何逻辑将传入事务项划分为分区。然后每个分区是对来 自前面聚集以上处理的分离实例的输入。在某些实施方式中,所有分区可以使用公共有害 数据队列。此类并行性将SID上的散列函数用于分裂。散列分区函数保证具有相同关键字 的记录将流入相同的分区。 TAA系统130自动地基于系统吞吐量的测量来调节由聚集阶段510所创建的聚集 事务的目标大小。因为解聚集和重试循环可能降低系统吞吐量,所以TAA系统130自动地 将目标大小变小,以使得目标聚集大小选择为使其尽可能大,但是没有大到可能包含有害 事务项,并且没有大到可能由于瞬态原因或资源限制原因而失败。 在某些实施方式中,聚集产生死锁,并且解聚集能够清除不会在非聚集执行中发 生的任何死锁。基于吞吐量的聚集大小的适应性调节避免了使这个问题非常严重以至于减 慢整个系统性能。死锁和超时在重负载下最为频繁地发生。重负载能够由大事务或多个小 事务的开销引起。调节事务大小可以改进整个系统的性能,从而降低死锁的可能性。
实施方式表示处理逻辑,使得处理逻辑能够应用于聚集事务的集合,其中聚集考 虑到了具有相同SID的事务的FIFO处理的需要。在某些实施方式中,处理逻辑使用数据流 技术来表示,其附加的有益效果是在可能时并行性(分区和流水线二者)可以与自动事务 聚集结合使用。 图9A、图9B和图9C示出了根据某些实施方式的逻辑。控制开始于块900 (图9A), TAA系统130获取具有消息标识符(MID)和会话标识符(SID)的事务项。在块902中,TAA 系统130将事务项添加到其中没有其他事务项具有相同SID的最早的聚集事务(即,以聚 集事务列表150的顺序)。在块904中,TAA系统130确定聚集事务列表150中的第一聚集 事务是否满足执行标准(例如定时器超时、聚集事务的大小到达目标大小,或者由以下所 述的解聚集(图9中的916、924)创建)。如果满足执行标准,处理继续到块906,否则,处理转回块900。 在块906中,TAA系统130将满足执行标准的第一聚集事务沿数据流执行过程发送,将其从聚集事务列表150中移除。在块908中,一旦聚集事务已经完成了通过数据流,则TAA系统130确定是否提交。在某些实施方式中,TAA系统130依靠波标记,其跟随在事务中的所有记录之后,以得知何时开始提交阶段。如果提交,处理继续到块910,否则,处理继续到块912 (图9B)。在块910中,TAA系统130提交聚集事务。在块911中,TAA系统130基于系统吞吐量的测量来调节聚集事务的目标大小,并且处理转回块904。
在块912中,TAA系统130确定是否存在可获得的错误原因。如果存在,处理继续到块914,否则,处理继续到块922 (图9C)。在块914中,TAA系统130确定是否执行解聚集。例如,TAA系统130确定是否已经对聚集事务执行了多次解聚集。在某些实施方式中,这是可能的,因为第三解聚集过程知道其重新处理的消息已经被拒绝,或坏消息可能带有重试计数的标签。如果要执行解聚集,处理继续到块916,否则处理继续到块926 (图9C)。在块916中,TAA系统130将聚集事务分解为多个较小的聚集事务,使得每个新聚集事务包含最多一个具有错误原因中的MID的事务项。从块916 (图9B),处理继续到块928 (图9C)。在块928中,将新的、较小的聚集事务放置在聚集事务列表150的前面,并且对其进行特别标记,使得这些新创建的聚集事务(其是之前尝试过的聚集事务的解聚集)被认为满足执行标准。因此,这些新解聚集中的第一个将被立即发送到计算阶段中。在块930中,TAA系统130基于系统吞吐量的测量来调节聚集事务的目标大小,并且处理转回块904 (图9A)。
在块922中,即使没有可用的错误原因,TAA系统130也确定是否执行解聚集。如果执行,处理继续到块924,否则,处理继续到块926。在块924中,TAA系统130将聚集事务分解为多个较小的聚集事务,并且处理继续到块928。在块926中,执行有害队列处理。这包括向有害队列发送事务项,以及可选地,执行第二流、第三流等等。处理从块926继续到块930。 由此,实施方式提供了聚集事务大小的自动调节。实施方式提供了较快的事务处理和自动调节。实施方式组合了数据流和事务处理。 实施方式与提取、转换和加载(ETL)工具、复杂事件处理系统以及过程和数据级别二者的信息整合是兼容的。 在某些实施方式中,如果存在要针对产生有害数据项的会话而处理的消息,会话可以迫使退出(sidelined)(即,识别用于该会话的后续消息,并全部归类为有害数据项)。
附加实施方式细节 所描述的操作可以实现为方法、使用标准编程和/或工程技术的计算机程序产品或设备,以产生软件、固件、硬件,或其任何组合。 每个实施方式可以采用完全硬件实施方式、完全软件实施方式或包含硬件和软件元素的实施方式的形式。实施方式可以在软件中实现,其包括但不限于固件、常驻软件、微代码等等。 另外,实施方式可以采用可以访问提供用于使用的程序代码的计算机可用或计算机可读介质的,或与计算机或任何指令执行系统连接的计算机程序产品的形式。为了该描述的目的,计算机可用或计算机可读介质可以是可以包含、存储、通信、传播或传输所使用的程序,或与指令执行系统、设备或器件相连接的任何设备。
12
所描述的操作可以实现为计算机可用或计算机可读介质中维持的代码,其中处理器可以从计算机可读介质中读取并执行代码。介质可以是电子、磁性、光学、电磁、红外或半导体系统(设备或器件)或传播介质。计算机可读介质的示例包括半导体或固体存储器、磁带、可移动计算机软盘、刚性磁盘、光盘、磁性存储介质(例如,硬盘驱动器、软盘、带等等),易失性和非易失性存储设备(例如,随机访问存储器(RAM)、DRAM、SRAM、只读存储器(ROM) 、 PR0M、 EPROM、闪存、固件、可编程逻辑等等)。光盘的当前示例包括压縮盘只读存储器(CD-ROM),压縮盘读/写(CD-R/W)以及DVD。 实现所描述的操作的代码还可以在硬件逻辑(例如,集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC)等等)中实现。另外,实现所描述的操作的代码可以在"传输信号"中实现,其中传输信号可以通过空间或通过传输介质如光纤、铜线等等传播。代码或逻辑编码到其中的传输信号还可以包括无线信号、卫星传输、无线电波、红外信号、蓝牙等等。代码或逻辑编码在其中的传输信号能够通过传输站发送,并通过接收站接收,其中编码在传输信号中的代码或逻辑可以编码并存储在接收或发送站或设备的硬件或计算机可读介质中。 计算机程序产品可以包括在其中可以实现代码的计算机可用或计算机可读介质、硬件逻辑和/或传输信号。当然,本领域技术人员将认识到,在不脱离实施方式的范围的情况下,可以对该配置进行很多改进,并且计算机程序产品可以包括本领域内所公知的任何适合的信息承载介质。 以示例的方式,术语逻辑可以包括软件、硬件、固件和/或软件和硬件的组合。
某些实施方式可以指向由人部署计算基础架构的方法,或将自动处理集成计算机可读代码部署到计算系统中的方法,其中代码与计算系统的组合使得能够执行所描述的实现的操作。 图9A、图9B和图9C的逻辑描述了以特定顺序发生的操作。在备选实施方式中,特
定的逻辑操作可以以不同的顺序执行,修改或移除。另外,操作可以添加到上述逻辑中,并
仍然符合所描述的实施方式。另外,此处所描述的操作可以顺序地发生,或特定操作可以并
行处理,或描述为由单个处理执行的操作可以通过分布式的处理来执行。 图9A、图9B和图9C所示出的逻辑可以在软件、硬件、可编程或非可编程门阵列逻
辑或在硬件、软件或门阵列逻辑的一些组合中实现。 图10示出了根据特定实施方式的可以使用的系统架构1000。客户端计算机100和/或服务器计算机120可以实现系统架构1000。系统架构1000适合存储和/或执行程序代码,并包括至少一个处理器1002,其通过系统总线1020直接或间接连接到存储单元1004。存储单元1004可以包括在程序代码的实际执行期间采用的本地存储器,海量存储器或高速缓冲存储器,其提供至少一些程序代码的临时存储,以为了减少执行期间必须从海量存储器检索代码的次数。存储单元1004包括操作系统1005和一个或多个计算机程序1006。 输入/输出(I/O)设备1012、1014(包括但不限于键盘、显示器、指点设备等等)可以直接或通过其间的I/O控制器IOIO连接到系统。 网络适配器1008也可以连接到系统,以使得数据处理系统成为通过其间的私有或公共网络连接到其他数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器以及以太网卡仅是网络适配器1008的几个当前可用的类型。系统架构1000可以连接到存储1016(例如,非易失性存储区,如磁盘驱动器、光盘驱动器、带驱动器等等)。存储1016可以包括内部存储设备或附加的或网络可访问存储。存储1016中的计算机程序1006可以加载到存储器元件1004中,并且以本领域公知的方式由处理器1002执行。
系统架构IOOO可以包括比示出的更少的元件,此处没有示出的附加元件,或示出
元件和附加元件的一些组合。系统架构iooo可以包括本领域公知的任何计算设备,例如主
机、服务器、个人计算机、工作站、膝上型计算机、手持计算机、电话设备、网络设备、虚拟化设备、存储控制器等等。 为了示意和描述的目的提出了本发明的上述的实施方式。其不是为了穷举性的或将实施方式限制于所公开的精确形式。根据以上教导可以进行很多改进和变化。实施方式的范围不由该详细描述限定,而是由附后的权利要求限定。以上的说明、示例和数据提供了制造和使用实施方式的组成的完整描述。因为在不偏离实施方式的精神和范围的情况下可以产生很多实施方式,所以实施方式存在于以下附加的权利要求或任何随后提交的权利要求,及其等效项。
权利要求
一种计算机实现的方法,包括获取具有消息标识符和会话标识符的事务项;将所述事务项添加到聚集事务列表中的、其中没有其他事务项具有相同会话标识符的最早聚集事务;执行所述聚集事务列表中满足执行标准的第一聚集事务;响应于确定所述聚集事务没有提交,将所述聚集事务分解为多个较小的聚集事务;以及基于系统吞吐量的测量来调节聚集事务的目标大小。
2. 如权利要求1的方法,还包括将所述多个较小的聚集事务置于所述聚集事务列表的前面;以及 将所述多个较小的聚集事务标记为已经满足所述执行标准。
3. 如权利要求1或2的方法,其中所述执行标准包括以下至少一个定时器超时,以及 所述聚集事务的大小达到预定目标大小。
4. 如权利要求1、2或3的方法,其中分解所述聚集事务还包括 确定错误原因可获得;以及将所述聚集事务分解为多个较小的聚集事务,使得每个新聚集事务最多包含一个具有 所述错误原因中的消息标识符的事务项。
5. 如权利要求1、2或3的方法,其中分解所述聚集事务还包括 确定错误原因不可获得;以及 将所述聚集事务分解为所述多个较小的聚集事务。
6. 如前述任一权利要求的方法,其中执行所述聚集事务包括沿数据流执行过程发送 所述聚集事务。
7. 如前述任一权利要求的方法,还包括将传入事务项划分到分区中,其中具有相同会话标识符的事务项在相同的分区中。
8. 如前述任一权利要求的方法,还包括将组成所述聚集事务的个体事务项流水线化到数据流执行过程中。
9. 如前述任一权利要求的方法,还包括响应于确定所述事务项已经提交,基于系统吞吐量的测量来调节每个聚集事务的目标 大小。
10. —种计算机程序产品,包括计算机可用介质,所述计算机可用介质包括计算机可读 程序,其中所述计算机可读程序在计算机上执行时使得计算机获取具有消息标识符和会话标识符的事务项;将所述事务项添加到聚集事务列表中的、其中没有其他事务项具有相同会话标识符的 最早聚集事务;执行所述聚集事务列表中满足执行标准的第一聚集事务;响应于确定所述聚集事务没有提交,将所述聚集事务分解为多个较小的聚集事务;以及基于系统吞吐量的测量来调节聚集事务的目标大小。
11. 如权利要求10的计算机程序产品,其中所述计算机可读程序在计算机上执行时使得计算机将所述多个较小的聚集事务置于所述聚集事务列表的前面;以及 将所述多个较小的聚集事务标记为已经满足所述执行标准。
12. 如权利要求10或11的计算机程序产品,其中所述执行标准包括以下至少一个定 时器超时,以及所述聚集事务的大小达到预定目标大小。
13. 如权利要求10、11或12的计算机程序产品,其中当分解所述聚集事务时,所述计算 机可读程序在计算机上执行时使得计算机确定错误原因可获得;以及将所述聚集事务分解为多个较小的聚集事务,使得每个新聚集事务最多包含一个具有 所述错误原因中的消息标识符的事务项。
14. 如权利要求10、11或12的计算机程序产品,其中当分解所述聚集事务时,所述计算 机可读程序在执行时使得计算机确定错误原因不可获得;以及 将所述聚集事务分解为所述多个较小的聚集事务。
15. 如权利要求10到14任一项的计算机程序产品,其中执行所述聚集事务包括沿数据 流执行过程发送所述聚集事务。
16. 如权利要求10到15任一项的计算机程序产品,其中所述计算机可读程序在计算机 上执行时使得计算机将传入事务项划分到分区中,其中具有相同会话标识符的事务项在相同的分区中。
17. 如权利要求10到16任一项的计算机程序产品,其中所述计算机可读程序在计算机 上执行时使得计算机将组成所述聚集事务的个体事务项流水线化到数据流执行过程中。
18. 如权利要求10到17任一项的计算机程序产品,其中所述计算机可读程序在计算机 上执行时使得计算机响应于确定所述事务项已经提交,基于系统吞吐量的测量来调节每个聚集事务的目标 大小。
19. 一种系统,包括能够执行操作的逻辑,所述操作包括 获取具有消息标识符和会话标识符的事务项;将所述事务项添加到聚集事务列表中的、其中没有其他事务项具有相同会话标识符的 最早聚集事务;执行所述聚集事务列表中满足执行标准的第一聚集事务;响应于确定所述聚集事务没有提交,将所述聚集事务分解为多个较小的聚集事务;以及基于系统吞吐量的测量来调节聚集事务的目标大小。
20. 如权利要求19的系统,其中所述操作还包括 将所述多个较小的聚集事务置于所述聚集事务列表的前面;以及 将所述多个较小的聚集事务标记为已经满足所述执行标准。
21. 如权利要求19或20的系统,其中所述执行标准包括以下至少一个定时器超时,以及所述聚集事务的大小达到预定目标大小。
22. 如权利要求19、20或21的系统,其中分解所述聚集事务的操作还包括 确定错误原因可获得;以及将所述聚集事务分解为多个较小的聚集事务,使得每个新聚集事务最多包含一个具有 所述错误原因中的消息标识符的事务项。
23. 如权利要求19、20或21的系统,其中分解所述聚集事务的操作还包括 确定错误原因不可获得;以及 将所述聚集事务分解为所述多个较小的聚集事务。
24. 如权利要求19到23任一项的系统,其中执行所述聚集事务包括沿数据流执行过程 发送所述聚集事务。
25. 如权利要求19到24任一项的系统,其中所述操作还包括 将传入事务项划分到分区中,其中具有相同会话标识符的事务项在相同的分区中。
26. 如权利要求19到25任一项的系统,其中所述操作还包括 将组成所述聚集事务的个体事务项流水线化到数据流执行过程中。
27. 如权利要求19到26任一项的系统,其中所述操作还包括响应于确定所述事务项已经提交,基于系统吞吐量的测量来调节每个聚集事务的目标 大小。
28. —种包括程序代码方法的计算机程序,其适于在所述程序在计算机上执行时,执行 权利要求1到9任一项的方法。
全文摘要
本发明提供了一种用于提高事务处理吞吐量的技术。获取具有消息标识符和会话标识符的事务项。将事务项添加到聚集事务列表中的、其中没有其他事务项具有相同会话标识符的最早聚集事务。执行聚集事务列表中满足执行标准的第一聚集事务。响应于确定聚集事务没有提交,将聚集事务分解为多个较小的聚集事务,以及基于系统吞吐量的测量来调节每个聚集事务的目标大小。
文档编号G06F9/46GK101784988SQ200880104010
公开日2010年7月21日 申请日期2008年8月22日 优先权日2007年8月30日
发明者M·J·卡尼, M·J·贝克尔勒 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1