MySQL鎖表問題處理

2021-10-19 18:36:12 字數 655 閱讀 8961

mysql中鎖表導致的報錯可以找到正在執行的導致鎖表的程序,kill 掉程序即可解決。

select * from information_schema.innodb_trx;
一般情況下長期處於running狀態的程序基本就是導致鎖表的程序。例如該事務程序涉及多個sql語句執行,執行到一半時遇到其他事務正在修改同乙個表,這時候該進行就會lock wait,如果這個過程時間太長等待超時了,那這個程序就會長期處於 running,對於沒有執行的sql對應的表時沒有影響的,但是對於這個事務中已經執行了的sql對應的表就會因為長期持有鎖而不能進行其他操作

kill 453
檢視當前等鎖的事務select * from information_schema.innodb_lock_waits;

檢視正被占用的表

show open tables where in_use > 0;

檢視正在執行的程序

show processlist;

mysql鎖問題嗎 mysql 鎖問題處理

錯誤資訊如下 time 140122 16 34 23 user host x thread id 19904440 schema x last errno 1205 killed 0 query time 200.911931 lock time 0.000041 rows sent 0 rows...

mysql鎖表處理方法

鎖是計算機協調多個程序或執行緒併發訪問某一資源的機制。在資料庫中,除傳統的計算資源 如cpu ram i o等 的爭用以外,資料也是一種供許多使用者共享的資源。如何保證資料併發訪問的一致性 有效性是所有資料庫必須解決的乙個問題,鎖衝突也是影響資料庫併發訪問效能的乙個重要因素。mysql的鎖機制比較簡...

MySQL解決鎖表問題

1.為何會鎖表 首先我們了解一下資料庫查詢機制,首先我們用工具進行連線查詢時,會建立乙個connection,此時資料庫會將查詢語句解析成一棵 樹 各個引擎底層的結構不一樣,mysql的話在innodb用的是b tree,俗稱b 樹,那麼再到執行器進行處理,最後返回給客戶端。鎖表的原因 當多個連線 ...