Mysql事務未提交造成表鎖 線上事故

2021-09-24 12:32:50 字數 571 閱讀 7723

問題描述:etl抽取資料庫基本資料遲遲沒有完成,造成下游依賴,延遲從而引起了業務功能.

問題定位:mysql資料庫

從資料庫查詢出有一堆慢查詢

waiting for table flush 狀態的sql
基本從上可看出有dml操作或者鎖表了

查詢是否存在事務未提交

select a.trx_started,a.trx_state,b.user,b.host,b.db,b.command,b.time,b.state,b.info,b.id from information_schema.innodb_trx a join information_schema.processlist b

on a.trx_mysql_thread_id=b.id where trx_state="running" order by b.time desc limit 18

從事務結果看出,存在複雜卻未使用索引的sql,長時間未提交的事務造成鎖表.

mysql innodb引擎配置項innodb_lock_wait_timeout 超時可報錯

orcale因事務未提交造成的鎖表的解決辦法

在plsql操作orcale表時候,會偶爾碰到因未提交執行commit 造成事務未提交,而鎖表的情況解決辦法為 前提條件有對應檢視鎖表許可權的使用者,第一步檢視被鎖表 檢視鎖表名稱,使用者等 select b.owner,b.object name,a.session id,a.locked mod...

解決plsql因事務未提交造成的鎖表問題

1 執行以下語句可查詢被鎖的表 select b.owner,b.object name,a.session id,a.locked mode from v locked object a,dba objects b where b.object id a.object id 2 執行以下語句可查詢...

plsql因事務未提交造成的鎖表的解決辦法

1 執行以下語句可查詢被鎖的表 select b.owner,b.object name,a.session id,a.locked mode from v locked object a,dba objects b where b.object id a.object id 2 執行以下語句可查詢...