操作場景
通過智能DBA功能查看數據庫實例是否有元數據鎖和InnoDB鎖等待,以及查看最近死鎖分析和全量死鎖分析的數據。
功能介紹
元數據鎖
數據鎖(Metadata Lock,簡稱MDL),其作用是用于解決DDL操作與DML操作的一致性。通常DDL操作需要獲取MDL寫鎖,并且MDL鎖一旦發生,可能會影響數據庫的性能,因為后續對該表的任何Select、DML、DDL操作都會被阻塞,造成連接積壓。
當前功能展示了當前時刻(實時)數據庫的MDL鎖的信息,可以快速幫助定位MDL問題、終止持有MDL鎖的會話,從而恢復被阻塞的操作。
DML鎖不在當前功能的范圍之內,可以使用InnoDB鎖等待進行分析和查看。
最多顯示1000條數據。
InnoDB鎖等待
當前功能展示了當前時刻(實時)數據庫的DML操作之前的鎖等待的信息,可以快速幫助定位多個會話因同時更新同一條數據,而產生的會話等待和阻塞,并且支持快速終止持有鎖的源頭會話,從而恢復被阻塞的操作。
DDL鎖不在當前功能的范圍之內,可以使用元數據鎖進行分析和查看。
RDS for MySQL 8.0需要開啟性能模式才能查看鎖信息,執行SHOW GLOBAL VARIABLES LIKE "performance_schema"或者在修改RDS實例參數查看是否開啟。
最近死鎖分析
此功能基于SHOW ENGINE INNODB STATUS返回的最近一次死鎖日志進行分析。如果發生過多次死鎖,只會對最近一次死鎖進行分析。
需要開啟innodb_deadlock_detect(僅針對版本為5.7的實例)參數。
全量死鎖分析
此功能定時對錯誤日志進行分析,解析其中的死鎖信息,并進行全面的死鎖分析。
依賴參數:
? 需要開啟innodb_deadlock_detect(僅針對版本為5.7的實例)參數。
? 需要開啟innodb_print_all_deadlocks參數,并將log_error_verbosity(僅針對版本除5.7之外的實例)參數值設置為3。
最多顯示10000條數據。
操作步驟
步驟 1 登錄管理控制臺。
步驟 2 單擊管理控制臺左上角的 ,選擇區域。
步驟 3 選擇“數據庫 > 關系型數據庫”。進入關系型數據庫信息頁面。
步驟 4 在“實例管理”頁面,選擇目標實例,單擊實例名稱,進入實例的“基本信息”頁簽。
步驟 5 在左側導航欄選擇“智能DBA助手 > 實時診斷”。
步驟 6 選擇“鎖&事務”頁簽,輸入管理員密碼登錄實例。
步驟 7 在“鎖&事務”頁簽,可以進行如下操作。
在“元數據鎖”頁簽,支持創建鎖分析,查看當前數據庫是否有元數據鎖。
說明
默認顯示鎖等待時間>10s的鎖個數,可自定義鎖等待時間。
在“Innodb鎖等待”頁簽,支持創建鎖分析,查看當前數據庫是否存在鎖等待。
說明
默認顯示鎖等待時間>10s的鎖個數,可自定義鎖等待時間。
在“最近死鎖分析”頁簽,支持創建鎖分析,基于SHOW ENGINE INNODB STATUS返回的最近一次死鎖日志進行分析。如果發生過多次死鎖,只會對最近一次死鎖進行分析。
說明
僅支持查看最近7天創建的鎖分析數據。
在“全量死鎖分析”頁簽,打開全量死鎖分析開關,定時對錯誤日志進行分析,解析其中的死鎖信息,并進行全面的死鎖分析。
說明
僅支持查看最近7天創建的鎖分析數據。
----結束