當啟用 InnoDB
監視器以進行定期輸出時,InnoDB
約每 15 秒將輸出寫入 mysqld 伺服器的標準錯誤輸出 (stderr
)。
InnoDB
將監視器輸出傳送至 stderr
而不是 stdout
或固定大小的記憶體緩衝區,以避免潛在的緩衝區溢位。
在 Windows 上,除非另有設定,否則 stderr
會導向至預設記錄檔。如果您希望將輸出導向至主控台視窗而不是錯誤記錄,請使用 --console
選項,從主控台視窗中的命令提示字元啟動伺服器。如需詳細資訊,請參閱Windows 上的預設錯誤記錄目的地。
在 Unix 和類 Unix 系統上,除非另有設定,否則 stderr
通常會導向至終端。如需詳細資訊,請參閱Unix 和類 Unix 系統上的預設錯誤記錄目的地。
只有在您實際想要查看監視器資訊時,才應啟用 InnoDB
監視器,因為輸出產生會導致效能有些許降低。此外,如果監視器輸出導向至錯誤記錄,如果您稍後忘記停用監視器,記錄可能會變得非常龐大。
為了協助疑難排解,InnoDB
在特定情況下會暫時啟用標準 InnoDB
監視器輸出。如需詳細資訊,請參閱第 17.20 節,「InnoDB 疑難排解」。
InnoDB
監視器輸出會以包含時間戳記和監視器名稱的標頭開始。例如
=====================================
2014-10-16 18:37:29 0x7fc2a95c1700 INNODB MONITOR OUTPUT
=====================================
標準 InnoDB
監控器(INNODB MONITOR OUTPUT
)的標頭也用於鎖定監控器,因為後者產生相同的輸出,但增加了額外的鎖定資訊。
系統變數 innodb_status_output
和 innodb_status_output_locks
用於啟用標準 InnoDB
監控器和 InnoDB
鎖定監控器。
啟用或停用 InnoDB
監控器需要 PROCESS
權限。
啟用標準 InnoDB 監控器
將 innodb_status_output
系統變數設定為 ON
,以啟用標準 InnoDB
監控器。
SET GLOBAL innodb_status_output=ON;
若要停用標準 InnoDB
監控器,請將 innodb_status_output
設定為 OFF
。
當您關閉伺服器時,innodb_status_output
變數會設定為預設值 OFF
。
啟用 InnoDB 鎖定監控器
InnoDB
鎖定監控器資料會與 InnoDB
標準監控器輸出一起列印。必須同時啟用 InnoDB
標準監控器和 InnoDB
鎖定監控器,才能定期列印 InnoDB
鎖定監控器資料。
若要啟用 InnoDB
鎖定監控器,請將 innodb_status_output_locks
系統變數設定為 ON
。必須同時啟用 InnoDB
標準監控器和 InnoDB
鎖定監控器,才能定期列印 InnoDB
鎖定監控器資料。
SET GLOBAL innodb_status_output=ON;
SET GLOBAL innodb_status_output_locks=ON;
若要停用 InnoDB
鎖定監控器,請將 innodb_status_output_locks
設定為 OFF
。若要同時停用 InnoDB
標準監控器,請將 innodb_status_output
設定為 OFF
。
當您關閉伺服器時,innodb_status_output
和 innodb_status_output_locks
變數會設定為預設值 OFF
。
若要為 SHOW ENGINE INNODB STATUS
輸出啟用 InnoDB
鎖定監控器,您只需要啟用 innodb_status_output_locks
。
隨需取得標準 InnoDB 監控器輸出
除了啟用標準 InnoDB
監控器以定期輸出外,您可以使用 SHOW ENGINE INNODB STATUS
SQL 陳述式隨需取得標準 InnoDB
監控器輸出,此陳述式會將輸出擷取至您的用戶端程式。如果您使用的是 mysql 互動式用戶端,如果將常用的分號陳述式終止符號替換為 \G
,則輸出會更易於閱讀。
mysql> SHOW ENGINE INNODB STATUS\G
如果啟用了 InnoDB
鎖定監控器,SHOW ENGINE INNODB STATUS
輸出也會包含 InnoDB
鎖定監控器資料。
將標準 InnoDB 監控器輸出導向狀態檔案
您可以透過在啟動時指定 --innodb-status-file
選項,啟用標準 InnoDB
監控器輸出並將其導向至狀態檔案。當使用此選項時,InnoDB
會在資料目錄中建立名為 innodb_status.
的檔案,並大約每 15 秒將輸出寫入其中。pid
當伺服器正常關閉時,InnoDB
會移除狀態檔案。如果發生異常關閉,可能需要手動移除狀態檔案。
--innodb-status-file
選項僅供暫時使用,因為輸出產生可能會影響效能,而且 innodb_status.
檔案隨著時間推移可能會變得非常大。pid