亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

使用 DB2 V9.1 for z/OS 實現應用程序會話鎖定(1)

2024-07-21 02:41:45
字體:
來源:轉載
供稿:網友
  簡介  對于獲得最佳的應用程序性能,以及確保數據完整性和一致的應用程序行為來說,數據庫鎖定策略是非常重要的?! 『茈y實現消極會話鎖定方式的 bullet-PRoof 實現。但是,利用 DB2 Version 9.1 for z/OS 中引入的新特性 SKip LOCKED DATA(這個特性最初是為另一個完全不同的用途設計的,即避免鎖定),可以實現一種簡單可靠的解決方案?! 栴}陳述  在許多場景中,應用程序級別上的并發性控制是必要的,例如:  確保在一組不可共享的資源上工作的應用程序互斥。一個真實的示例是,一個存儲過程使 DB2 外部的全文索引與 DB2 中存儲的數據同步。在這里,受控制的資源是全文索引。它由索引名稱標識,索引名稱是存儲過程的一個參數。只有在索引名稱參數不同的情況下,才答應并行調用這個存儲過程?! 】刂仆瑫r對一個資源集進行操作的應用程序的最大數量?! τ谙麡O會話鎖定,按照慣例,應用程序需要兩個函數 lock(resource) 和 unlock()?! ∠旅媸菍鉀Q方案的一些需求,這些需求使解決方案在應用程序級別難以實現:  解決方案必須為在應用程序之間可見的每個資源提供一個概念性的會話鎖。  即使持有會話鎖的應用程序非正常終止,解決方案也必須保證會話鎖被釋放?! ℃i定或解鎖機制必須獨立于應用程序中的 DB2 事務(也就是說,中途事務提交不能產生釋放會話鎖的副作用)。  解決方案必須避免會話鎖超時和長時間等待鎖。lock() 函數必須立即進行檢查并返回(非阻塞方式)?! 』?DB2 事務鎖的任何會話鎖定實現必須解決鎖沖突問題。事務鎖沖突可以導致事務回滾(sqlcode -911),或者導致不確定地等待鎖。假如沒有 SKIP LOCKED DATA 這樣的數據庫概念,這個問題是很難解決的。 123下一頁   解決方案的模式  作為一個解決方案,建議定義一個 DB2 表,其中包含資源標識符的列表,并在所有應用程序對資源的訪問中使用鎖定和解鎖協議。lock() 函數的實現在一個 SQL fetch 語句中使用 DB2 新功能 skipping locked data。這是該解決方案的要害?! 橘Y源鎖定創建一個 DB2 表  創建一個 DB2 表(在下文中稱為 鎖表(lock table)),它定義與會話鎖定相關的資源。假設邏輯會話鎖的范圍是某種資源標識符。在上面的全文索引示例中,這個標識符是索引名稱。對于每個資源,在這個表中插入一行?! ∏鍐?1. 創建鎖表的 SQL 示例   CREATE TABLE LockTable(ResourceId CHAR(10));
   INSERT INTO LockTable VALUES('INDEX 1');
   INSERT INTO LockTable VALUES('INDEX 2');
  上面的示例演示如何在鎖表中填充兩個全文索引資源。每個索引不能由一個以上的應用程序使用。這意味著,應用程序 1 可能使用索引 1,同時應用程序 2 使用索引 2,但是不答應兩個應用程序中同時使用索引 1 。  使用鎖定/解鎖協議訪問資源  引入一個由兩個函數 lock(ResourceId) 和 unlock() 組成的協議,所有應用程序都需要遵守這個協議。具體的接口依靠于實現語言,在這里無關緊要。要害的一點是,所有應用程序在訪問會話鎖控制的資源 之前,必須調用 lock(resourceId)。當不再需要這個資源時,它們應該調用 unlock()?! 崿F lock() 函數  lock() 函數的實現必須確保調用者能夠立即得到請求的結果(授予鎖還是不授予鎖)。另外,授予的鎖必須不受應用程序中 DB2 事務的影響。因此,lock() 的實現必須在一個單獨的線程中打開額外的 DB2 連接。所以,lock() 函數的實現由以下步驟組成: 上一頁123下一頁   啟動一個對鎖請求進行處理的子線程。  等待子線程發出表示鎖請求處理完成的信號,這時結果已經可用了。  在子線程中,打開新的 DB2 連接,在鎖表中獲取具有所請求的資源 ID 的一行。在這里,使用 SKIP LOCKED DATA 特性只獲得未被 DB2 鎖定的行(例如,假如另一個應用程序持有這個資源上的會話鎖,就不能獲得這一行)。DB2 并不在獲取操作中等待。見 清單 2 中的示例代碼?,F在,請求的結果必須在主線程中可用。子線程等待主線程的終止信號。假如授予了會話鎖,它就持有鎖表中一行上的 DB2 更新鎖,直到發生以下情況為止:  調用 unlock() 或者  應用程序終止?! ock() 函數主線程從子線程獲得結果。假如授予了鎖,那么 lock() 函數返回調用者。否則子線程被終止?! ∏鍐?2. 在子線程中實現 lock() 的 SQL 代碼   
   DECLARE C1 CURSOR FOR
    SELECT ResourceId FROM LockTable WHERE ResourceId=:resourceId
    FOR UPDATE WITH CS SKIP LOCKED DATA;
   OPEN C1;
   FETCH C1;
   if (sqlca.sqlcode==NO_DATA_FOUND) {
    result=indexAlreadyLocked;
   } else {
    result=lockGranted;
   }
  實現 unlock() 函數  提供一個 unlock() 函數,它將終止仍然持有鎖表中某一行的 DB2 更新鎖的子線程。子線程中的終止代碼關閉 SQL 游標,并使事務回滾,見 清單 3。因此,會釋放這一行的 DB2 更新鎖,清單 2 中的下一個 SQL select 語句會看到這一行?! ∏鍐?3. 在子線程中實現 unlock() 的 SQL 代碼   CLOSE C1;
   ROLLBACK WORK;
  控制同時訪問一個資源的應用程序數量  對以上方式做一項簡單的修改,就可以控制同時訪問一個資源集的應用程序數量:  假如鎖表中有重復的行,就可以對資源進行并發使用。鎖表中一個資源的行數決定了可以同時訪問這個資源的最大應用程序數量?! ∏鍐?4. 填充鎖表來控制同時訪問的最大應用程序數量的 SQL 示例   INSERT INTO LockTable VALUES('INDEX 1');
   INSERT INTO LockTable VALUES('INDEX 1');
   INSERT INTO LockTable VALUES('INDEX 2');
   INSERT INTO LockTable VALUES('INDEX 2');
   INSERT INTO LockTable VALUES('INDEX 2');
  按照這段代碼,最多有兩個應用程序可以同時訪問 ‘INDEX 1’,最多有三個應用程序可以同時訪問 ‘INDEX 2’?! 〗Y束語  有一種簡單可靠的解決方案模式可用于在應用程序級別實現會話鎖。它依靠于 DB2 Version 9.1 for z/OS 中的新特性 SKIP LOCKED DATA,且已成功應用于一個 DB2 開發項目。 上一頁123
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品18久久久久久麻辣| 国产视频综合在线| 成人两性免费视频| 亚洲欧洲国产精品| 高清亚洲成在人网站天堂| 色综久久综合桃花网| 97视频在线观看视频免费视频| 欧美黄色免费网站| 97人人爽人人喊人人模波多| 日韩精品中文字幕视频在线| 国产日韩在线一区| 亚洲国产成人一区| 最近2019年中文视频免费在线观看| 久久久免费在线观看| 日本道色综合久久影院| 国产午夜精品麻豆| 国产极品jizzhd欧美| 在线观看亚洲区| 亚洲精品自产拍| 国精产品一区一区三区有限在线| 欧美老女人在线视频| 久久久在线观看| 成人h猎奇视频网站| 国外成人免费在线播放| 黑人巨大精品欧美一区二区| 91精品久久久久久久久青青| 久久91精品国产| 欧美日本亚洲视频| 精品国产福利视频| 久久精品91久久久久久再现| 中文字幕久久亚洲| 亚洲欧美日韩中文视频| 92福利视频午夜1000合集在线观看| 91国产精品电影| 亚洲人在线视频| 在线精品播放av| 欧美日韩在线视频一区| 日韩中文在线中文网在线观看| 性色av一区二区三区红粉影视| 午夜精品久久久久久久白皮肤| 国产成人精品最新| 欧美精品在线免费播放| 国产精品久久国产精品99gif| 日韩欧美亚洲国产一区| 亚洲精品动漫久久久久| 精品成人乱色一区二区| 91久久在线视频| 亚洲精品mp4| 国产成人精品综合久久久| 九九精品在线播放| 久久91亚洲精品中文字幕| 精品久久中文字幕| 久久久久久久久久av| 欧美性猛交xxxx免费看漫画| 91超碰caoporn97人人| 国产精品毛片a∨一区二区三区|国| 久久久女人电视剧免费播放下载| 久久久久久久久久久国产| 成人h视频在线| 亚洲一区免费网站| 国产精品视频大全| 亚洲一区二区三区在线视频| 国产精品小说在线| 色妞一区二区三区| 在线播放国产一区中文字幕剧情欧美| 国产精品美女www爽爽爽视频| 中文字幕日韩有码| 日韩高清中文字幕| 欧美孕妇性xx| 久久影视电视剧免费网站| 亚洲精品98久久久久久中文字幕| 日韩在线一区二区三区免费视频| 久久午夜a级毛片| 久久精品视频在线| 欧美色视频日本高清在线观看| 热99精品只有里视频精品| 国产欧美最新羞羞视频在线观看| 久久99精品久久久久久琪琪| 国产区精品在线观看| 国产精品h片在线播放| 亚洲天堂av在线免费| 亚洲国产成人久久综合一区| 国产美女精品免费电影| 高清视频欧美一级| 午夜精品久久久久久久99黑人| 亚洲天堂免费视频| 在线观看欧美www| 中文字幕在线精品| 国产成人啪精品视频免费网| 欧美激情精品久久久久久大尺度| 好吊成人免视频| 欧洲美女免费图片一区| 亚洲成色777777女色窝| 亚洲高清福利视频| 日韩在线视频观看| 亚洲韩国日本中文字幕| 中文字幕亚洲欧美一区二区三区| 久久久久久久久久国产| 中文字幕在线国产精品| 国产一区二区免费| 不卡av在线网站| 4438全国成人免费| 日韩欧美一区二区在线| 亚洲电影免费观看高清完整版在线观看| 亚洲欧美www| 久久国产精品久久久久久| 久久久久久久久中文字幕| 日韩av网址在线| 麻豆国产va免费精品高清在线| 精品福利在线观看| 国产精品女人网站| 日韩精品免费综合视频在线播放| 色综合久久中文字幕综合网小说| 国产美女扒开尿口久久久| 久久精品中文字幕一区| 日韩av中文字幕在线免费观看| www.亚洲天堂| 久久久久久欧美| 亚洲一区亚洲二区亚洲三区| 亚洲电影免费观看高清完整版| 欧美综合一区第一页| 日韩美女免费线视频| 日韩精品中文字| 欧美重口另类videos人妖| 欧美性猛交xxx| 久久久久九九九九| 亚洲成人黄色在线观看| 欧美日韩成人精品| 亚洲男人的天堂在线| 亚洲第一免费播放区| 国产精品久久久久久久午夜| 激情亚洲一区二区三区四区| 2019最新中文字幕| 亚洲18私人小影院| 国产亚洲精品久久久优势| 欧美电影免费观看大全| 欧美成年人视频| 欧美高清自拍一区| 亚洲男人天堂久| 26uuu另类亚洲欧美日本老年| 久久精品人人做人人爽| 97精品一区二区视频在线观看| 日韩av免费在线观看| 国语自产精品视频在免费| 久久影视电视剧免费网站清宫辞电视| 国产日韩精品在线| 精品成人69xx.xyz| 91精品国产99| 成人免费网站在线观看| 亚洲成人久久一区| 亚洲精品中文字| 亚洲无线码在线一区观看| 久久久亚洲福利精品午夜| 亚洲欧美日韩第一区| 欧美午夜激情在线| 5252色成人免费视频| 国产精品久久久久久久久久小说| 亚洲精品999| 久久免费精品日本久久中文字幕| 91在线观看免费观看| 久久影院中文字幕| 亚洲深夜福利在线| 成人网在线免费观看| 欧美久久精品一级黑人c片|