国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

mysql鎖等待處理經驗分享

IT那活兒 / 923人閱讀
mysql鎖等待處理經驗分享
1. MySQL數據庫鎖等待信息

經業務側反饋,系統MySQL數據庫鎖等待比較嚴重,查看MySQL數據庫鎖等待情況如下:

可知,鎖等待主要在`**** `.`**** `這個表上。


2. 表結構信息

查看表結構如下:

可知,表有一個自增主鍵playlistid和唯一索引createuserid。


3. 死鎖產生原因分析

由innodb auto_increment的鎖定模式設置為1,可知此模式下所有insert...select類語句針對自增主鍵會使用auto_inc表級鎖,并保持到語句結束。同一時刻只有一個語句可以持有auto_inc鎖。
由innodb狀態信息得知,同時有多個事務并發對****這張表進行insert操作。事務1的insert操作會觸發unique key的沖突檢查進行一個當前讀并加上X鎖,等待持有自增主鍵的auto_inc鎖。事務2的insert操作首先獲得自增主鍵的auto_inc鎖,此時為表級鎖,等待持有對應記錄的X鎖(包含Gap鎖)。此時事務1和事務2造成死鎖,因為事務1的權重較小,MySQL選擇回滾事務1。


4. 優化建議

建議修改業務邏輯,將insert...select語句修改為insert ingore或者replace的方式。

將多個事務的執行順序進行調整避免鎖等待。


5. 總 結

業務程序中一定要做好事務控制,事務結束時務必確保顯示提交,釋放持有的鎖避免阻塞。程序中應盡量保證事務的原子性,一個事務實現一個邏輯,避免多個邏輯混合在一個事務中。

END


更多精彩干貨分享

點擊下方名片關注

IT那活兒

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/129876.html

相關文章

  • 系統優化怎么做-JVM優化之開篇

    摘要:幾個死鎖場景兩個線程相互調用導致互相等待同步結束。線程為了檢測死鎖,它需要遞進地檢測所有被請求的鎖。思考題線程有哪些狀態這些線程大多處于什么樣的狀態分布我們可以稱系統運行是健康的。 前言 在上一期Tomcat優化中,針對JVM相關主要參數做過一定說明,這一期主要介紹進行一些概念及經驗。后面分章節去講述相關工具的基本使用。 優化優先級 整體來講,系統優化應先優化架構及代碼,來解決具體功能...

    gecko23 評論0 收藏0
  • 為什么開發人員必須要了解數據庫

    摘要:小明馬上開發完畢,成功上線。下班過后,小明回想大紅說的話,什么是間隙鎖,什么是插入意向鎖,看來作為開發者對數據庫不應該只會寫啊,不然遇到一些疑難雜癥完全沒法解決啊。破壞了數據庫中的隔離性。 1.鎖? 1.1何為鎖 鎖在現實中的意義為:封閉的器物,以鑰匙或暗碼開啟。在計算機中的鎖一般用來管理對共享資源的并發訪問,比如我們java同學熟悉的Lock,synchronized等都是我們常見的...

    AbnerMing 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<