一文了解MySQL性能測試及調(diào)優(yōu)中的死鎖處理方法,你還看不明白?

      網(wǎng)友投稿 1038 2022-05-29

      以下從死鎖檢測、死鎖避免、死鎖解決3個方面來探討如何對Mysql死鎖問題進行性能調(diào)優(yōu)。

      一文了解MySQL性能測試及調(diào)優(yōu)中的死鎖處理方法,你還看不明白?

      死鎖檢測

      通過SQL語句查詢鎖表相關(guān)信息:

      (1)查詢表打開情況

      SHOW OPEN TABLES WHERE IN_USE> 0

      (2)查詢鎖情況列表

      SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS

      (3)查詢鎖等待信息,其中blocking_lock_id是當前事務在等待的事務

      SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS

      (4)查詢死鎖日志

      SHOW ENGINE INNODB STATUS

      這條語句只能顯示最新的一條死鎖,無法完全捕獲到系統(tǒng)發(fā)生的所有死鎖信息。

      如果想要記錄所有的死鎖日志,需要打開innodb_print_all_deadlocks參數(shù),將所有的死鎖日志記錄到errorlog中。

      (5)查詢鎖等待時間

      SHOW STATUS LIKE '%lock%'

      死鎖避免

      當有死鎖發(fā)生時,通常是由于項目的程序中出現(xiàn)了冗長的事務,或是由于隔離級別設置的不合適等。

      我們需要在事務使用中注意以下幾點:

      (1)盡量保持事務的短小精悍,做出一系列關(guān)聯(lián)的更新操作后立即提交事務,以降低死鎖的可能性。特別是不要讓有關(guān)聯(lián)的MySQL會話長時間掛起未提交的事務。

      (2)建議使用更低的隔離級別,如READ COMMITTED。

      (3)在同一事務內(nèi)修改多張表,或一張表內(nèi)的不同行時,每次以相同的順序執(zhí)行操作。以便讓事務形成清晰的鎖操作隊列而規(guī)避死鎖。

      死鎖解決

      MySQL數(shù)據(jù)庫通過死鎖檢測(innodb_deadlock_detect)和死鎖超時時間(innodb_lock_wait_timeout)這兩個參數(shù)來進行死鎖解決。

      死鎖檢測(innodb_deadlock_detect):在MySQL 8.0中,增加了一個新的動態(tài)變量innodb_deadlock_detect,用來控制InnoDB是否執(zhí)行死鎖檢測。

      該參數(shù)的默認值為ON,即打開死鎖檢測。開啟后InnoDB在加鎖的時候會檢測加鎖后是否會造成死鎖,如果會加鎖,就回滾代價最小的那一個事務。

      死鎖超時時間(innodb_lock_wait_timeout):這個參數(shù)可以用來處理檢測不出來的死鎖,或是避免長時間等待較長的事務的情況。

      對于高并發(fā)的系統(tǒng),當大量線程等待同一個鎖時,死鎖檢測可能會導致性能的下降。

      此時,如果禁用死鎖檢測,而改為依靠參數(shù)innodb_lock_wait_timeout來釋放長時間占用鎖資源的事務可能會更加高效。

      也就是說,在確認死鎖檢測功能影響了系統(tǒng)的性能并且禁用死鎖檢測不會帶來負面影響時,可以嘗試關(guān)閉innodb_deadlock_detect選項。

      另外,如果禁用了InnoDB死鎖檢測,需要及時調(diào)整參數(shù)innodb_lock_wait_timeout的值,以滿足實際的需求。

      - - -猜你喜歡:

      ? 字節(jié)跳動測試崗面試掛在二面,我復盤總結(jié)了失敗原因,決定再戰(zhàn)一次

      ? 軟件測試人員必讀的經(jīng)典書籍(附電子書),前阿里大佬給我推薦…

      ? 自從學了這套框架,自動化+性能都搞定了

      MySQL 應用性能調(diào)優(yōu) 數(shù)據(jù)庫 自動化測試

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:SQLite簡介與安裝
      下一篇:C語言學習第19篇---break與continue與return使用總結(jié)
      相關(guān)文章
      亚洲酒色1314狠狠做| 浮力影院亚洲国产第一页| 亚洲精品亚洲人成在线观看麻豆 | 国产亚洲综合视频| 国产亚洲人成无码网在线观看| 日产国产精品亚洲系列| 337P日本欧洲亚洲大胆艺术图 | 久久精品九九亚洲精品天堂| 亚洲熟伦熟女新五十路熟妇| 精品久久久久亚洲| 亚洲av无码国产精品色在线看不卡| 亚洲AV一二三区成人影片| 亚洲一区电影在线观看| 亚洲特级aaaaaa毛片| 亚洲精品色午夜无码专区日韩| 亚洲区日韩区无码区| 中文字幕亚洲激情| 国产亚洲av人片在线观看| 亚洲熟女一区二区三区| 久久亚洲国产欧洲精品一| 亚洲av午夜福利精品一区人妖| 久热综合在线亚洲精品| 亚洲人成电影在线天堂| 亚洲精品视频在线播放| 亚洲免费一级视频| 中文字幕亚洲码在线| 亚洲av无码专区在线电影天堂| 国产精品亚洲精品日韩电影| 亚洲国产日韩在线观频| 在线亚洲精品自拍| 亚洲VA中文字幕无码一二三区 | 亚洲精品在线免费观看视频| 亚洲伊人久久大香线蕉影院| 国产午夜亚洲精品国产| 无码亚洲成a人在线观看| 国产成人99久久亚洲综合精品| 亚洲乱码国产一区三区| 亚洲国产综合专区在线电影| 亚洲手机中文字幕| 亚洲欧美国产日韩av野草社区| 亚洲av无码成人精品区|