當數據庫出現鎖等待相關問題時,您可以使用鎖分析功能,直觀地分析和查看數據庫中發生的死鎖、事務阻塞及元數據鎖等待,從而迅速定位并解決相關問題,確保數據庫的穩定運行。
前提條件
目標數據庫引擎為:
RDS MySQL
自建MySQL
PolarDB MySQL版
PolarDB-X 2.0
目標數據庫實例已接入DAS,并且接入狀態顯示為接入正常,接入方法詳情請參見接入數據庫實例。
注意事項
死鎖分析目前不支持分析包含“TOO DEEP OR LONG SEARCH IN THE LOCK TABLE WAITS-FOR GRAPH, WE WILL ROLL BACK FOLLOWING TRANSACTION”描述的死鎖。
功能簡介
鎖分析功能支持對數據庫實例進行多維度的死鎖分析、事務阻塞分析、元數據鎖等待分析。
全量死鎖分析和其他鎖分析功能,目前僅支持RDS MySQL和PolarDB MySQL版數據庫實例,且需要開啟DAS經濟版或DAS企業版。需注意,DAS經濟版和DAS企業版目前僅支持部分地域,詳情請參見各個版本支持的數據庫和地域。開通DAS經濟版或企業版請參見開通經濟版和企業版。
最近死鎖分析:DAS基于
SHOW ENGINE INNODB STATUS
返回的最近一次死鎖日志進行分析。如果發生過多次死鎖,DAS只會對最近一次死鎖進行分析。詳情請參見最近死鎖分析。全量死鎖分析:DAS定時對錯誤日志進行分析,解析其中的死鎖信息,并進行全面的死鎖分析。同時,DAS支持查看指定時間范圍內的死鎖趨勢以及各個死鎖的詳細信息。詳情請參見全量死鎖分析。
其他鎖分析:DAS根據
information_schema
和performance_schema
相關數據,實時分析數據庫實例當前會話中的元數據鎖和事務阻塞情況。詳情請參見其他鎖分析。元數據鎖分析:DAS根據
information_schema.processlist
等的數據,推導鎖等待關系,并生成相應的關系圖。事務阻塞分析:DAS根據
information_schema.processlist
,information_schema.innodb_trx
,以及information_schema.innodb_lock_waits
(MySQL 5.6和5.7使用該數據)和performance_schema.data_lock_waits
(MySQL 8.0使用該數據)分析事務阻塞關系,并生成相應的關系圖。說明事務阻塞分析功能不支持PolarDB MySQL版 5.6實例。
數據庫實例參數限制
目標數據庫必須設置相應的參數后,才能使用鎖分析的對應功能。
鎖分析功能 | 涉及的數據庫實例參數 |
最近死鎖分析 | 開啟 |
全量死鎖分析 |
|
其他鎖分析中的事務阻塞分析 | 對于RDS MySQL 8.0和PolarDB MySQL版 8.0實例,需要開啟 |
修改數據庫實例參數:
RDS MySQL請參見設置實例參數。
PolarDB MySQL版請參見設置集群參數和節點參數。
相關文檔
后續操作
當數據庫實例出現死鎖、事務阻塞等情況時,您可以利用鎖分析所得的線程ID等信息,在SQL洞察和審計中分析相關事務執行情況,以確認鎖等待的原因。例如,在事務開啟后,當更新了一定數量的數據行后,這些數據行會被該事務鎖定。如果事務持續時間較長而未提交或回滾(包括隱式提交和隱式回滾),那么后續的會話或事務在更新相同的數據行時,就會進入LOCK WAIT狀態。