mysql 事務一直running問題排查

2021-10-08 21:27:42 字數 765 閱讀 9599

遇到乙個線上問題,應用執行sql報錯,排查mysql:

select * from information_schema.innodb_trx;

select * from information_schema.innodb_locks;

select * from information_schema.innodb_lock_waits;

select * from processlist;

發現在trx表中存在乙個事務trx_strated已經很長時間了,占用了很多表。懷疑是事務開啟未commit或者rollback。

讓開發各自去排查**,可能能力有限,檢查一遍也沒找到問題所在。

當前智慧型kill掉這個執行緒。然後進行如下配置:

#設定是否開啟日誌

-- set global general_log=on;

#設定日誌記錄方式 table、file

-- set global log_output='table'

select *,convert (argument using utf8) as `sql` from mysql.general_log where thread_id = 17 order by event_time desc;

當在出現問題時,查詢到問題執行緒執行的sql語句。反過來去找**中呼叫的地方。

最後發現是在開啟事務後,進行了乙個if判斷,然後直接return了。導致的沒有commit或者rollback。

mysql中begin end語句一直報錯

官網上沒說清楚,上面給的例子執行也報錯.有人說是begin end只能用在儲存過程,事件等等情況下,我不知道是不是必須的.我碰到這個問題時候,看了下網上的部落格,使用下面的方法解決了 delimiter create procedure p file t begin declare variable...

一直很安靜

阿桑的走,很是突然,之前沒有聽過一點徵兆,突然就走了,其人與我非親非故,只是喜歡她那首 一直很安靜 給你的愛一直很安靜 來交換你偶爾給的關心 明明是三個人的電影 我卻始終不能有姓名 曾經想學這首歌,不過沒 細胞怎麼都學不會,現在將歌詞貼上來,以做紀念 空蕩的街景想找個人放感情 做這種決定是寂寞與我為...

一直報數遊戲

一種報數遊戲是從1開始連續報數,如果報到7的倍數 7,14,21,28 或者包含數字7的數 7,17,27,37 就用拍手代替這個數而不能報出。假設你連續聽到m聲拍手,問造成你聽到m聲拍手的第一下拍手所代表的數是幾?例如,你聽到了兩次連續的拍手,最小的可能這兩次拍手是27和28,因此輸出27。輸入m...