• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Prayer

            在一般中尋求卓越
            posts - 1256, comments - 190, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            http://www-900.ibm.com/cn/support/nav/200402/p45-1.shtml

            隨著網絡的不斷發展, 現今的應用系統一般都需要相對較強的多用戶同時訪問的能力。 作為應用系統基礎的數據庫產品對多用戶能力的支持也就越發重要。IBM DB2 UDB作為當今較為流行的數據庫產品也在不斷的改進其并發處理能力。 現在的DB2 UDB系統中, 主要通過鎖和隔離級別這兩個主要的工具來控制并發連接,維護數據庫中的數據在高并發的環境下的安全。

            我們在這里將簡要的闡述一下鎖和隔離級別。

            鎖:

            DB2 UDB中, 鎖的主要作用對象是表和行, 其他如表空間和索引也是鎖的對象, 但是因為其多為系統控制, 管理員和用戶使用較少,在這里就不涉及了。

            對于行級鎖和表級鎖, 它們的區別不言而喻, 主要是鎖的對象不同。 當然鎖對象的不同連帶也會影響DB2的并發能力。

            DB2中的表級鎖主要有以下幾種:

            1. IS鎖: 此鎖作用于整個表,表示擁有此鎖的應用連接要讀取表中的某些數據, 但是在此應用連接讀取具體的數據時, 還必須獲得該行的行級鎖;

            2. IX鎖: 此鎖作用于整個表,表示擁有此鎖的應用連接需要獨占使用表中的某些數據, 但是在此應用連接獨占使用具體的數據時, 還必須獲得該行上相應的行級鎖;

            3. SIX鎖: 此鎖是鎖轉換的產物,表示應用連接擁有S和IX鎖的特性;
            (share with intent exclusive)鎖定的擁有者可以讀取和更改表格,其他用戶可以讀取表格。

            4. S鎖: 此鎖作用于整個表, 擁有此鎖的應用連接可以讀取表中的任何紀錄;

            5. U鎖: 此鎖作用于整個表, 擁有此鎖的應用連接可以讀取表中的任何紀錄,也可以更新表中的紀錄, 但是更新時需要再獲得X鎖; 此鎖主要在“select … with update”語句建立的可更新游標中起作用, 其他的應用可以讀取表中的紀錄, 但是不能更新它;

            6. X鎖: 此鎖作用于整個表, 擁有此鎖的應用連接獨占的使用表中的任何紀錄;可以進行更新或其他操作;

            7. Z鎖: 此鎖作用于整個表, 也稱超級獨占鎖,主要是在象修改表的定義、 刪除表這一類的語句中會使用。 擁有此鎖的應用連接對該表有完全的控制權。 其他的任何應用不能讀取或更新表中的任何紀錄。

            在這里我們主要要看一下 IS/IX/SIX這三個鎖。 在這三個鎖中IS/IX本身并不具備使得應用連接可以讀取或更新紀錄的能力,應用連接要讀取和更新紀錄時, 需要再得到相應的行級鎖; 反之亦然, 任何應用要獲得行級鎖操作數據記錄之前, 也必須獲得某個相應的表級鎖。 SIX鎖也是類似的情況。這就是為什麼在很多情況下我們使用的是行級鎖, 但是用快照(SNAPSHOT)等工具卻能夠看到有表級鎖存在的原因。

            那麼DB2中又有哪些行級鎖呢? 讓我們來看下面的這張圖:

            那麼DB2中又有哪些行級鎖呢?

             

            此圖中列出了DB2中包含的行級鎖。 表中的第三列指出, 要獲得此行級鎖之前, 需要預先獲得的表級鎖, 這里列出的是最低要求。

            這六個行級鎖的主要功能如下:

            1. S鎖:此行級鎖的擁有者可以讀取該行的信息;

            2. U鎖:此行級鎖的擁有者可以讀取該行的信息,如果要更新該行,則仍然需要一個行級的X鎖;其他的應用只能讀取該行的信息;此鎖主要是用于FOR UPDATE的游標。

            3. X鎖:此行級鎖的擁有者可以更新該行的紀錄,其他的應用不能連接此行的信息;

            4. W鎖:此鎖和X鎖類似,不同之處是此鎖和NW鎖兼容;

            5. NS鎖:類似于S鎖,用于Next Key;

            6. NW鎖:類似于W鎖,用于Next Key;

            在DB2數據庫中, 是通過行級鎖和表級鎖協調作用來提供較好的并發性, 同時保證數據庫中數據的安全。 在DB2中缺省情況下使用行級鎖(當然需要IS/IX鎖配合),只有當出現鎖資源不足, 或者是用命令指定使用表級鎖的情況下, 才會在應用連接中使用表級鎖。 對鎖資源分配有興趣的讀者可以參考DB2的管理手冊, 查找其中關于locklist和maxlocks參數的論述。對于用命令指定表級鎖的情況, 可以參考DB2的命令手冊中的lock table命令, 此命令用于直接鎖表。

            隔離級別:



            下面讓我們來看一下隔離級別。 隔離級別主要用于控制在DB2根據應用提交的SQL語句向DB2數據庫中的相應對象加鎖時, 會鎖住哪些紀錄, 也就是鎖定的范圍。 隔離級別的不同, 鎖定的紀錄的范圍可能會有很大的差別。

            隔離級別分為RR/RS/CS/UR這四個級別。 下面讓我們來逐一論述:

            1. RR隔離級別: 在此隔離級別下, DB2會鎖住所有相關的紀錄。 在一個SQL語句執行期間, 所有執行此語句掃描過的紀錄都會被加上相應的鎖。 具體的鎖的類型還是由操作的類型來決定, 如果是讀取,則加共享鎖; 如果是更新, 則加獨占鎖。 由于會鎖定所有為獲得SQL語句的結果而掃描的紀錄, 所以鎖的數量可能會很龐大, 這個時候, 索引的增加可能會對SQL語句的執行有很大的影響,因為索引會影響SQL語句掃描的紀錄數量。
            Repeatable Read

            2. RS隔離級別: 此隔離級別的要求比RR隔離級別稍弱,此隔離級別下會鎖定所有符合條件的紀錄。 不論是讀取, 還是更新, 如果SQL語句中包含查詢條件, 則會對所有符合條件的紀錄加相應的鎖。 如果沒有條件語句, 也就是對表中的所有記錄進行處理,則會對所有的紀錄加鎖。
            Read Stability

            3. CS隔離級別: 此隔離級別僅鎖住當前處理的紀錄。
            Cursor stability

            4. UR隔離級別:此隔離級別下,如果是讀取操作,不會出現任何的行級鎖。對于非只讀的操作,它的鎖處理和CS相同。
            Uncommitted Read

            在這四種隔離級別中, CS是缺省值。 這四種隔離級別均可以保證DB2數據庫在并發的環境下不會有數據丟失的情況發生。 要注意的是如果對紀錄進行了修改,需要在相應的紀錄上加獨占類型的鎖, 這些獨占類型的鎖直到交易結束時才會被釋放, 這一點在四種隔離級別下都是相同的。

            到這里, 我們已經對DB2中的表鎖, 行鎖, 隔離級別進行了論述。 DB2數據庫的并發控制主要是通過這些機制。 理解了這些概念,我們就可以在使用DB2數據庫時根據系統的實際需要來設計鎖模式和隔離級別, 來實現我們的系統要求, 在保障數據安全的前提下, 提供較好的并發性。

            如果還需要了解更多的相關DB2數據庫的并發控制, 鎖, 和隔離級別的相關信息, 可以參考以下的文檔說明:

            1. DB2 Command Reference

            2. DB2 Administrator Reference

            久久只有这里有精品4| 精品国产综合区久久久久久| 久久久噜噜噜久久中文字幕色伊伊 | 久久www免费人成看国产片| 久久国产成人亚洲精品影院 | 精品久久久久久久久免费影院 | 久久精品日日躁夜夜躁欧美| 久久国产精品成人影院| 久久无码一区二区三区少妇 | 久久亚洲国产成人影院网站| 久久国产亚洲高清观看| 久久人人爽人人精品视频| 精品综合久久久久久888蜜芽| 精品国产乱码久久久久久浪潮| 亚洲午夜久久久久久久久电影网| 亚洲国产精品婷婷久久| 久久久久亚洲av无码专区| 久久久黄色大片| 欧美伊人久久大香线蕉综合69| 俺来也俺去啦久久综合网| 中文字幕日本人妻久久久免费| 精品视频久久久久| 久久99精品国产99久久6男男| 亚洲国产精品18久久久久久| 亚洲欧美日韩久久精品| 久久人人爽人人爽人人片AV东京热| 久久精品国产亚洲综合色| 久久天天躁狠狠躁夜夜网站 | 久久亚洲美女精品国产精品| 97精品伊人久久大香线蕉| 欧美精品丝袜久久久中文字幕| 精品久久综合1区2区3区激情| 久久精品免费观看| 麻豆精品久久精品色综合| 久久天天躁狠狠躁夜夜avapp| 7777久久久国产精品消防器材| 久久久精品国产免大香伊| 国产美女亚洲精品久久久综合| 久久午夜无码鲁丝片秋霞| 一本久道久久综合狠狠爱| 亚洲精品无码久久久久去q|