DB2數據庫從版本8.2開始,就可以為每一個DB2會話指定鎖定策略了。在以前的某些版本中,只是通過配置DB2數據庫配置參數LOCKTIMEOUT配置一個應用程序如果不能獲得鎖,等待多長時間將回滾該事務。
DB2從版本8.2開始,客戶可以為每一個DB2會話指定鎖定策略。在以前的版本中,只能通過配置數據庫配置參數LOCKTIMEOUT配置一個應用程序如果不能獲得鎖,等待多長時間將回滾該事務。
單個會話現在可以指定鎖定等待方式策略,該策略在會話需要的鎖定不能立即獲取時使用。該策略指示會話是否將采取如下措施:在不能獲取鎖定時返回 SQLCODE 和 SQLSTATE
無限等待鎖定
等待為鎖定指定的時間
等待鎖定時使用 locktimeout 數據庫配置參數的值
鎖定等待方式策略通過新的 SET CURRENT LOCK TIMEOUT 語句指定,此語句更改 CURRENT LOCK TIMEOUT 專用寄存器的值。CURRENT LOCK TIMEOUT 專用寄存器指定在返回指示不能獲取鎖定的錯誤之前等待鎖定的秒數。
雖然 locktimeout 參數的值適用於所有鎖定,但是此新功能只影響以下鎖定類型:行、表、索引鍵和多維群集(MDC)塊鎖定。
該語句的語法如下:
- .-CURRENT-. .-=-.
- >>-SET--+---------+--LOCK TIMEOUT--+---+------------>
- >--+-WAIT-----------------------+------------><
- +-NOT WAIT-------------------+
- +-NULL-----------------------+
- | .-WAIT-. |
- +-+------+-- integer-constant -+
- '- host-variable --------------'
關於該命令的詳細說明,請參見:http://publib.boulder.ibm.com/infocenter/db2help/topic
- /com.ibm.db2.udb.doc/admin/r0011874.htm?resultof=
- %22%73%65%74%22%20%22%63%75%72%72%65%6e%74%22%2
- 0%22%6c%6f%63%6b%22%20%22%74%69%6d%65%6f%75%74%22%20
下面通過一個例子來講解如何使用這個功能(我們使用SAMPLE數據庫):
1、使用"db2 +c"打開兩個DB2數據庫會話。(+c 參數關閉AUTOCOMMIT)
2、在一個會話中執行下面的語句:
- connect to sample
- create table test(id int,name char(10))
- commit
- insert into test values(1,'test')
以上的相關內容就是對DB2數據庫為單個會話鎖定技巧的介紹,望你能有所收獲。