中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

故障排除 | enq:TX - index contention等待事件

發布時間:2020-08-15 11:09:42 來源:ITPUB博客 閱讀:299 作者:沃趣科技 欄目:關系型數據庫

當一個事務對一個索引塊做DML時,由于該索引塊沒有空閑空間導致索引塊分裂,這時其他事務正在向這個索引塊做DML時就會產生等待,直到這個索引塊分裂完成。

以下是發生索引分裂競爭的幾種場景:

1)通常情況下分裂一個索引塊是毫秒級的,如果某個會話長時間持有鎖,也就是說該會話分裂索引塊時間長,那么就需要查該會話的等待事件和讀取的對象,很可能是在位圖塊中尋找一個可用的空塊而消耗了更多的時間;

2)應用程序并發數大時導致了熱塊競爭,通常伴隨著gc類的等待一起發生;

3)在RAC環境中,由于全局緩沖塊和全局隊列的爭用,當私網傳輸有性能瓶頸時會發生,比如私網流量大或者傳輸時有丟失的情況而導致不能快速申請到空的索引塊,通常伴隨著gc類的等待一起發生。


明確了發生索引分裂競爭的原因后就需要檢查是哪個對象發生了等待,從AWR中確認

Segments by RowLock Waits

% of Capture shows% of row lock waits for each top segment compared

with total rowlock waits for all segments captured by the Snapshot

故障排除 | enq:TX - index contention等待事件

此外,還可以從AWR中找出是哪類的分裂

Instance Activity Stats

Ordered by statistic name

故障排除 | enq:TX - index contention等待事件

按照分裂對象分:

1)根節點分裂:特殊的枝節點分裂,分裂需要兩個新的數據塊,將原有數據轉移至兩個新節點,原有節點上生成兩條記錄分別指向新增的數據塊

2)枝節點分裂:其下層的葉節點分裂,會導致在該節點上增加一條記錄指向新加的節點,當該節點空間不足時會發生分裂

3)葉節點分裂:葉子節點上沒有足夠的空間容納新插入的數據

按照分裂數據塊比例分:

1)9-1分裂:通常是主鍵單向增長型索引,當事務向索引塊的最右側的葉節點上插入一條大于或等于現有索引塊上最大值的數據

2)5-5分裂:通常是普通索引,當事務向索引塊新插入數值小于索引中最大值

 

解決方法:

1)針對第一種場景,定期重建索引;

2)針對第二種場景,創建反向鍵索引,反向鍵可以消除索引分裂競爭,而它的缺點是它可能影響索引范圍掃描的性能。除此之外,還可以將索引改造為HASH分區(通常分區數8個即可),目的是通過HASH算法將遞增的索引鍵值分布到多個分區上,從而避免insert或update時索引分裂競爭;

3)針對第三種場景,如果是私網流量大就需要分析SQL是否可以優化,如果是網絡有丟包現象就需要通過系統網絡層分析。

 

索引分裂如何找到一個空閑的塊:

Oracle的空間管理模塊(元數據)會在位圖塊BITMAPBLOCK(L3、L2、L1)中使用五種狀態來描述數據塊的空間使用情況,以便當插入數據時可以從中挑選可用空塊來重用(找不到再擴展),五種狀態如下表示:

1)0~25% free

2)25~50% free

3)50~75% free

4)75~100% free   --塊中有75%~100%的空閑空間

5)Full Blocks      --塊沒有任何空間,不允許充當空塊

位圖塊里是沒有一個狀態是表示一個數據塊是完全空塊,只有"75~100% free"狀態的空塊。如果要插入的數據正好處于"75~100%free"大小,則將從位圖塊中查找一個狀態是"75~100% free"的數據塊,然后使用該數據塊;如果要插入的數據正好處于"75~100% free",而且也尋找到一個"75~100%free"的數據塊,但是因為無法將數據插入到該數據塊,Oracle就會將該塊的位圖信息更新為full狀態(盡管該塊還有剩余的空間),后續插入數據就不會再來使用該數據塊。


| 作者簡介

管海濤·沃趣科技高級數據庫工程師

熟悉Oracle數據庫內部機制,豐富的數據庫及RAC集群層故障診斷、性能調優、OWI、數據庫備份恢復及遷移經驗。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

额济纳旗| 始兴县| 景泰县| 高陵县| 阿合奇县| 桑植县| 桐柏县| 调兵山市| 右玉县| 改则县| 绩溪县| 图木舒克市| 秦皇岛市| 延安市| 锡林郭勒盟| 南郑县| 九江县| 瑞丽市| 兰西县| 嘉兴市| 文昌市| 渝北区| 泾川县| 额敏县| 岳西县| 广水市| 平舆县| 宜州市| 伊川县| 菏泽市| 塔河县| 武乡县| 绿春县| 修武县| 游戏| 梁平县| 霍州市| 吴忠市| 清远市| 临江市| 舞钢市|