使用耦合设施数据表

用于从耦合设施数据表 (CFDT) 存储和检索数据的 API 基于用于用户维护的数据表的文件控制 API。

CFDT 在许多方面与共享用户维护的数据表相似。 有关共享数据表的信息,请参阅 共享数据表简介

CFDT 是使用具有以下参数的 FILE 定义向 CICS® 区域定义的:
  • TABLE(CF)
  • MAXNUMRECS(NOLIMITnumber(1 到 99999999)
  • CFDTPOOL(pool_name)
  • TABLENAME(名称)
  • UPDATEMODEL(CONTENTION|LOCKING)
  • LOAD(NO|YES)

MAXNUMRECS 指定 CFDT 可以保存的最大记录数。

打开 CFDT 的第一个 CICS 区域确定文件的属性。 成功打开后,这些属性将通过耦合设施列表结构中的数据与 CFDT 保持关联。 除非 CFDT 服务器操作员命令删除或更改此表或耦合设施列表结构,否则即使在 CICS 和 CFDT 服务器重新启动后,这些属性也会持久存在。 尝试打开 CFDT 的其他 CICS 区域必须具有一致的 CFDT 定义,例如使用相同的更新模型。

CFDT 服务器控制耦合设施列表结构和保存在此结构中的数据表。 耦合设施数据表服务器参数 中记录的参数描述了如何指定初始结构大小,结构元素大小和进入元素比率。

与 UMT 不同,数据不会保留在 MVS™ 映像中的数据空间中,由 CICS 区域控制,而是保留在耦合设施列表结构中。 控制在 CFDT 服务器区域之间共享。 请求访问 CFDT 的 CICS 区域使用 MVS 授权跨内存 (AXM) 服务器环境与在同一 MVS 映像中运行的 CFDT 服务器区域通信。 CICS 临时存储器服务器使用相同的方法。

CFDT 对于非正式共享数据很有用。 使用可能包括综合系统范围的共享暂存区,电话号码查找表以及从客户列表创建客户子集。 与现有共享此类数据的方法 (例如共享数据表,共享临时存储器或 RLS 文件) 相比, CFDT 具有一些独特的优势:
  • 如果频繁访问数据以进行修改,那么与功能交付的 UMT 请求相比, CFDT 提供了卓越的性能,或者使用 RLS 文件
  • CFDT 保留的数据可以在 CICS 事务中恢复。 不支持恢复结构,但如果发生工作单元故障, CICS 区域故障, CFDT 服务器故障或 MVS 故障 (即,由故障发生时未完成的工作单元进行的更新) ,那么 CFDT 记录可恢复。 此类可恢复性并非由共享临时存储器提供。

锁定模型和争用模型

有两个模型的耦合设施数据表,一个争用模型或锁定模型。

锁定模型。 通过更新与保存数据的耦合设施列表结构元素相关联的附属区域,将保留在耦合设施列表结构中的记录标记为锁定。 锁定记录需要额外的耦合设施访问权来设置锁定,因为在第一次访问时已确定数据尚未锁定。

但是,如果存在更新冲突,那么需要一些额外的耦合设施访问,如以下事件序列中所述:
  1. 迂到锁定争用的请求最初被拒绝。
  2. 请求者修改锁定的记录助手区域以表示对该区域的兴趣。 此区域是锁定等待者的第二个额外耦合设施访问。
  3. 锁定所有者已拒绝更新,因为记录助手区域已修改,需要 CICS 区域读取并重试更新。 这将导致两个额外的耦合设施访问。
  4. 锁定所有者发送锁定释放通知消息。 如果另一个服务器请求了锁定,那么这将导致耦合设施访问以将通知消息写入另一个服务器,并导致耦合设施访问以在另一端读取该消息。

争用模型。 争用更新模型使用条目版本号来跟踪更改。 每次更新记录时,都会更改条目版本号。 此更改允许更新请求检查自获取记录副本以来记录是否未变更。

发生更新冲突时,需要其他耦合设施访问:
  • 检测到记录已更改的请求最初被拒绝,并发送 CHANGED 响应。
  • 接收响应的应用程序必须决定是否重试该请求。

通过使用争用模型,异常条件 (CHANGED) 通知应用程序需要重试在读更新之后的重写或在读更新之后的删除,因为在可以执行重写或删除之前,表中记录的副本已由另一个任务更新。 争用模型不会锁定记录,但会使用该记录的表条目的版本号来检查该记录是否未被改变。 如果重写或删除时此记录的版本与执行原始读取以进行更新时的版本不同,那么将返回 CHANGED 条件。

锁定模型导致在读取更新请求后锁定记录,因此无法进行多次更新。

争用模型 CFDT 不可恢复。 锁定模型 CFDT 可恢复或不可恢复。 对于不可恢复的锁定模型, CFDT 锁定被挂起,直到通过重写,删除或解锁请求完成对更新序列的读取,但直到下一个同步点为止。 如果工作单元发生故障,那么不会回退更改。 在可恢复的情况下,锁定一直保持到同步点为止,如果发生工作单元故障, CICS 区域故障, CFDT 服务器故障或 MVS 故障,那么 CFDT 记录可恢复。

使用更新模型和恢复的相对成本与支持请求所需的耦合设施访问量相关。 争用需要最少的访问次数,但如果更改了数据,那么将需要额外的编程和耦合设施访问来处理此情况。 锁定需要更多耦合设施访问权,但这意味着不需要重试请求,而在使用争用模型时可能需要重复尝试。 恢复还需要进一步的耦合设施访问,因为恢复数据保留在耦合设施列表结构中。

下表显示了通过更新模型支持 CFDT 请求类型所需的耦合设施访问量。

表 1. 耦合设施访问 (按请求类型和更新模型)
请求描述 争用 锁定 可恢复
打开,关闭 3 3 6
读取,点 1 1 1
写新记录 1 1 2
读取以进行更新 1 2 2
解锁 0 1 1
重写 1 1 3
删除 1 1 2
按键删除 1 2 3
SYNCPOINT 0 0 3
锁定等待 0 2 2
锁定 POST 0 2 2
跨系统 POST 0 每个等待服务器 2 个 每个等待服务器 2 个

有关如何定义耦合设施数据表 (CFDT) 以及如何启动耦合设施数据表服务器的描述,请参阅 定义耦合设施数据表池

效果

在将 CFDT 与功能交付的 UMT (在综合系统的不同 MVS 成员上运行的 2 CICS 区域之间) 的使用进行比较的测试中,发现通过使用 CFDT ,总体 CPU 利用率降低了 40% 以上。 以下是一些可能有用的一般意见:

  • CFDT 服务器将作为同步耦合设施请求来处理对 4094 字节或更少 (4096 K 或 4 K ,包括 2 字节的前缀数据) 的 CFDT 记录的访问。 针对大于 4 K 字节的记录的请求以异步方式进行。 这些异步访问在 CPU 使用率和响应时间方面的成本更高一点。 在比较相同事务速率 (337/秒) 但不同记录大小的基准测试中,小于 4 K 的 CFDT 工作负载所耗用的 CPU 比 UMT 等效 CPU 少 41.7%。 大于 4 K 的 CFDT 工作负载占用了 41.1% 的 CPU ,并且没有可测量的响应时间降级。
  • 使用争用模型需要最少的耦合设施访问权,但由于需要处理 CHANGED 条件并且可能需要重试,因此只有很少的 CHANGED 条件时才会获得最大收益。 在随后的 CICS 统计信息中报告了这些实例。
  • 如果 CFDT 记录的长度不超过 63 个字节,那么记录数据将存储在耦合设施列表结构的入口助手区域中,这将提高使用争用更新方式时的性能。
  • 将锁定模型与恢复配合使用是 CFDT 操作成本最高的方式。 这不仅需要更多耦合设施访问,而且 CFDT 服务器还充当资源管理器,将更新落实与发出请求的 CICS 区域进行协调。 在以每秒 168 个事务速率进行 CFDT 记录的 READ/UPDATE 和 REWRITE 的基准测试中,使用争用和锁定 CFDT 的事务之间的 CPU 利用率没有显着差异。 但是,如果将 CFDT 定义为可恢复,那么相同事务的 CPU 利用率将提高大约 15%。

建议

选择适当使用 CFDT。 例如,对于跨系统,可恢复的暂存区存储,其中共享 TS 未提供必需的功能,或者 VSAM RLS 会产生过多的处理。

大型文件需要大量耦合设施存储器来包含该文件。 较小的文件是更好的 CFDT 候选项 (除非您的应用程序被写入以控制 CFDT 中保存的记录数)。

与争用模型相比,使用锁定模型的额外成本并不大。 考虑到如果使用现有程序,那么使用争用模型可能需要更改应用程序,因此锁定可能是 CFDT 的最佳更新模型选择。 如果耦合设施访问对您至关重要,那么会通过争用模型将其最小化。

在 CPU 使用率和耦合设施利用率方面,恢复成本稍高。

在调整 CFDT 大小时允许扩展。 可以使用 SETXCF ALTER 命令动态增加结构占用的耦合设施存储量,直至达到关联的耦合设施资源管理 (CFRM) 策略中定义的最大值。 对 CFDT 服务器定义的 MAXTABLES 值允许进行扩展。 因此,请考虑将其设置为高于初始需求的值。 如果 CFDT 已满,那么可以使用 CFDT 操作员命令 SET TABLE=name,MAXRECS=n来增加其容量。

通过 CICS 和 CFDT 统计信息以及 RMF 定期监视 CFDT 的利用率。 请检查结构的大小对于其包含的数据量是否合理。 最多使用 80% 是合理的目标。 在 CFRM 策略定义中定义大于 CFDT 服务器启动参数中 POOLSIZE 参数指定的初始分配大小的最大耦合设施列表结构大小。 此设置使您能够在特殊情况下使用 SETXCF ALTER 命令动态放大结构 (如果该结构已填充)。

确保 AXMPGANY 存储池足够大。 可以通过增加 CFDT 服务器的 REGION 大小来增加此池。 AXMPGANY 存储器不足可能导致 CFDT 服务器中出现 80A 异常终止。

监控

CICS 和 CFDT 服务器都会生成统计信息记录。 在 "耦合设施数据表池" 报告中描述了这些记录。

CICS 文件统计信息按类型报告针对每个 CFDT 发出的各种请求。 它们还会报告 CFDT 是否已满,保留的最大记录数以及更改的响应/锁定等待计数。 最后一项可用于确定争用 CFDT 返回 CHANGED 条件的次数。 对于锁定 CFDT ,此计数报告由于请求的记录已锁定而请求等待的次数。

有关更多信息,请参阅 数据表报告