信息不足:CUR_COMMIT数据库的有效设置是什么?此外,锁定行为可能会随您尚未提及的特定Db2注册表设置(如DB2_SKIP_INSERTED、DB2_SKIP_DELETED等)而更改。 如果CUR_COMMIT数据库参数得有效值为ON,并且另一个连接正在使用CS隔离进行查询,则另一个连接将获取锁定行得当前提交值(即,写入程序没有阻塞读取程序). 如果希望使用wait for outcome,它是一个适用于SELECT语句的子句,请参阅documentation。 使用特殊寄存器,通过 SET CURRENT LOCK TIMEOUT WAIT n ;(其中n是秒数),否则将应用客户机端超时(如果相关)或数据库级别LOCKTIMEOUT设置,以较低者为准。请注意,LOCKTIMEOUT的默认值为-1(永远等待),这几乎总是不合适的,OLTP的典型值为30或60。 其他连接可以尝试对每条语句使用UR isolation(例如,用于选择锁定行值的查询)。
2条答案
按热度按时间bkhjykvo1#
信息不足:CUR_COMMIT数据库的有效设置是什么?此外,锁定行为可能会随您尚未提及的特定Db2注册表设置(如DB2_SKIP_INSERTED、DB2_SKIP_DELETED等)而更改。
如果CUR_COMMIT数据库参数得有效值为ON,并且另一个连接正在使用CS隔离进行查询,则另一个连接将获取锁定行得当前提交值(即,写入程序没有阻塞读取程序).
如果希望使用wait for outcome,它是一个适用于SELECT语句的子句,请参阅documentation。
使用特殊寄存器,通过
SET CURRENT LOCK TIMEOUT WAIT n ;(其中n是秒数),否则将应用客户机端超时(如果相关)或数据库级别LOCKTIMEOUT设置,以较低者为准。请注意,LOCKTIMEOUT的默认值为-1(永远等待),这几乎总是不合适的,OLTP的典型值为30或60。
其他连接可以尝试对每条语句使用UR isolation(例如,用于选择锁定行值的查询)。
vngu2lb82#
在v11.5.6之前,Db2 LUW不允许在语句级指定锁等待超时。它没有用于此的SQL语句语法。
使用v11.5.6或更高版本,您可以执行以下操作:
上面的代码将在查询返回的行上创建一个排他的行级锁。新添加的代码是
WAIT 5
,它意味着等待锁的时间为5秒,否则将抛出错误。在v11.5.6之前,只能在会话级别或服务器级别指定锁定超时。这两个级别都在mao's answer中。
如欲了解更多信息,请访问:https://www.ibm.com/docs/en/db2/11.5?topic=statement-concurrent-access-resolution-clause