mysql查詢表是否被鎖的方法

2022-07-01 21:57:11 字數 2691 閱讀 3519

具體方法:

檢視正在執行的sql語句

show processlist;

檢視表被鎖狀態

# 查詢哪些表鎖了

show open tables where in_use > 0;

檢視造成死鎖的sql語句

# 查詢innodb引擎的執行時資訊

show engine innodb status;

查詢程序

# 查詢所有程序

show processlist;

解鎖(刪除程序)

# 刪除程序

kill id;

檢視正在執行的事務

# 檢視正在執行的事務

select * from information_schema.innodb_trx;

檢視正在鎖的事物

# 檢視正在鎖的事物

select * from information_schema.innodb_locks

檢視等待鎖的事物

# 檢視等待鎖的事務

select * from information_schema.innodb_locks;

內容補充

mysql鎖定狀態檢視命令

status

含義checking table

正在檢查資料表(這是自動的)。

closing tables

正在將表中修改的資料重新整理到磁碟中,同時正在關閉已經用完的表。這是乙個很快的操作,如果不是這樣的話,就應該確認磁碟空間是否已經滿了或者磁碟是否正處於重負中。

connect out

複製從伺服器正在連線主伺服器。

copying to tmp table on disk

由於臨時結果集大於tmp_table_size,正在將臨時表從記憶體儲存轉為磁碟儲存以此節省記憶體。

creating tmp table

正在建立臨時表以存放部分查詢結果。

deleting from main table

伺服器正在執行多表刪除中的第一部分,剛刪除第乙個表。

deleting from reference tables

伺服器正在執行多表刪除中的第二部分,正在刪除其他表的記錄。

flushing tables

正在執行flush tables,等待其他執行緒關閉資料表。

killed

傳送了乙個kill請求給某執行緒,那麼這個執行緒將會檢查kill標誌位,同時會放棄下乙個kill請求。mysql會在每次的主迴圈中檢查kill標誌位,不過有些情況下該執行緒可能會過一小段才能死掉。如果該線程程被其他執行緒鎖住了,那麼kill請求會在鎖釋放時馬上生效。

locked

被其他查詢鎖住了。

sending data

正在處理select查詢的記錄,同時正在把結果傳送給客戶端。

sorting for group

正在為group by做排序。

sorting for order

正在為order by做排序。

opening tables

這個過程應該會很快,除非受到其他因素的干擾。例如,在執alter table或lock table語句行完以前,資料表無法被其他執行緒開啟。正嘗試開啟乙個表。

removing duplicates

正在執行乙個select distinct方式的查詢,但是mysql無法在前乙個階段優化掉那些重複的記錄。因此,mysql需要再次去掉重複的記錄,然後再把結果傳送給客戶端。

reopen table

獲得了對乙個表的鎖,但是必須在表結構修改之後才能獲得這個鎖。已經釋放鎖,關閉資料表,正嘗試重新開啟資料表。

repair by sorting

修復指令正在排序以建立索引。

repair with keycache

修復指令正在利用索引快取乙個乙個地建立新索引。它會比repair by sorting慢些。

searching rows for update

正在講符合條件的記錄找出來以備更新。它必須在update要修改相關的記錄之前就完成了。

sleeping

正在等待客戶端傳送新請求。

system lock

正在等待取得乙個外部的系統鎖。如果當前沒有執行多個mysqld伺服器同時請求同乙個表,那麼可以通過增加--skip-external-locking引數來禁止外部系統鎖。

upgrading lock

insert delayed正在嘗試取得乙個鎖表以插入新記錄。

updating

正在搜尋匹配的記錄,並且修改它們。

user lock

正在等待get_lock()。

waiting for tables

該執行緒得到通知,資料表結構已經被修改了,需要重新開啟資料表以取得新的結構。然後,為了能的重新開啟資料表,必須等到所有其他執行緒關閉這個表。以下幾種情況下會產生這個通知:flush tables tbl_name, alter table, rename table, repair table, analyze table,或optimize table。

waiting for handler insert

insert delayed已經處理完了所有待處理的插入操作,正在等待新的請求。

mysql資料庫中查詢表是否被鎖

檢視表是否被鎖 直接在mysql命令列執行 show engine innodb status g。檢視造成死鎖的sql語句,分析索引情況,然後優化sql.然後show processlist,檢視造成死鎖占用時間長的sql語句。show status like lock 檢視表被鎖狀態和結束死鎖步...

MySQL 資料庫中查詢是否被鎖表

直接在mysql命令列執行 show engine innodb status g。檢視造成死鎖的sql語句,分析索引情況,然後優化sql.然後show processlist,檢視造成死鎖占用時間長的sql語句。show status like lock 1.檢視表被鎖狀態show open ta...

oracle查詢是否鎖表

oracle的鎖表與解鎖 select rule s.username,decode l.type,tm table lock tx row lock null lock level,o.owner,o.object name,o.object type,s.sid,s.serial s.termi...