前言
今天在新增Mysql數據庫表新字段的時候mysql 數據庫表不存在mysql 數據庫表不存在,發現只要執行sql就會出現鎖表的情況。
記錄一下具體的排查流程和處理方案
問題定位和處理
查看了mysql的進程
show processlist;
發現一直在等待鎖 for table lock。
for table lock
在查詢結果中發現,除了這個也其他異常的情況。
初步排除有可能是以下情況導致的:
長事務運行
處理:kill掉 或 等待事務執行完成
未提交事物
處理流程:
1.查詢正在執行的事務
select * from information_schema.innodb_trx
獲取到線程ID:
2.定位找到出現問題的SQL
select * from performance_schema.events_statements_current
獲取到對應 的語句,從而可以知道哪個SQL執行有問題
3.使用 kill ${} 殺掉進程讓其回滾。
4.針對sql進行優化或者業務優化