我們今天是要和大家一起討論的是DB2數據庫為單個會話鎖定的實際操作技巧,DB2從版本8.2開始,客戶可以對每一個DB2會話指定相關的鎖定策略。在以前的版本中,只能通過配置DB2數據庫配置參數LOCKTIMEOUT配置一個應用程序如果不能獲得鎖,等待多長時間將回滾該事務。
3、在另一個會話中執行下面的語句:
- connect to sample
- select * from test
由於默認LOCKTIMEOUT參數設置為-1,所以這個會話會一直等著,沒有結果返回。如下圖所示:
4、下面我們在第一歌窗口中重復一樣的操作,只是在第二個窗口中使用如下語句
- set current lock timeout not wait
- select * from test
我們看到select語句不會等待,而是直接返回錯誤。參見下圖:
您可以自己采取上面的方法測試一下其他的參數設置。
該語句可以在程序中和存儲過程中使用。另外這個功能對於CLI程序來講,還可以方便地通過設置db2cli.ini文件配置關鍵字使用,關鍵字為:
- LOCKTIMEOUT = WAIT | NOT WAIT | WAIT seconds | seconds
通過設置這個參數,DB2 CLI會自動根據設置值發送一條“SET CURRENT LOCK TIMEOUT”語句到DB2數據庫服務器,該參數值也可以通過在程序中顯示使用
“SET CURRENT LOCK TIMEOUT”重置。
您可以根據您應用程序的需求,靈活運用這條語句設計合適的DB2會話鎖定策略。
3、在另一個會話中執行下面的語句:
- connect to sample
- select * from test
由於默認LOCKTIMEOUT參數設置為-1,所以這個會話會一直等著,沒有結果返回。如下圖所示:
4、下面我們在第一歌窗口中重復一樣的操作,只是在第二個窗口中使用如下語句
- set current lock timeout not wait
- select * from test
我們看到select語句不會等待,而是直接返回錯誤。參見下圖:
您可以自己采取上面的方法測試一下其他的參數設置。
該語句可以在程序中和存儲過程中使用。另外這個功能對於CLI程序來講,還可以方便地通過設置db2cli.ini文件配置關鍵字使用,關鍵字為:
- LOCKTIMEOUT = WAIT | NOT WAIT | WAIT seconds | seconds
通過設置這個參數,DB2 CLI會自動根據設置值發送一條“SET CURRENT LOCK TIMEOUT”語句到DB2服務器,該參數值也可以通過在程序中顯示使用
“SET CURRENT LOCK TIMEOUT”重置。
您可以根據您應用程序的需求,靈活運用這條語句設計合適的DB2數據庫會話鎖定策略。