久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何在MySQL中使用show processlist命令檢視性能

128次閱讀
沒有評論

共計 2215 個字符,預計需要花費 6 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

這篇文章給大家介紹如何在 MySQL 中使用 show processlist 命令檢視性能,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

user 列,顯示單前用戶,如果不是 root,這個命令就只顯示你權限范圍內的 sql 語句。

host 列,顯示這個語句是從哪個 ip 的哪個端口上發出的。呵呵,可以用來追蹤出問題語句的用戶。

db 列,顯示這個進程目前連接的是哪個數據庫。

command 列,顯示當前連接的執行的命令,一般就是休眠(sleep),查詢(query),連接(connect)。

time 列,此這個狀態持續的時間,單位是秒。

state 列,顯示使用當前連接的 sql 語句的狀態,很重要的列,后續會有所有的狀態的描述,請注意,state 只是語句執行中的某一個狀態,一個 sql 語句,已查詢為例,可能需要經過 copying to tmp table,Sorting result,Sending data 等狀態才可以完成

info 列,顯示這個 sql 語句,因為長度有限,所以長的 sql 語句就顯示不全,但是這是一個判斷問題語句的重要依據。

如何在 MySQL 中使用 show processlist 命令檢視性能

這個命令中最關鍵的就是 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 命令檢視性能

關于如何在 MySQL 中使用 show processlist 命令檢視性能就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-04發表,共計2215字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 定远县| 汝州市| 东阿县| 桂平市| 汝南县| 康马县| 陕西省| 荆州市| 抚顺县| 扎囊县| 奉节县| 太仓市| 易门县| 永春县| 泾川县| 勃利县| 延川县| 保德县| 松江区| 天全县| 青铜峡市| 定南县| 红河县| 台湾省| 方山县| 东阳市| 卢氏县| 镇宁| 新郑市| 汉源县| 东平县| 洞口县| 中山市| 开阳县| 札达县| 韶关市| 台州市| 白朗县| 宜丰县| 台中市| 鄱阳县|