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

            鎖升級

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

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

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

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

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

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

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

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

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

            MAXLOCKS配置參數(shù)的計算方法如下:

            MAXLOCKS = 100 * (512鎖/應(yīng)用程序 * 32字節(jié)/鎖 * 2)/(LOCKLIST * 4096字節(jié))

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

            鎖升級會在以下兩種情況下被觸發(fā):

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

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

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

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

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

            久久久久久曰本AV免费免费| 99精品国产99久久久久久97| 久久伊人色| 亚洲国产精品综合久久网络| 国产精品一久久香蕉国产线看| 免费精品久久久久久中文字幕| 国产精品99久久99久久久| 色青青草原桃花久久综合| 国产精品免费看久久久| 少妇被又大又粗又爽毛片久久黑人 | 国产综合久久久久| 成人资源影音先锋久久资源网| 伊人久久成人成综合网222| 91久久精品国产成人久久| 久久国产色AV免费观看| 一本色道久久88精品综合| 四虎影视久久久免费| 国产99久久九九精品无码| 久久久久99精品成人片三人毛片| 久久久久中文字幕| 无码久久精品国产亚洲Av影片 | 久久精品人人做人人爽电影| 欧美久久一级内射wwwwww.| 久久精品国产精品亜洲毛片| 久久久噜噜噜久久| 一本色道久久88加勒比—综合| 久久精品国产精品青草app| 亚洲狠狠综合久久| 久久亚洲国产午夜精品理论片| 91精品国产高清久久久久久io | 久久精品国产亚洲av麻豆小说 | 久久久亚洲欧洲日产国码二区| 漂亮人妻被中出中文字幕久久| WWW婷婷AV久久久影片| 亚洲精品无码成人片久久| 偷偷做久久久久网站| 日本加勒比久久精品| 国产精品午夜久久| 成人免费网站久久久| 午夜精品久久久久久中宇| 久久国产成人亚洲精品影院|