DB2 初始化参数
可能要进行更改以供 ArcSDE 地理数据库使用的一些 DB2 参数如下:
影响锁定的参数
死锁可能很常见,具体取决于客户端应用程序和数据库配置。请注意,该问题可能随状态谱系的加深而变得严重。幸运的是,DB2 提供了多个调整参数来对以下内容进行控制:锁列表 (LOCKLIST) 的大小、一个应用程序可保存的锁的最大百分比 (MAXLOCKS)、一个请求等待获取锁的时间量 (LOCKTIMEOUT)、死锁检测的频率间隔 (DLCHKTIME) 和死锁回滚行为 (DB2LOCK_TO_RB)。
DB2 9 中 LOCKLIST 和 MAXLOCKS 的默认值是 AUTOMATIC,可使这些参数进行自我调整。这使得 DB2 内存调谐器可以在不同的内存使用者之间动态调整内存资源的大小。仅在数据库启用了自我调整内存的情况下才会发生自动调整 (SELF_TUNING_MEM=ON)。
要查看锁定列表设置,请执行以下命令:
db2 get db cfg
Max storage for lock list (4KB) (LOCKLIST) = 50
Interval for checking deadlock (ms) (DLCHKTIME) = 10000
Percent. of lock lists per application (MAXLOCKS) = 22
Lock time out (sec) (LOCKTIMEOUT) = -1
Max number of active applications (MAXAPPLS) = AUTOMATIC
对于 DB2LOCK_TO_RB 注册表值,请使用 db2set 并查找 DB2LOCK_TO_RB=。
- LOCKLIST 和 MAXLOCKS
要增加锁列表容量和锁定升级阈值,请分别修改 LOCKLIST 和 MAXLOCKS 参数。要设置 DB2 8 的 LOCKLIST:
- 估计活动应用程序的最大数 MAXAPPLS(如果已设置)。
- 估计每个应用程序的平均锁数。
- 估计较低和较高的锁列表大小:
(Avg # locks per application * 36 * MAXAPPLS) / 4096 (Avg # locks per application * 72 * MAXAPPLS) / 4096
其中 72 表示对象中第一个锁的字节数,36 表示对象中其他锁的字节数
- 在较高和较低范围之间的位置设置初始 LOCKLIST。
例如:
db2 update db cfg using LOCKLIST 200
- 在发生锁升级之前确定任意单个应用程序可使用的锁列表百分比。这可能是一个统一的百分比,也可能基于公共的交易量。
例如,如果允许应用程序将锁的平均数乘以 2:
100 * (Avg # locks per application * 2 * 72 bytes per lock) / (LOCKLIST * 4096 bytes)
然后按以下语句中所示设置 MAXLOCKS:db2 update db cfg using MAXLOCKS 22
- 锁列表参数的其他调整包括使用快照和事件监视器。查找以下数据库级别的信息:
- 正在使用的总锁列表内存
- 已发生的锁升级数
- 将事件监视器用于事务具有的最大锁数。
- LOCKTIMEOUT
要设置 DB2 在尝试获取锁时将等待的时间量,可修改 LOCKTIMEOUT。
- DLCHKTIME
要调整每次死锁检测的检查时间间隔,可调整 DLCHKTIME。
- DB2LOCK_TO_RB
DB2LOCK_TO_RB 用于指定当等待锁的时间量超过 LOCKTIMEOUT 时事务的行为。默认情况下,锁定超时会回滚请求事务。要将该行为改为只回滚提出锁请求的语句,则请使用 db2set DB2LOCK_TO_RB=STATEMENT 修改 DB2LOCK_TO_RB。但默认行为应适用于 ArcSDE。
有关设置这些参数的详细信息,请参阅 DB2 数据库中的死锁。
有关正确设置这些参数的详细信息,请参阅 DB2 文档或性能调整指南。