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