問題描述: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 執行以下語句可查詢...