資料庫執行更新失敗,檢視日誌
首先是根據報的exception進行排查:
org.hibernate.exception.lockacquisitionexception: could not execute statement
很明顯,是資料庫死鎖,導致不能執行我的更新sql。
檢視程序
--查詢出占用當前鎖的程序id,kill掉即可。查詢是否鎖表
show open tables where in_use >0;
--查詢當前使用者程序
show processlist;
--查詢當前的事務
select
*from
information_schema.innodb_trx;
--檢視當前鎖定的事務
select
*from
information_schema.innodb_locks;
--檢視當前等鎖的事務
select
*from information_schema.innodb_lock_waits;
kill通過上面方式未查找到死鎖的程序,為排除其他程序影響,我將連線該資料庫的程序都kill掉,之後重啟服務進行重新連線,問題依然存在。1234;
資料庫死鎖產生的原因有:
通過上面排查基本排除掉是業務**產生死鎖,接下來排查系統資源,通過排查,發現果然是系統資源的原因導致。慢日誌占用空間過大,導致資料庫所在伺服器不能再進行寫入,所以報ioexception。排查問題時也應該先從io異常開始的。
接下來就是分析慢日誌,確定是業務**原因還是慢日誌配置的原因(執行時間設定等),分析完之後刪掉騰出空間。
資料庫死鎖問題
資料庫是乙個多使用者使用的共享資源,當多個使用者併發地訪問資料時,在資料庫中就會產生多個事務同時訪問同一資料的情況。若對併發操作不加控制就可能會讀取和儲存不正確的資料,破壞資料庫的一致性。加鎖是實現資料庫併發控制的乙個非常重要的技術。在實際應用中經常會遇到的與鎖相關的異常情況,當兩個事務需要一組有衝...
Sybase 資料庫死鎖問題
死鎖的發生對系統的效能和吞吐量都有重要影響,經檢測發現,管理資訊系統的死鎖主要是因為兩個或多個執行緒 登入 搶占同一表資料資源。引起長時間搶占同一資源不是因為我們需要處理的事務太複雜,時間太長,而往往是因為我們在前端應用程式對資料庫作操作時忘了提交。本文介紹一種處理解決這種死鎖的方法。sybase封...
mysql資料庫開啟慢查詢日誌
修改配置檔案 在配置檔案my.ini中加上下面兩句話 1 log slow queries c xampp mysql slow query.log 2 long query time 3 第一句使用來定義慢查詢日誌的路徑 若是linux系統,會涉及許可權問題 第二句使用來定義用時超過過多少秒的查詢...