您好,登錄后才能下訂單哦!
這篇文章主要講解了“MYSQL LOCKS監控的詳細介紹”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“MYSQL LOCKS監控的詳細介紹”吧!
MYSQL 性能問題中,一定包含 LOCKS 的問題,我想沒人反對,但如何監控他,其實說句實話,沒有看到特別多的好的解決方法。有兩個極端,一個是本身在MYSQL上的程序本身基礎打得好,所以MYSQL 基本上很少有DEAD LOCKS , 另外一個,恐怕是根本使用MYSQL的人就不知道怎么監控DEAD LOCK ,所以沒有意識到這個問題。
首先死鎖的檢測默認是被打開的,并且INNODB 是自動的檢測事務的私說,自動的會館或者自動終結私說,innodb會嘗試選擇較小的事務去進行roll back,根據 DML操作中的事務的尺寸來進行判斷。
相對來說如果你的 innodb_table_locks = 1 并且autocommit = 0的情況下,那解決私說的問題就只能動用 innodb_lock_wait_timeout 這個參數了,或祈求GOD help.
當然如果你關閉了innodb_deadlock_detect 這個參數,那你的死鎖也是無法被檢測到的,另外 innodb_lock_wait_timeout 這個參數的設置,就可以看出掌握這個數據庫系統的人員是否老道。
死鎖的成因如果解釋起來,簡單的解釋就是 session a 掌握了資源 a ,但在處理事務的時候,不光需要a ,還需要資源b, 而 session b 掌握了資源b,而處理時不光需要b ,還需要a, 但不幸的是,在同一個時間,session 掌握了a ,去提取b , 而 session b 掌握了b 去提取a ,也不知道是 session a 最后拿到了 資源b 而解鎖,還是session b 拿到了 a而解鎖,最后MYSQL系統滴滴答答吹喇叭。 好吧不要打我,最后的結果就是一個事務被回滾,系統記錄錯誤信息。
所以監控dead locks 或 locks 其實是很重要的一件事
1 你知道那個語句和那個語句發生了死鎖
2 你知道是否有挽救的可能性
如果入行久了,馬上的反映就是 show engine innodb status 去查看死鎖,是這就是mysql 5.x (5.6之前)的方法, 并且很好用。(不知道,那你還是百度一下吧)。
現在進行LOCKS(不光是死鎖,包括類似blocked 的信息)的監控,一般都需要使用 performance_schema來進行,(什么性能損失,你是有多缺錢,多加一點CPU, 內存你會死嗎,浪費5% -10%的性能,換你老板問你為什么的時候,你能痛快的寫出報告,還是只能瞎編,你自己看著辦)。
怎么做,很多種方法,我們先來說說傳統的方法
1 innodb_print_all_deadlocks
這個參數你要打開喲,否則你真的只能傻乎乎去看 show engine innodb sttatus , 并且如果發生很多死鎖,那你會遺漏的信息會很多。同時打開這個參數還可以在ERROR log 中看到相關的所有的死鎖信息。
2 確認你的wait/lock/metadata/sql/mdl 要打開, 然后你就可以去查看
你的metadata_locks 表,當然如果你還知道 threads,那你可以聯合這兩個tables 來將那兩個語句之間進行了,那個session 和 那個session之間的矛盾,以及相關的語句會一目了然。
SELECT
performance_schema.threads.PROCESSLIST_ID,
performance_schema.metadata_locks.*
FROM
performance_schema.threads,
performance_schema.metadata_locks
WHERE
performance_schema.threads.THREAD_ID =performance_schema.metadata_locks.OWNER_THREAD_ID;
3 PT 工具 或者自己寫一個腳本,來自動記錄可能發生的死鎖。
例如我們可以通過 pt-deadlock-logger 來進行相關的死鎖鑒定
4 動態的查看innodb的 deadlock 數,可以進行動態的監控,尤其在新上項目后,或者硬件變動后可以第一時間發現問題。當然你需要先將 innodb_locks 和 innodb_lock_waits 這兩個表搞搞清楚
感謝各位的閱讀,以上就是“MYSQL LOCKS監控的詳細介紹”的內容了,經過本文的學習后,相信大家對MYSQL LOCKS監控的詳細介紹這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。