mysql區間鎖導致的問題

2021-09-26 05:24:46 字數 584 閱讀 6014

前幾天產線出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...