最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

1、SHOW PROCESSLIST 顯示進(jìn)程列表

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

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: 線程的唯一標(biāo)識(shí)符。
  • User: 執(zhí)行該命令的用戶名。
  • Host: 用戶的主機(jī)名。通常是客戶端IP地址、端口號(hào)或者都有。
  • db: 當(dāng)前線程正在工作的數(shù)據(jù)庫(kù)。如果沒(méi)有選定數(shù)據(jù)庫(kù),則為NULL。
  • Command: 線程正在執(zhí)行的命令類型。例如:Sleep,Query,Locked等。
  • Time: 命令開(kāi)始執(zhí)行以來(lái)的秒數(shù)。對(duì)于'Sleep'命令,這是線程進(jìn)入睡眠狀態(tài)的時(shí)間。
  • State: 顯示線程的狀態(tài)信息。這對(duì)找出性能問(wèn)題特別有用。
  • Info: 顯示線程正在執(zhí)行的查詢。若沒(méi)有查詢?cè)趫?zhí)行則該列為NULL。

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

2、線程Command有以下值:

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

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

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

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

相關(guān)文章

最新評(píng)論

清流县| 当雄县| 墨竹工卡县| 正蓝旗| 大邑县| 铁力市| 会理县| 清远市| 丘北县| 苍梧县| 巫山县| 迭部县| 河北省| 城固县| 繁峙县| 彰化县| 耿马| 平南县| 县级市| 万州区| 邵阳县| 湖北省| 柘荣县| 英超| 集安市| 冕宁县| 神农架林区| 阜宁县| 建湖县| 汶川县| 临桂县| 兰坪| 福安市| 罗平县| 柘城县| 靖宇县| 安塞县| 光山县| 临漳县| 海淀区| 旺苍县|