• <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 閱讀(245) 評論(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鎖沖突,鎖升級不能成功。

            久久国产精品国产自线拍免费| 久久一区二区三区免费| 国产精品一区二区久久| 99久久综合狠狠综合久久| 久久精品成人免费观看97| 久久综合亚洲鲁鲁五月天| 久久精品无码专区免费东京热| 久久精品国产久精国产思思| 伊人 久久 精品| 无码任你躁久久久久久| 国产精品岛国久久久久| 国产69精品久久久久观看软件 | 一本色道久久HEZYO无码| 久久综合久久鬼色| 精品久久8x国产免费观看| 欧美精品乱码99久久蜜桃| 综合久久精品色| 久久伊人五月丁香狠狠色| 国产精品一区二区久久不卡| 伊人久久大香线蕉精品不卡| 亚洲欧美精品一区久久中文字幕| 久久久久18| 亚洲va中文字幕无码久久不卡| 狠狠综合久久AV一区二区三区| 亚洲Av无码国产情品久久| 亚洲中文字幕无码久久2020 | 久久国产亚洲精品| 浪潮AV色综合久久天堂| 国产精品久久久久乳精品爆| 国产精品久久久久久久app| 国产精品免费看久久久| 香港aa三级久久三级老师2021国产三级精品三级在 | 久久这里都是精品| 久久久久久久久久久精品尤物| 久久国产精品成人影院| 久久久久黑人强伦姧人妻| 色综合久久综合中文综合网| 久久毛片免费看一区二区三区| 久久亚洲精品成人av无码网站| 美女久久久久久| 久久久这里有精品中文字幕|