文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


10.14.3 一般執行緒狀態

以下清單描述與一般查詢處理相關聯,而非與複寫等更專業活動相關聯的執行緒 State 值。其中許多值僅適用於尋找伺服器中的錯誤。

  • After create

    當執行緒建立資料表 (包括內部暫存資料表) 時,會在建立資料表的函式結尾發生。即使資料表由於某些錯誤而無法建立,也會使用此狀態。

  • altering table

    伺服器正在執行就地 ALTER TABLE

  • Analyzing

    執行緒正在計算 MyISAM 資料表索引鍵分佈 (例如,用於 ANALYZE TABLE)。

  • checking permissions

    執行緒正在檢查伺服器是否具有執行語句所需的權限。

  • Checking table

    執行緒正在執行資料表檢查操作。

  • cleaning up

    執行緒已處理一個命令,並準備釋放記憶體和重設某些狀態變數。

  • closing tables

    執行緒正在將變更的資料表資料刷新到磁碟並關閉使用的資料表。這應該是快速的操作。如果不是,請驗證您是否沒有磁碟已滿以及磁碟是否沒有大量使用。

  • committing alter table to storage engine

    伺服器已完成就地 ALTER TABLE,並且正在提交結果。

  • converting HEAP to ondisk

    執行緒正在將內部暫存資料表從 MEMORY 資料表轉換為磁碟上的資料表。

  • copy to tmp table

    執行緒正在處理 ALTER TABLE 語句。此狀態發生在建立具有新結構的資料表之後,但在將列複製到其中之前。

    對於處於此狀態的執行緒,可以使用效能架構取得關於複製操作進度的資訊。請參閱第 29.12.5 節,「效能架構階段事件資料表」

  • Copying to group table

    如果語句具有不同的 ORDER BYGROUP BY 條件,則會依群組排序列,並複製到暫存資料表。

  • Copying to tmp table

    伺服器正在複製到記憶體中的暫存表格。

  • 複製到磁碟上的 tmp 表格

    伺服器正在複製到磁碟上的暫存表格。暫存結果集已變得太大(請參閱第 10.4.4 節,「MySQL 中內部暫存表格的使用」)。因此,執行緒正在將暫存表格從記憶體中格式變更為基於磁碟的格式,以節省記憶體。

  • 建立索引

    執行緒正在處理 MyISAM 表格的 ALTER TABLE ... ENABLE KEYS

  • 建立排序索引

    執行緒正在處理使用內部暫存表格解析的 SELECT

  • 建立表格

    執行緒正在建立表格。這包括建立暫存表格。

  • 建立 tmp 表格

    執行緒正在記憶體中或磁碟上建立暫存表格。如果表格建立在記憶體中,但稍後轉換為磁碟上的表格,則該操作期間的狀態為 複製到磁碟上的 tmp 表格

  • 從主要表格刪除

    伺服器正在執行多表格刪除的第一部分。它僅從第一個表格中刪除,並儲存將用於從其他(參考)表格刪除的欄和偏移量。

  • 從參考表格刪除

    伺服器正在執行多表格刪除的第二部分,並從其他表格中刪除相符的列。

  • discard_or_import_tablespace

    執行緒正在處理 ALTER TABLE ... DISCARD TABLESPACEALTER TABLE ... IMPORT TABLESPACE 陳述式。

  • 結束

    這發生在 ALTER TABLECREATE VIEWDELETEINSERTSELECTUPDATE 陳述式的結尾,但在清除之前。

    對於 結束 狀態,可能會發生以下操作

    • 將事件寫入二進位記錄檔

    • 釋放記憶體緩衝區,包括 blobs 的緩衝區

  • 執行中

    執行緒已開始執行陳述式。

  • 執行 init_command

    執行緒正在執行 init_command 系統變數值中的陳述式。

  • 釋放項目

    執行緒已執行命令。此狀態通常接著 清除中

  • FULLTEXT 初始化

    伺服器正在準備執行自然語言全文檢索。

  • 初始化

    這發生在初始化 ALTER TABLEDELETEINSERTSELECTUPDATE 陳述式之前。伺服器在此狀態下採取的動作包括刷新二進位記錄檔和 InnoDB 記錄檔。

  • 已終止

    有人已將 KILL 陳述式傳送到執行緒,而且它應該在下次檢查終止旗標時中止。該旗標會在 MySQL 的每個主要迴圈中檢查,但在某些情況下,執行緒可能仍需要一小段時間才會終止。如果執行緒被其他執行緒鎖定,則終止會在其他執行緒釋放其鎖定後立即生效。

  • 正在鎖定系統表格

    執行緒正在嘗試鎖定系統表格(例如,時區或記錄表格)。

  • 記錄慢查詢

    執行緒正在將陳述式寫入慢查詢記錄檔。

  • 登入

    連線執行緒的初始狀態,直到用戶端已成功驗證為止。

  • 管理索引鍵

    伺服器正在啟用或停用表格索引。

  • 開啟系統表格

    執行緒正在嘗試開啟系統表格(例如,時區或記錄表格)。

  • 開啟表格

    執行緒正在嘗試開啟表格。除非有任何情況阻止開啟,否則這應該是非常快速的程序。例如,ALTER TABLELOCK TABLE 陳述式可能會阻止開啟表格,直到陳述式完成為止。也值得檢查您的 table_open_cache 值是否足夠大。

    對於系統表格,會改用 開啟系統表格 狀態。

  • 最佳化

    伺服器正在執行查詢的初始最佳化。

  • 準備中

    此狀態會在查詢最佳化期間發生。

  • 準備變更表格

    伺服器正在準備執行就地 ALTER TABLE

  • 清除舊中繼記錄檔

    執行緒正在移除不需要的中繼記錄檔。

  • 查詢結束

    此狀態會在處理查詢之後,但在 釋放項目 狀態之前發生。

  • 從用戶端接收

    伺服器正在從用戶端讀取封包。

  • 移除重複項目

    查詢是以 MySQL 無法在早期最佳化移除 distinct 運算的方式使用 SELECT DISTINCT。因此,MySQL 需要額外的階段才能在將結果傳送給用戶端之前移除所有重複的列。

  • 移除 tmp 表格

    執行緒正在處理 SELECT 陳述式後移除內部暫存表格。如果未建立暫存表格,則不使用此狀態。

  • 重新命名

    執行緒正在重新命名表格。

  • 重新命名結果表格

    執行緒正在處理 ALTER TABLE 陳述式,已建立新表格,並正在重新命名它以取代原始表格。

  • 重新開啟表格

    執行緒已取得表格的鎖定,但在取得鎖定後注意到基礎表格結構已變更。它已釋放鎖定、關閉表格,並正在嘗試重新開啟它。

  • 依排序修復

    修復程式碼正在使用排序來建立索引。

  • 修復完成

    執行緒已完成 MyISAM 表格的多執行緒修復。

  • 使用索引鍵快取修復

    修復程式碼正在透過索引鍵快取,一次建立一個索引鍵。這比 依排序修復 慢得多。

  • 回滾中

    執行緒正在回滾交易。

  • 儲存狀態

    對於 MyISAM 表格操作(例如修復或分析),執行緒正在將新表格狀態儲存到 .MYI 檔案標頭。狀態包括列數、AUTO_INCREMENT 計數器和索引鍵分佈等資訊。

  • 搜尋要更新的列

    執行緒正在執行第一階段,以在更新所有相符的列之前找到它們。如果 UPDATE 正在變更用於尋找相關列的索引,則必須執行此動作。

  • 傳送資料

    此狀態現在包含在 執行中 狀態中。

  • 傳送至用戶端

    伺服器正在將封包寫入用戶端。

  • 設定

    執行緒正在開始 ALTER TABLE 操作。

  • 為群組排序

    執行緒正在執行排序,以滿足 GROUP BY 子句。

  • 為順序排序

    執行緒正在執行排序,以滿足 ORDER BY 子句。

  • 排序索引

    執行緒正在排序索引頁面,以便在 MyISAM 表格最佳化操作期間更有效率地存取。

  • 排序結果

    對於 SELECT 語法,這與 建立排序索引 類似,但用於非暫存表格。

  • starting

    語法執行開始時的第一個階段。

  • statistics

    伺服器正在計算統計資料,以制定查詢執行計畫。如果執行緒處於此狀態的時間很長,則伺服器可能正受限於磁碟執行其他工作。

  • 系統鎖定

    執行緒已呼叫 mysql_lock_tables(),且執行緒狀態自此之後未更新。這是一個非常常見的狀態,可能因多種原因而發生。

    例如,執行緒將要請求或正在等待表格的內部或外部系統鎖定。當 InnoDB 在執行 LOCK TABLES 期間等待表格層級鎖定時,可能會發生這種情況。如果此狀態是由於請求外部鎖定所造成,且您未使用多個存取相同 MyISAM 表格的 mysqld 伺服器,則您可以使用 --skip-external-locking 選項停用外部系統鎖定。但是,預設情況下會停用外部鎖定,因此此選項可能不會產生任何作用。對於 SHOW PROFILE,此狀態表示執行緒正在請求鎖定(而非等待鎖定)。

    對於系統表格,則會改用 鎖定系統表格 狀態。

  • update

    執行緒準備開始更新表格。

  • 更新中

    執行緒正在搜尋要更新的列,並正在更新它們。

  • 正在更新主表格

    伺服器正在執行多表格更新的第一部分。它只更新第一個表格,並儲存將用於更新其他(參考)表格的欄和位移。

  • 正在更新參考表格

    伺服器正在執行多表格更新的第二部分,並更新其他表格中相符的列。

  • 使用者鎖定

    執行緒將要請求或正在等待以 GET_LOCK() 呼叫所要求的諮詢鎖定。對於 SHOW PROFILE,此狀態表示執行緒正在請求鎖定(而非等待鎖定)。

  • 使用者睡眠

    執行緒已叫用 SLEEP() 呼叫。

  • 正在等待認可鎖定

    FLUSH TABLES WITH READ LOCK 正在等待認可鎖定。

  • 正在等待處理程式認可

    執行緒正在等待交易認可,相較於查詢處理的其他部分。

  • 正在等待表格

    執行緒收到通知,表示表格的基礎結構已變更,且需要重新開啟表格以取得新的結構。但是,若要重新開啟表格,必須等到所有其他執行緒都關閉相關表格。

    如果另一個執行緒已在相關表格上使用 FLUSH TABLES 或下列其中一個語法,則會發出此通知:FLUSH TABLES tbl_nameALTER TABLERENAME TABLEREPAIR TABLEANALYZE TABLEOPTIMIZE TABLE

  • 正在等待表格清除

    執行緒正在執行 FLUSH TABLES,且正在等待所有執行緒關閉其表格,或者執行緒收到通知,表示表格的基礎結構已變更,且需要重新開啟表格以取得新的結構。但是,若要重新開啟表格,必須等到所有其他執行緒都關閉相關表格。

    如果另一個執行緒已在相關表格上使用 FLUSH TABLES 或下列其中一個語法,則會發出此通知:FLUSH TABLES tbl_nameALTER TABLERENAME TABLEREPAIR TABLEANALYZE TABLEOPTIMIZE TABLE

  • 正在等待 lock_type 鎖定

    伺服器正在等待取得 THR_LOCK 鎖定或來自中繼資料鎖定子系統的鎖定,其中 lock_type 表示鎖定的類型。

    此狀態表示等待 THR_LOCK

    • 正在等待表格層級鎖定

    這些狀態表示等待中繼資料鎖定

    • 正在等待事件中繼資料鎖定

    • 正在等待全域讀取鎖定

    • 正在等待結構描述中繼資料鎖定

    • 正在等待預存函式中繼資料鎖定

    • 正在等待預存程序中繼資料鎖定

    • 正在等待表格中繼資料鎖定

    • 正在等待觸發程序中繼資料鎖定

    如需表格鎖定指標的相關資訊,請參閱第 10.11.1 節「內部鎖定方法」。如需中繼資料鎖定的相關資訊,請參閱第 10.11.4 節「中繼資料鎖定」。若要查看哪些鎖定正在封鎖鎖定請求,請使用第 29.12.13 節「效能結構描述鎖定表格」中描述的效能結構描述鎖定表格。

  • 正在等待條件

    執行緒正在等待條件變為 True 的一般狀態。沒有可用的特定狀態資訊。

  • 正在寫入網路

    伺服器正在將封包寫入網路。