• <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++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            鎖升級

            Posted on 2010-04-23 10:56 Prayer 閱讀(235) 評論(0)  編輯 收藏 引用 所屬分類: DB2
             鎖升級問題可以通過增加LOCKLIST和MAXLOCKS數據庫參數的大小來解決。但是,如果仍然遇到鎖定問題,應檢查是否因未能提交事務而未釋放已更新行上的鎖。

            每個數據庫都有一個鎖列表,該列表包含所有同時連接到數據庫的應用程序所持有的鎖。在32位平臺上,一個對象上的第一個鎖要求占64字節,而其他的鎖要求占32字節。在64位平臺上,第一個鎖要求占112字節,而其他鎖要求占56字節。

            當一個應用程序使用的LOCKLIST的百分比達到MAXLOCKS時,數據庫管理器將執行一次鎖升級(lock escalation),在這個操作中將使行鎖轉換成單獨的一個表鎖。而且,如果LOCKLIST快要耗盡,數據庫管理器將找出持有一個表上最多行鎖的連接,并將這些行鎖轉換成表鎖,以釋放LOCKLIST內存。鎖定整個表會大大降低并發性,死鎖的幾率也就增加了。

            ●       LOCKLIST表明分配給鎖列表的存儲容量。每個數據庫都有一個鎖列表,鎖列表包含了并發連接到該數據庫的所有應用程序所持有的鎖。鎖定是數據庫管理器用來控制多個應用程序并發訪問數據庫中數據的機制。行和表都可以被鎖定。

            ●       MAXLOCKS定義了應用程序持有的鎖列表的百分比,在數據庫管理器執行鎖升級之前必須填充該鎖列表。當一個應用程序所使用的鎖列表百分比達到MAXLOCKS 時,數據庫管理器會升級這些鎖,這意味著用表鎖代替行鎖,從而減少列表中鎖的數量。當任何一個應用程序所持有的鎖數量達到整個鎖列表大小的這個百分比時,對該應用程序所持有的鎖進行鎖升級。如果鎖列表用完了空間,那么也會發生鎖升級。數據庫管理器通過查看應用程序的鎖列表并查找行鎖最多的表,來決定對哪些鎖進行升級。如果用一個表鎖替換這些行鎖,將不再會超出MAXLOCKS 值,那么鎖升級就會停止。否則,鎖升級就會一直進行,直到所持有的鎖列表百分比低于MAXLOCKS。MAXLOCKS參數乘以MAXAPPLS參數的值不能小于100。

            LOCKLIST配置參數的計算方法如下(操作系統為32位平臺):

            (1) 計算鎖列表大小的下限:(512 * 32 * MAXAPPLS)/4096。其中,512是每個應用程序平均所含鎖數量的估計值,32是對象(已有一把鎖)上每把鎖所需的字節數。

            (2) 計算鎖列表大小的上限:(512 * 64 * MAXAPPLS)/4096。其中,64是某個對象上第一把鎖所需的字節數。

            (3) 對于您的數據,估計可能具有的并發數,并根據您的預計為鎖列表選擇一個初始值,該值位于您計算出的上限和下限之間。

            MAXLOCKS配置參數的計算方法如下:

            MAXLOCKS = 100 * (512鎖/應用程序 * 32字節/鎖 * 2)/(LOCKLIST * 4096字節)

            該公式允許任何應用程序持有的鎖是平均數的兩倍。如果只有幾個應用程序并發地運行,則可以增大MAXLOCKS,因為在這些條件下鎖列表空間中不會有太多爭用。

            鎖升級會在以下兩種情況下被觸發:

            ●       某個應用程序請求的鎖所占用的內存空間超出了MAXLOCKS和LOCKLIST的乘積大小。這時,數據庫管理器將試圖通過為提出鎖請求的應用程序申請表鎖,并釋放行鎖來節省空間。

            ●       在一個數據庫中已被加上的全部鎖所占的內存空間超出了LOCKLIST定義的大小。這時,數據庫管理器也將試圖通過為提出鎖請求的應用程序申請表鎖,并釋放行鎖來節省空間。

            雖然升級過程本身并不用花很多時間,但是鎖定整個表(相對于鎖定個別行)降低了并發性,而且數據庫的整體性能可能會由于對受鎖升級影響的表的后續訪問而降低。

            在設計良好的數據庫中,很少發生鎖定升級。如果鎖定升級將并行性降低到不可接受的程度(由lock_escalation監視元素監視),那么就需要分析問題并決定如何解決此問題。

            鎖升級是有可能失敗的,比如,現在一個應用程序已經在一個表上加有IX鎖,表中的某些行上加有X鎖,另一個應用程序又來請求表上的IS鎖,以及很多行上的S鎖,由于申請的鎖數目過多引起鎖的升級。數據庫管理器試圖為該應用程序申請表上的S鎖來減少所需要的鎖的數目,但S鎖與表上原有的IX鎖沖突,鎖升級不能成功。

            国产激情久久久久影院小草| 国产精品青草久久久久婷婷| 久久国产免费| 国产高潮国产高潮久久久91 | 欧美亚洲日本久久精品| 久久精品成人一区二区三区| 波多野结衣久久| 精品久久久久久久久午夜福利| 久久国产视屏| 无码久久精品国产亚洲Av影片| 久久播电影网| 国产成人精品免费久久久久| 午夜精品久久久内射近拍高清| 99久久免费国产精品热| 伊人色综合久久天天人守人婷| 国产精品99久久99久久久| 久久伊人五月天论坛| 久久综合久久综合久久| 7777久久久国产精品消防器材| 久久99国产一区二区三区| 国产成年无码久久久久毛片| 亚洲午夜久久久影院| 亚洲人成网站999久久久综合| 久久婷婷国产麻豆91天堂| 色欲久久久天天天综合网| 亚洲国产精品综合久久网络| 婷婷综合久久中文字幕| 99久久精品国产麻豆| 人妻精品久久无码区| 亚洲国产美女精品久久久久∴| 欧美亚洲国产精品久久| 亚洲国产婷婷香蕉久久久久久| 久久久WWW成人免费毛片| 久久人妻少妇嫩草AV无码蜜桃| 国产免费久久精品丫丫| 精品久久人人爽天天玩人人妻| 久久精品www| 国产精品久久久久影视不卡| 久久久久九九精品影院| 久久精品亚洲福利| 久久久久九九精品影院|