mysql 檢視當前連線數

2021-06-07 01:53:31 字數 4358 閱讀 3565

文章**

本語句報告tcp/ip連線的主機名稱(採用host_name:client_port格式),以方便地判定哪個客戶端正在做什麼。

如果您得到「too many connections」錯誤資訊,並且想要了解正在發生的情況,本語句是非常有用的。mysql保留乙個額外的連線,讓擁有super許可權的 賬戶使用,以確保管理員能夠隨時連線和檢查系統(假設您沒有把此許可權給予所有的使用者)。

這個命令中最關鍵的就是state列,mysql列出的狀態主要有以下幾種:

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 檢視當前連線數

命令: show processlist; 

如果是root帳號,你能看到所有使用者的當前連線。如果是其它普通帳號,只能看到自己占用的連線。 

show processlist;只列出前100條,如果想全列出請使用show full processlist; 

mysql> show processlist;

命令: show status;

aborted_clients 由於客戶沒有正確關閉連線已經死掉,已經放棄的連線數量。 

aborted_connects 嘗試已經失敗的mysql伺服器的連線的次數。 

connections 試圖連線mysql伺服器的次數。 

created_tmp_tables 當執行語句時,已經被創造了的隱含臨時表的數量。 

delayed_insert_threads 正在使用的延遲插入處理器執行緒的數量。 

delayed_writes 用insert delayed寫入的行數。 

delayed_errors 用insert delayed寫入的發生某些錯誤(可能重複鍵值)的行數。 

flush_commands 執行flush命令的次數。 

handler_delete 請求從一張表中刪除行的次數。 

handler_read_first 請求讀入表中第一行的次數。 

handler_read_key 請求數字基於鍵讀行。 

handler_read_next 請求讀入基於乙個鍵的一行的次數。 

handler_read_rnd 請求讀入基於乙個固定位置的一行的次數。 

handler_update 請求更新表中一行的次數。 

handler_write 請求向表中插入一行的次數。 

key_blocks_used 用於關鍵字快取的塊的數量。 

key_read_requests 請求從快取讀入乙個鍵值的次數。 

key_reads 從磁碟物理讀入乙個鍵值的次數。 

key_write_requests 請求將乙個關鍵字塊寫入快取次數。 

key_writes 將乙個鍵值塊物理寫入磁碟的次數。 

max_used_connections 同時使用的連線的最大數目。 

not_flushed_key_blocks 在鍵快取中已經改變但是還沒被清空到磁碟上的鍵塊。 

not_flushed_delayed_rows 在insert delay佇列中等待寫入的行的數量。 

open_tables 開啟表的數量。 

open_files 開啟檔案的數量。 

open_streams 開啟流的數量(主要用於日誌記載) 

opened_tables 已經開啟的表的數量。 

questions 發往伺服器的查詢的數量。 

slow_queries 要花超過long_query_time時間的查詢數量。 

threads_connected 當前開啟的連線的數量。 

threads_running 不在睡眠的執行緒數量。 

uptime 伺服器工作了多少秒。

mysql 檢視當前連線數

命令 show processlist 如果是root帳號,你能看到所有使用者的當前連線。如果是其它普通帳號,只能看到自己占用的連線。show processlist 只列出前100條,如果想全列出請使用show full processlist mysql show processlist 命令 ...

mysql 檢視當前連線數

實戰經驗 登入到mysql資料庫的終端 show status 結果 看到threads開頭的沒,threads connected就是當前的連線數 其他的看英文就懂了吧.show full processlist同樣也可以看到 show full processlist 結果 請看命令結果的最後,...

mysql檢視當前實時連線數

靜態檢視 show processlist show full processlist show variables like max connections show status like connection 實時檢視 mysql show status like threads variab...