掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
我們今天是要和大家一起討論的是DB2數(shù)據(jù)庫(kù)為單個(gè)會(huì)話鎖定的實(shí)際操作技巧,DB2從版本8.2開始,客戶可以對(duì)每一個(gè)DB2會(huì)話指定相關(guān)的鎖定策略。在以前的版本中,只能通過配置DB2數(shù)據(jù)庫(kù)配置參數(shù)LOCKTIMEOUT配置一個(gè)應(yīng)用程序如果不能獲得鎖,等待多長(zhǎng)時(shí)間將回滾該事務(wù)。

3、在另一個(gè)會(huì)話中執(zhí)行下面的語(yǔ)句:
- connect to sample
- select * from test
由于默認(rèn)LOCKTIMEOUT參數(shù)設(shè)置為-1,所以這個(gè)會(huì)話會(huì)一直等著,沒有結(jié)果返回。如下圖所示:
4、下面我們?cè)?**歌窗口中重復(fù)一樣的操作,只是在第二個(gè)窗口中使用如下語(yǔ)句
- set current lock timeout not wait
- select * from test
我們看到select語(yǔ)句不會(huì)等待,而是直接返回錯(cuò)誤。參見下圖:
您可以自己采取上面的方法測(cè)試一下其他的參數(shù)設(shè)置。
該語(yǔ)句可以在程序中和存儲(chǔ)過程中使用。另外這個(gè)功能對(duì)于CLI程序來講,還可以方便地通過設(shè)置db2cli.ini文件配置關(guān)鍵字使用,關(guān)鍵字為:
- LOCKTIMEOUT = WAIT | NOT WAIT | WAIT seconds | seconds
通過設(shè)置這個(gè)參數(shù),DB2 CLI會(huì)自動(dòng)根據(jù)設(shè)置值發(fā)送一條“SET CURRENT LOCK TIMEOUT”語(yǔ)句到DB2數(shù)據(jù)庫(kù)服務(wù)器,該參數(shù)值也可以通過在程序中顯示使用
“SET CURRENT LOCK TIMEOUT”重置。
您可以根據(jù)您應(yīng)用程序的需求,靈活運(yùn)用這條語(yǔ)句設(shè)計(jì)合適的DB2會(huì)話鎖定策略。
3、在另一個(gè)會(huì)話中執(zhí)行下面的語(yǔ)句:
- connect to sample
- select * from test
由于默認(rèn)LOCKTIMEOUT參數(shù)設(shè)置為-1,所以這個(gè)會(huì)話會(huì)一直等著,沒有結(jié)果返回。如下圖所示:
4、下面我們?cè)?**歌窗口中重復(fù)一樣的操作,只是在第二個(gè)窗口中使用如下語(yǔ)句
- set current lock timeout not wait
- select * from test
我們看到select語(yǔ)句不會(huì)等待,而是直接返回錯(cuò)誤。參見下圖:
您可以自己采取上面的方法測(cè)試一下其他的參數(shù)設(shè)置。
該語(yǔ)句可以在程序中和存儲(chǔ)過程中使用。另外這個(gè)功能對(duì)于CLI程序來講,還可以方便地通過設(shè)置db2cli.ini文件配置關(guān)鍵字使用,關(guān)鍵字為:
- LOCKTIMEOUT = WAIT | NOT WAIT | WAIT seconds | seconds
通過設(shè)置這個(gè)參數(shù),DB2 CLI會(huì)自動(dòng)根據(jù)設(shè)置值發(fā)送一條“SET CURRENT LOCK TIMEOUT”語(yǔ)句到DB2服務(wù)器,該參數(shù)值也可以通過在程序中顯示使用
“SET CURRENT LOCK TIMEOUT”重置。
您可以根據(jù)您應(yīng)用程序的需求,靈活運(yùn)用這條語(yǔ)句設(shè)計(jì)合適的DB2數(shù)據(jù)庫(kù)會(huì)話鎖定策略。
【編輯推薦】

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流