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

溫馨提示×

溫馨提示×

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

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

mysql死鎖的檢測方法

發布時間:2021-06-23 15:09:42 來源:億速云 閱讀:269 作者:chen 欄目:編程語言

本篇內容介紹了“mysql死鎖的檢測方法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

說明

1、檢測死鎖:數據庫系統實現了各種死鎖檢測和死鎖超時機制。InnoDB存儲引擎可以檢測到死鎖的循環依賴,并立即返回錯誤。

2、外部鎖的死鎖檢測:發生死鎖后,InnoDB一般自動檢查,一個事務釋放鎖后退,另一個事務獲得鎖,繼續完成事務。但是,如果涉及外部鎖或表部鎖,InnoDB不能完全自動檢測死鎖,則需要設置鎖等待超時參數innodb_lock_wait_timeout來解決。

實例

在innodb源代碼lock/lock0lock.c文件中,定義了兩個常量:

/* Restricts the length of search we will do in the waits-for
 
     graph of transactions */
 
#define LOCK_MAX_N_STEPS_IN_DEADLOCK_CHECK 1000000
 
 
 
/* Restricts the recursion depth of the search we will do in the waits-for
 
    graph of transactions */
 
#define LOCK_MAX_DEPTH_IN_DEADLOCK_CHECK 200
 
然后在檢查是否產生死鎖的函數lock_deadlock_occurs()中有如下代碼:
 
 
 
ret = lock_deadlock_recursive(trx, trx, lock, &cost, 0);
 
switch (ret) {
 
case LOCK_EXCEED_MAX_DEPTH:
 
        產生死鎖
        ...
 
        break;
 
}
 
其中的lock_deadlock_recursive()函數是遞歸函數,它會檢查自身遞歸深度,其中有如下代碼:
 
 
 
ibool   too_far
 
   = depth > LOCK_MAX_DEPTH_IN_DEADLOCK_CHECK
 
|| *cost > LOCK_MAX_N_STEPS_IN_DEADLOCK_CHECK;
 
...
 
if (too_far) {
 
                return(LOCK_EXCEED_MAX_DEPTH);
 
            }

“mysql死鎖的檢測方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

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

AI

金川县| 诸暨市| 开化县| 邢台县| 左权县| 盘锦市| 桓仁| 罗田县| 芜湖市| 柏乡县| 台江县| 弋阳县| 博乐市| 即墨市| 汕头市| 兰州市| 夹江县| 山阳县| 赤城县| 桓台县| 六安市| 武汉市| 平阴县| 阳春市| 淮滨县| 光泽县| 宜丰县| 盱眙县| 交口县| 元阳县| 清镇市| 玉山县| 东丽区| 福泉市| 靖江市| 台南市| 清远市| 芷江| 河南省| 逊克县| 汶川县|