mysql 資料庫鎖一般處理

2022-08-23 21:15:17 字數 691 閱讀 2245

mysql在進行alter table等ddl操作時,有時會出現waiting for table metadata lock的等待場景。而且,一旦alter table tablea的操作停滯在waiting for table metadata lock的狀態,後續對tablea的任何操作(包括讀)都無法進行,因為他們也會在opening tables的階段進入到waiting for table metadata lock的鎖等待佇列。如果是產品環境的核心表出現了這樣的鎖等待佇列,就會造成災難性的後果。

show processlist; -- 檢視資料庫鎖情況

kill id; -- kill 殺掉當前鎖住的程序

select * from information_schema.innodb_trx -- 找到未提交事物的sid, 然後 kill 掉,讓其回滾

select * from performance_schema.events_statements_current -- 查到執行失敗的語句

alter table的語句是很危險的(其實他的危險其實是未提交事物或者長事務導致的),在操作之前最好確認對要操作的表沒有任何進行中的操作、沒有未提交事務、也沒有顯式事務中的報錯語句。如果有alter table的維護任務,在無人監管的時候執行,最好通過lock_wait_timeout設定好超時時間,避免長時間的metedata鎖等待。

安裝mysql資料庫一般步驟

1.進入mysql官網,2.選擇downloads community mysql community server,直接鏈結如下 5.在path系統變數中新增 mysql home bin 6.用管理員身份執行cmd命令列,切換到mysql目錄的bin目錄下,輸入mysqld install命令進...

json 一般處理程式讀取資料庫資料

一般處理程式的語法結構 string jsoncallback context.request jsoncallback 宣告變數 前台傳值使用 string josn 定義變數接受值 context.response.contenttype text json cx cc new cx 後台查詢的...

php訪問資料庫一般步驟

連線mysql資料庫 選擇資料庫 可選 執行sql語句 獲取結果集 關閉連線 建立連線物件 mysqli new mysqli host,username,password 選擇資料庫 mysqli select db dbname 執行sql語句 res mysqli query sql 獲取結果...