前幾天產線出bug,記錄下來
資料庫使用mysql,引擎使用innodb
執行insert語句的時候產線日誌報如下錯誤
error 1205 (hy000): lock wait timeout exceeded; try restarting transaction
從錯誤來看,鎖等待超時。找到insert語句找到對應表,結合當時系統情況推斷是另乙個跑批在操作對應表.sql語句如下
delete from table where trans_over_date >= #nowdate#
trans_over_date >= #nowdate# 鎖住了表中 trans_over_date範圍區間。導致insert在插入資料列trans_over_date=當前日期時獲取不到鎖導致超時失敗
解決方案
方案1.delete from table where trans_over_date >= #nowdate# - 2
對trans_over_date 取值字段提前兩天,避免和insert語句插入當天的資料交集。
方案2.迴圈查詢需要刪除的資料,每次查100條,根據主鍵列批量刪掉。直至所有資料刪除完成
mysql取消鎖語法 Mysql 會導致鎖表的語法
最近再找一些mysql鎖表原因,整理出來一部分sql語句會鎖表的,方便查閱,整理的不是很全,都是工作中碰到的,會持續更新 筆者能力有限,如果有不正確的,或者不到位的地方,還請大家指出來,方便你我,方便大家。此測試環境 mysql 5.5 基於innodb 引擎 insert into table1 ...
MYSQL 函式呼叫導致自動生成共享鎖問題
mysql版本 5.6.27 color red b 導致問題出現的mysql配置 my.ini中配置了log bin mysql bin b color 問題重現配置 表 create table t oss uniqueid name varchar 50 not null default co...
Mysql 會導致鎖表的語法
最近再找一些mysql鎖表原因,整理出來一部分sql語句會鎖表的,方便查閱,整理的不是很全,都是工作中碰到的,會持續更新 筆者能力有限,如果有不正確的,或者不到位的地方,還請大家指出來,方便你我,方便大家。此測試環境 mysql 5.5 基於innodb 引擎 sql view plain copy...