协调 DB2CONN, DB2ENTRY和 BIND 选项
您可以创建许多不同的 DB2CONN, DB2ENTRY和 BIND 选项组合。
要优化性能,您需要执行的最重要的操作之一是定义给定的一组事务是否必须使用一个或多个受保护线程。 选择线程类型以实现最佳性能 对此提供了更详细的建议。 接下来,请考虑定义 BIND 参数,以最小化与处理 SQL 事务所涉及的主要活动相关的总工作量。 请参阅 选择 BIND 选项以实现最佳性能 以获取更多信息。
通常,建议您将 DB2CONN, DB2ENTRY和 BIND 选项的初始值设置为 表 1中显示的值。 您可能会发现,对于自己的事务,您可以从其他组合中获得更好的性能。 对于每种事务类型,将显示建议的线程类型和 BIND 选项。 还提供了有关事务是否溢出到池的建议。
| 交易描述 | 线程类型 | OVERFLOW | ACQUIRE | RELEASE |
|---|---|---|---|---|
| 大容量 (所有类型) | 受保护的条目 | 注释 1 | 使用 | DEALLOCATE |
| 以终端为导向,具有多个落实 (如果 NONTERMREL=YES ,则加上非终端) | 受保护的条目 | 注释 2 | 使用 | DEALLOCATE |
| 低容量,需要快速响应时间 | 不受保护的条目 | 是 | 使用 | 落实 |
| 低容量,有限并行性 | 不受保护的条目 | 从不 | 使用 | 落实 |
| 低容量,不需要快速响应时间 | 池 | 不适用 | 使用 | 落实 |
| 非面向终端,具有多个落实 (NONTERMREL = NO) | 注释 3 | 注释 3 | 使用 | DEALLOCATE |
备注信息:
|
||||
在 表 1 中,有限并行意味着只允许有限数量 (n) 的事务同时运行。 当 n=1时存在特殊情况,在这种情况下,将对事务进行序列化。 如果事务速率足够高,使其值得使用,那么仍可以使用受保护线程。 如果允许溢出到池,那么无法控制事务。 建议您使用 CICS® 机制来限制在特定类中运行的事务数,而不是强制事务排队等待有限数量的线程。
如 表 1 所示,通常建议使用 DB2CONN, DB2ENTRY和 BIND 选项的一些组合。 但是,在特定情况下,可以使用其他组合。
表 2 显示了针对三个建议的 DB2CONN, DB2ENTRY和 BIND 规范集处理 SQL 请求所涉及的活动的摘要。 该表还演示了在不更改授权标识的情况下使用受保护线程的性能优势。 所需活动在表中标记如下:
- X
- 必需活动
- (1)
- 仅当新的授权标识时才需要
- (2)
- 仅当 SQL 部分尚未包含在 EDM 池中时才需要
- (3)
- 仅当 SQL 部分尚未包含在 "游标表" 中时才需要
| 活动 | 受保护的线程 | 不受保护的线程 | ||
|---|---|---|---|---|
| 获取 (使用) 发行版 (取消分配) | 获取 (使用) 发行版 (落实) | 获取 (使用) 发行版 (取消分配) | ||
| 每个线程的活动 | 每个事务的活动 | 每个事务的活动 | 每个事务的活动 | |
| 创建线程: | X | X | X | |
| SIGNON | X | (1) | X | X |
| 授权检查 | X | (1) | X | X |
| 装入 SKCT 头 | X | X | X | |
| 装入 CT 头 | X | X | X | |
| 获取所有 TS 锁定 | X | X | X | |
| 装入所有 DBD | X | X | X | |
| 对于每个 SQL 语句: | ||||
| 装入 SKCT SQL 部分 | (2) | (2) | (2) | |
| 创建 CT 副本 | (3) | X | X | |
| 获取所有 TS 锁定 | X | X | ||
| 装入所有 DBD | X | X | ||
| 承诺: | ||||
| 释放页面锁定 | X | X | X | |
| 释放 TS 锁定 | X | |||
| 可用 CT 页面 | X | |||
| 终止线程: | X | X | X | |
| 释放 TS 锁定 | X | X | X | |
| 可用 CT 页面 | X | X | ||
| 免费工作存储器 | X | X | X | |