如何解決mysql等待鎖?
等待鎖出現(xiàn)的根本原因是有個事務執(zhí)行時間過久,會把部分表一直鎖定狀態(tài),導致其他事務當中的sql無法順利執(zhí)行。
方案一:縮小事務范圍,只把DML語句(UPDATE,INSERT,DELETE)包裹在事務中,因為有的事務,不僅僅是對數(shù)據(jù)庫的操作,可能還存在訪問其他系統(tǒng),如果請求時間過久,事務一直不結(jié)束,表也會一直處于鎖定。
方案二:盡可能減少事務中包含的DML語句。提高事務的執(zhí)行時間。一個事務當中減少多表操作的情景,可以拆分提交。
方案三:優(yōu)化sql執(zhí)行時間。
方案四:如果以上無法優(yōu)化,可以配置調(diào)大鎖的等待時間。