国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

DB2數(shù)據(jù)庫的隔離級解讀與試驗(yàn)

2024-07-21 02:32:25
字體:
供稿:網(wǎng)友

  基本信息

  摘要:在DB2中,共有四種隔離級:RS,RR,CS,UR.以下對四種隔離級進(jìn)行一些描述,同時(shí)附上個人做試驗(yàn)的結(jié)果。隔離級是影響加鎖策略的重要環(huán)節(jié),它直接影響加鎖的范圍及鎖的持續(xù)時(shí)間。兩個應(yīng)用程序即使執(zhí)行的相同的操作,也可能由于選擇的隔離級的不同而造成加鎖的結(jié)果不同。

  隔離級解讀和試驗(yàn)

  隔離級是影響加鎖策略的重要環(huán)節(jié),它直接影響加鎖的范圍及鎖的持續(xù)時(shí)間。兩個應(yīng)用程序即使執(zhí)行的相同的操作,也可能由于選擇的隔離級的不同而造成加鎖的結(jié)果不同。在DB2中,共有四種隔離級:RS,RR,CS,UR.以下對四種隔離級進(jìn)行一些描述,同時(shí)附上個人做試驗(yàn)的結(jié)果。

讀可靠性(RS-Read Stability)
  如果使用這種隔離級,在一個事務(wù)中所有被讀取過的行上都會被加上NS鎖,直到該事務(wù)被提交或回滾,行上的鎖才會被釋放。這樣可以保證在一個事務(wù)中即使多次讀取同一行,得到的值不會改變。

  但是,如果使用這種隔離級,在一個事務(wù)中,如果使用同樣的搜索標(biāo)準(zhǔn)重新打開已被處理過的游標(biāo),則結(jié)果集可能改變。(可能會增加某些行,這些行被稱為幻影行(Phantom))。這是因?yàn)镽S隔離級不能阻止通過插入或更新操作在結(jié)果集中加入新行。

  個人筆記:

   根據(jù)實(shí)際測試情況,RS模式下:查詢完畢以后,滿足條件的結(jié)果集中的記錄被鎖定,不滿足條件的不被鎖定。

   可以對不滿足條件的記錄更新,也可以插入新的記錄。其他人可以查詢滿足已經(jīng)鎖定的記錄,但不可以更新。

重復(fù)讀(RR-Repeat Read)
  如果使用這種隔離級,在一個事務(wù)中所有被讀取過的行上都會被加上S鎖,知道該事務(wù)被提交或回滾,行上的鎖才會被釋放。這樣可以保證在一個事務(wù)中即使多次讀取同一行,得到的值不會改變。

  另外,在同一事務(wù)中如果以同樣的搜索標(biāo)準(zhǔn)重新打開已被處理過的游標(biāo),得到的結(jié)果集不會改變。重復(fù)讀相對于讀可靠性而言,加鎖的范圍更大。

  對于讀可靠性,應(yīng)用程序只對符合要求的所有行加鎖,而對于重復(fù)讀,應(yīng)用程序?qū)λ斜粧呙柽^的行都加鎖。例如,如果一個應(yīng)用程序?qū)σ粋€表中的 10000行數(shù)據(jù)進(jìn)行掃描,最終找到了100條符合搜索條件的結(jié)果行。如果該應(yīng)用程序使用的是讀可靠性隔離級,應(yīng)用程序?qū)⒅粚@符合條件的100行加鎖;如果該應(yīng)用程序使用的是重復(fù)讀隔離級,應(yīng)用程序?qū)Ρ粧呙柽^的10000行都加鎖。

  個人筆記

   根據(jù)實(shí)際測試情況,RR模式下:查詢完畢以后,不可以對不滿足條件的進(jìn)行更新,也不可以插入新記錄。可能原因是:如果允許別人更新記錄或者插入新記錄的話,則可能造成原來結(jié)果集的破壞,重新讀的時(shí)候和以前不同。

   select for update with rr/rs 是可以用來實(shí)現(xiàn)記錄鎖。是一種特殊情況。即便是RR,仍然可以對其他記錄操作。

游標(biāo)可靠性(CS-Cursor Stability)
  如果使用這種隔離級,在一個事務(wù)中,結(jié)果集中只有正在被讀取的那一行(游標(biāo)指向的行)將被加上NS鎖,其他未被處理的行上不被加鎖。這種隔離級只能保證正在被處理的行的值不會被其他并發(fā)的程序所改變。該隔離級是DB2缺省的隔離級。

  個人筆記

  僅僅在游標(biāo)在該行的時(shí)候鎖定,這是一種非常弱的隔離狀態(tài)。

未提交讀(UR-Uncommitted Read)
  如果使用這種隔離級,對于只讀操作,不加行鎖。典型的只讀操作包括:

   SELECT語句的結(jié)果集只讀(比如語句中包括ORDER BY子句);

  定義游標(biāo)是指明起為FOR FETCH ONLY。

  該隔離級可以改善應(yīng)用程序的性能,同時(shí)可以最大程度的允許并發(fā)。但是,應(yīng)用程序的數(shù)據(jù)完整性將受到威脅。如果需要讀取未提交的數(shù)據(jù),該隔離級是唯一選擇。

  個人筆記

  讀的時(shí)候完全不受限制,對于同一行記錄的完整性也無法保證。

  總結(jié)

  以上我們所提的隔離級的加鎖范圍和持續(xù)時(shí)間都是針對于讀操作而言的。

  對于更改操作,被修改的行上會被加上X鎖,不論使用何種隔離級,X鎖直到提交或回滾之后才會被釋放。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 吕梁市| 麻阳| 禄劝| 噶尔县| 三穗县| 米林县| 汝城县| 格尔木市| 香港 | 佳木斯市| 繁峙县| 邮箱| 福海县| 沙雅县| 德昌县| 勃利县| 新乐市| 华坪县| 长丰县| 广东省| 开化县| 新田县| 武乡县| 北川| 海阳市| 花莲市| 会宁县| 西乌珠穆沁旗| 凤翔县| 鄢陵县| 虹口区| 漠河县| 酒泉市| 汶川县| 宜兴市| 文登市| 磴口县| 广水市| 惠水县| 桐柏县| 苗栗县|