欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL使用SHOW PROCESSLIST的實現(xiàn)

 更新時間:2025年03月28日 11:36:32   作者:半桶水專家  
本文主要介紹了MySQL使用SHOW PROCESSLIST的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

1、SHOW PROCESSLIST 顯示進程列表

SHOW [FULL] PROCESSLIST 用于查看當前MySQL服務(wù)器上的所有運行中的進程列表信息。這個命令可以幫助我們了解哪些查詢正在執(zhí)行,它們的狀態(tài)是什么,以及它們已經(jīng)執(zhí)行了多長時間。
示例:

mysql> SHOW PROCESSLIST;
+----+------+-----------+----+---------+------+-------+------------------+
| Id | User | Host      | db | Command | Time | State | Info             |
+----+------+-----------+----+---------+------+-------+------------------+
| 5  | root | localhost |    | Query   | 0    | init  | show processlist |
+----+------+-----------+----+---------+------+-------+------------------+
1 row in set (0.00 sec)

其中每行顯示的信息包括:

  • Id: 線程的唯一標識符。
  • User: 執(zhí)行該命令的用戶名。
  • Host: 用戶的主機名。通常是客戶端IP地址、端口號或者都有。
  • db: 當前線程正在工作的數(shù)據(jù)庫。如果沒有選定數(shù)據(jù)庫,則為NULL。
  • Command: 線程正在執(zhí)行的命令類型。例如:Sleep,Query,Locked等。
  • Time: 命令開始執(zhí)行以來的秒數(shù)。對于'Sleep'命令,這是線程進入睡眠狀態(tài)的時間。
  • State: 顯示線程的狀態(tài)信息。這對找出性能問題特別有用。
  • Info: 顯示線程正在執(zhí)行的查詢。若沒有查詢在執(zhí)行則該列為NULL。

如果沒有 FULL 關(guān)鍵字, SHOW PROCESSLIST 則僅顯示 Info 字段中每個語句的前 100 個字符。

2、線程Command有以下值:

  • Binlog Dump:這是用于將二進制日志內(nèi)容發(fā)送到副本的復制源上的線程。
  • Change user:線程正在執(zhí)行更改用戶操作。
  • Close stmt:線程正在關(guān)閉預(yù)備語句。
  • Connect:被連接到源的復制接收器線程以及復制工作器線程使用。
  • Connect Out:副本正在連接到其源。
  • Create DB:線程正在執(zhí)行創(chuàng)建數(shù)據(jù)庫操作。
  • Daemon:此線程對服務(wù)器內(nèi)部而言,不是為客戶端連接提供服務(wù)的線程。
  • Debug:線程正在生成調(diào)試信息。
  • Delayed insert:線程是一個延遲插入處理器。
  • Drop DB:線程正在執(zhí)行刪除數(shù)據(jù)庫操作。
  • Error:Execute:線程正在執(zhí)行預(yù)備語句。
  • Fetch:線程正在獲取執(zhí)行預(yù)備語句的結(jié)果。
  • Field List:線程正在檢索表列的信息。
  • Init DB:線程正在選擇默認數(shù)據(jù)庫。
  • Kill:線程正在殺死另一個線程。
  • Long Data:線程正在檢索執(zhí)行預(yù)備語句結(jié)果中的長數(shù)據(jù)。
  • Ping:線程正在處理服務(wù)器ping請求。
  • Prepare:線程正在準備預(yù)備語句。
  • Processlist:線程正在生成關(guān)于服務(wù)器線程的信息。
  • Query:用戶客戶端在執(zhí)行查詢時使用,由單線程復制應(yīng)用程序線程使用,以及由復制協(xié)調(diào)器線程使用。
  • Quit:線程正在終止。
  • Refresh:線程正在刷新表、日志或緩存,或重置狀態(tài)變量或復制服務(wù)器信息。
  • Register Slave:線程正在注冊副本服務(wù)器。
  • Reset stmt:線程正在重置預(yù)備語句。
  • Set option:線程正在設(shè)置或重置客戶端語句執(zhí)行選項。
  • Shutdown:線程正在關(guān)閉服務(wù)器。
  • Sleep:線程正在等待客戶端發(fā)送新的語句給它。
  • Statistics:線程正在生成服務(wù)器狀態(tài)信息。
  • Time:未使用。

3、線程狀態(tài)State分類有以下值

以下列表描述了與通用查詢處理相關(guān)的線程State值,并且不涉及更專門的活動,如復制。其中許多對于在服務(wù)器中查找錯誤非常有用。

  • After create:當線程創(chuàng)建一個表(包括內(nèi)部臨時表)時,會出現(xiàn)這種情況,在創(chuàng)建表的函數(shù)結(jié)束時。即使由于某些錯誤無法創(chuàng)建表,也會使用此狀態(tài)。
  • altering table:服務(wù)器正在執(zhí)行就地ALTER TABLE。
  • Analyzing:線程正在計算MyISAM表鍵分布(例如,用于ANALYZE TABLE)。
  • checking permissions:線程正在檢查服務(wù)器是否具有執(zhí)行語句所需的權(quán)限。
  • Checking table:線程正在執(zhí)行表檢查操作。
  • cleaning up:線程已處理一條命令,并準備釋放內(nèi)存并重置某些狀態(tài)變量。
  • closing tables:線程正在將更改后的表數(shù)據(jù)刷新到磁盤并關(guān)閉已使用的表。這應(yīng)該是一個快速的操作。如果不是,驗證你是否沒有滿磁盤,并且磁盤沒有在非常繁重的使用中。
  • committing alter table to storage engine:服務(wù)器已完成就地ALTER TABLE并正在提交結(jié)果。
  • converting HEAP to ondisk:線程正在將內(nèi)部臨時表從MEMORY表轉(zhuǎn)換為磁盤上的表。
  • copy to tmp table:線程正在處理ALTER TABLE語句。在已創(chuàng)建新結(jié)構(gòu)的表之后但在將行復制進去之前發(fā)生此狀態(tài)。
  • 對于此狀態(tài)的線程,可以使用性能模式來獲取復制操作的進度。
  • Copying to group table:如果語句具有不同的ORDER BY和GROUP BY條件,則將按組排序行并復制到臨時表中。
  • Copying to tmp table:服務(wù)器正在將數(shù)據(jù)復制到內(nèi)存中的臨時表。
  • Copying to tmp table on disk:服務(wù)器正在將數(shù)據(jù)復制到磁盤上的臨時表。臨時結(jié)果集已經(jīng)變得過大。因此,線程正在將臨時表從內(nèi)存格式更改為基于磁盤的格式以節(jié)省內(nèi)存。
  • Creating index:線程正在處理MyISAM表的ALTER TABLE ... ENABLE KEYS。
  • Creating sort index:線程正在處理使用內(nèi)部臨時表解析的SELECT。
  • creating table:線程正在創(chuàng)建表。這包括創(chuàng)建臨時表。
  • Creating tmp table:線程正在在內(nèi)存或磁盤上創(chuàng)建臨時表。如果在內(nèi)存中創(chuàng)建了表,但稍后將其轉(zhuǎn)換為磁盤上的表,則在該操作期間的狀態(tài)為Copying to tmp table on disk。
  • deleting from main table:服務(wù)器正在執(zhí)行多表刪除的第一部分。它只從第一個表中刪除,并保存列和偏移量以用于從其他(引用)表中刪除。
  • deleting from reference tables:服務(wù)器正在執(zhí)行多表刪除的第二部分,并從其他表中刪除匹配的行。
  • discard_or_import_tablespace:線程正在處理ALTER TABLE ... DISCARD TABLESPACE或ALTER TABLE ... IMPORT TABLESPACE語句。
  • end:在ALTER TABLE,CREATE VIEW,DELETE,INSERT,SELECT或UPDATE語句的結(jié)束但在清理之前發(fā)生。
  • 對于結(jié)束狀態(tài),可能正在發(fā)生以下操作:
  • 將事件寫入二進制日志
  • 釋放內(nèi)存緩沖區(qū),包括blob:executing:線程已開始執(zhí)行語句。
  • Execution of init_command:線程正在執(zhí)行init_command系統(tǒng)變量的值中的語句。
  • freeing items:線程已執(zhí)行一條命令。這個狀態(tài)通常在cleaning up之前出現(xiàn)。
  • FULLTEXT initialization:服務(wù)器正在準備進行自然語言全文搜索。
  • init:在初始化ALTER TABLE,DELETE,INSERT,SELECT或UPDATE語句之前發(fā)生。在這種狀態(tài)下,服務(wù)器采取的操作包括刷新二進制日志和InnoDB日志。
  • Killed:有人向線程發(fā)送了一個KILL語句,它應(yīng)該在下次檢查kill標志時中止。該標志在MySQL的每一個主要循環(huán)中都會被檢查,但在某些情況下,線程可能還需要短暫的時間才能死亡。如果線程被其他線程鎖定,則在其他線程釋放其鎖定后立即生效。
  • Locking system tables:線程正在嘗試鎖定一個系統(tǒng)表(例如,一個時區(qū)或日志表)。
  • logging slow query:線程正在將語句寫入慢查詢?nèi)罩尽?/li>
  • login:連接線程的初始狀態(tài),直到客戶端成功進行身份驗證。
  • manage keys:服務(wù)器正在啟用或禁用表索引。
  • Opening system tables:線程正在嘗試打開一個系統(tǒng)表(例如,一個時區(qū)或日志表)。
  • Opening tables:線程正在嘗試打開表。這應(yīng)該是非??焖俚倪^程,除非有什么阻止打開。例如,ALTER TABLE或LOCK TABLE語句可以阻止打開表,直到語句完成。還值得檢查您的table_open_cache值是否足夠大。
  • 對于系統(tǒng)表,使用Opening system tables狀態(tài)代替。
  • optimizing:服務(wù)器正在為查詢執(zhí)行初始優(yōu)化。
  • preparing:此狀態(tài)在查詢優(yōu)化期間發(fā)生。
  • preparing for alter table:服務(wù)器正在準備執(zhí)行就地ALTER TABLE。
  • Purging old relay logs:線程正在刪除不需要的中繼日志文件。
  • query end:處理查詢后但在freeing items狀態(tài)之前發(fā)生此狀態(tài)。
  • Receiving from client:服務(wù)器正在從客戶端讀取數(shù)據(jù)包。
  • Removing duplicates:查詢正在以SELECT DISTINCT的方式使用,以致MySQL無法在早期階段優(yōu)化掉DISTINCT操作。由于此原因,MySQL需要一個額外的階段來移除所有重復的行,然后再將結(jié)果發(fā)送給客戶端。
  • removing tmp table:線程在處理完SELECT語句后正在移除內(nèi)部臨時表。如果沒有創(chuàng)建臨時表,則不使用此狀態(tài)。
  • rename:線程正在重命名表。
  • rename result table:線程正在處理ALTER TABLE語句,已經(jīng)創(chuàng)建了新表,并正將其重命名以替換原始表。
  • Reopen tables:線程獲取了表的鎖,但在獲取鎖后發(fā)現(xiàn)表的底層結(jié)構(gòu)已更改。它已釋放了鎖,關(guān)閉了表,正在嘗試重新打開它。
  • Repair by sorting:修復代碼使用排序來創(chuàng)建索引。
  • Repair done:線程已完成MyISAM表的多線程修復。
  • Repair with keycache:修復代碼使用一次通過鍵緩存創(chuàng)建一個鍵。這比Repair by sorting慢得多。
  • Rolling back:線程正在回滾事務(wù)。
  • Saving state:對于MyISAM表操作,如修復或分析,線程正在將新表狀態(tài)保存到.MYI文件頭。狀態(tài)包括行數(shù)、AUTO_INCREMENT計數(shù)器和鍵分布等信息。
  • Searching rows for update:線程正在進行第一階段,查找所有匹配的行,然后更新它們。如果UPDATE改變了用于查找所涉及行的索引,則必須這樣做。
  • Sending data:在MySQL 8.0.17之前:線程正在讀取和處理SELECT語句的行,并將數(shù)據(jù)發(fā)送給客戶端。因為在此狀態(tài)期間發(fā)生的操作傾向于執(zhí)行大量的磁盤訪問(讀取),所以它通常是給定查詢在其生命周期內(nèi)運行時間最長的狀態(tài)。MySQL 8.0.17及更高版本:此狀態(tài)不再單獨指示,而是包含在Executing狀態(tài)中。
  • Sending to client:服務(wù)器正在將數(shù)據(jù)包寫入客戶端。
  • setup:線程開始進行ALTER TABLE操作。
  • Sorting for group:線程正在執(zhí)行排序以滿足GROUP BY。
  • Sorting for order:線程正在執(zhí)行排序以滿足ORDER BY。
  • Sorting index:線程正在對索引頁進行排序,以便在MyISAM表優(yōu)化操作期間更有效地訪問。
  • Sorting result:對于SELECT語句,此為與Creating sort index類似,但適用于非臨時表。
  • starting:語句執(zhí)行開始的第一階段。
  • statistics:服務(wù)器正在計算統(tǒng)計信息以制定查詢執(zhí)行計劃。如果線程在此狀態(tài)下停留了很長時間,那么服務(wù)器可能在磁盤綁定中執(zhí)行其他工作。
  • System lock:線程已調(diào)用mysql_lock_tables()并且自那時起線程狀態(tài)未更新。這是一個非常通用的狀態(tài),可能出于許多原因。
  • 例如,線程將請求或正在等待表的內(nèi)部或外部系統(tǒng)鎖。當InnoDB在執(zhí)行LOCK TABLES期間等待表級鎖時,可能會發(fā)生這種情況。如果由于請求外部鎖而導致這種狀態(tài),并且您沒有使用訪問相同MyISAM表的多個mysqld服務(wù)器,則可以使用--skip-external-locking選項禁用外部系統(tǒng)鎖。然而,默認情況下是禁用外部鎖定的,所以有可能這個選項沒有效果。對于SHOW PROFILE,此狀態(tài)意味著線程正在請求鎖(不是等待它)。
  • 對于系統(tǒng)表,使用Locking system tables狀態(tài)代替。
  • update:線程準備開始更新表。
  • Updating:線程正在搜索要更新的行并更新它們。
  • updating main table:服務(wù)器正在執(zhí)行多表更新的第一部分。它只更新第一個表,并保存列和偏移量以用于更新其他(引用)表。
  • updating reference tables:服務(wù)器正在執(zhí)行多表更新的第二部分,并更新其他表中的匹配行。
  • User lock:線程將請求或正在等待使用GET_LOCK()調(diào)用請求的咨詢鎖。對于SHOW PROFILE,這種狀態(tài)意味著線程正在請求鎖(而不是等待它)。
  • User sleep:線程已調(diào)用SLEEP()。
  • Waiting for commit lock:FLUSH TABLES WITH READ LOCK正在等待提交鎖。
  • waiting for handler commit:線程正在等待事務(wù)提交,與查詢處理的其他部分相比。
  • Waiting for tables:線程收到通知,表的底層結(jié)構(gòu)已經(jīng)更改,它需要重新打開表以獲取新的結(jié)構(gòu)。但是,要重新打開表,它必須等待所有其他線程都關(guān)閉了所述表。
  • 如果另一個線程在所述表上使用了FLUSH TABLES或以下語句之一:FLUSH TABLES tbl_name,ALTER TABLE,RENAME TABLE,REPAIR TABLE,ANALYZE TABLE,OPTIMIZE TABLE,則會發(fā)生此通知。
  • Waiting for table flush:線程正在執(zhí)行FLUSH TABLES并等待所有線程關(guān)閉其表,或者線程收到通知說表的底層結(jié)構(gòu)已經(jīng)更改,它需要重新打開表以獲取新的結(jié)構(gòu)。但是,要重新打開表,它必須等待所有其他線程都關(guān)閉了所述表。
  • 如果另一個線程在所述表上使用了FLUSH TABLES或以下語句之一:FLUSH TABLES tbl_name,ALTER TABLE,RENAME TABLE,REPAIR TABLE,ANALYZE TABLE,OPTIMIZE TABLE,則會發(fā)生此通知。
  • Waiting for lock_type lock:服務(wù)器正在等待獲得THR_LOCK鎖或元數(shù)據(jù)鎖定子系統(tǒng)的鎖,其中l(wèi)ock_type指示鎖的類型。
  • 這種狀態(tài)表示等待一個THR_LOCK:
  • Waiting for table level lock:這些狀態(tài)表示等待元數(shù)據(jù)鎖:
  • Waiting for event metadata lock:Waiting for global read lock:Waiting for schema metadata lock:Waiting for stored function metadata lock:Waiting for stored procedure metadata lock:Waiting for table metadata lock:Waiting for trigger metadata lock:有關(guān)表鎖指標的信息。有關(guān)元數(shù)據(jù)鎖定的信息。要查看哪些鎖阻止了鎖請求。
  • Waiting on cond:線程在等待某個條件變?yōu)檎娴耐ㄓ脿顟B(tài)。沒有特定的狀態(tài)信息可用。
  • Writing to net:服務(wù)器正在將數(shù)據(jù)包寫入網(wǎng)絡(luò)。

相關(guān)文章

  • MySQL初級入門篇之視圖的相關(guān)概念及應(yīng)用實例

    MySQL初級入門篇之視圖的相關(guān)概念及應(yīng)用實例

    Mysql中的視圖其實是一個虛擬表,使用時動態(tài)檢索查詢數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于MySQL初級入門篇之視圖的相關(guān)概念及應(yīng)用實例的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • MySQL截取和拆分字符串函數(shù)用法示例

    MySQL截取和拆分字符串函數(shù)用法示例

    這篇文章主要介紹了MySQL截取和拆分字符串函數(shù)用法,結(jié)合實例形式分析了mysql針對字符串的截取與拆分函數(shù)SUBSTRING及SUBSTRING_INDEX相關(guān)使用方法,需要的朋友可以參考下
    2016-09-09
  • Mysql聚合函數(shù)的使用介紹

    Mysql聚合函數(shù)的使用介紹

    今天的章節(jié)我們將要來學習一下 “聚合函數(shù)” ;首先我們需要學習聚合函數(shù)對數(shù)據(jù)進行統(tǒng)計分析,比如說求最大值、最小值、平均值之類的場景。但是單純的使用聚合函數(shù),只能做全表范圍的統(tǒng)計分析
    2022-10-10
  • MySQL8設(shè)置自動創(chuàng)建時間和自動更新時間的實現(xiàn)方法

    MySQL8設(shè)置自動創(chuàng)建時間和自動更新時間的實現(xiàn)方法

    在實際應(yīng)用中,我們時常會需要用到創(chuàng)建時間和更新時間這兩個字段,下面這篇文章主要給大家介紹了關(guān)于MySQL8設(shè)置自動創(chuàng)建時間和自動更新時間的實現(xiàn)方法,需要的朋友可以參考下
    2023-03-03
  • MySQL之鎖類型解讀

    MySQL之鎖類型解讀

    MySQL鎖類型包括讀鎖(共享鎖)和寫鎖(排他鎖),并介紹了意向鎖、自增鎖、元數(shù)據(jù)鎖、行級鎖和間隙鎖等概念,悲觀鎖和樂觀鎖是兩種不同的鎖設(shè)計思想,悲觀鎖在每次操作前加鎖,適用于并發(fā)沖突多的場景;樂觀鎖在更新時判斷數(shù)據(jù)是否被修改
    2025-02-02
  • 深入理解?MySQL?索引底層原理

    深入理解?MySQL?索引底層原理

    這篇文章主要介紹了深入理解?MySQL?索引底層原理的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • 在VB.NET應(yīng)用中使用MySQL的方法

    在VB.NET應(yīng)用中使用MySQL的方法

    這篇文章主要介紹了在VB.NET應(yīng)用中使用MySQL的方法,操作基于Visual Studio IDE進行,需要的朋友可以參考下
    2015-06-06
  • mysql8.0.11 winx64安裝配置方法圖文教程(win10)

    mysql8.0.11 winx64安裝配置方法圖文教程(win10)

    這篇文章主要為大家詳細介紹了win10下mysql8.0.11 winx64安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • MySQL定位長事務(wù)(Identify Long Transactions)的實現(xiàn)

    MySQL定位長事務(wù)(Identify Long Transactions)的實現(xiàn)

    在MySQL的運行中,經(jīng)常會遇到一些長事務(wù),本文主要介紹了MySQL定位長事務(wù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-09-09
  • MySQL多層級結(jié)構(gòu)-區(qū)域表使用樹詳解

    MySQL多層級結(jié)構(gòu)-區(qū)域表使用樹詳解

    前面我們大概介紹了一下樹結(jié)構(gòu)表的基本使用。在我們項目中有好幾塊有用到多層級的概念。下面我們哪大家都比較熟悉的區(qū)域表來做演示
    2016-07-07

最新評論