Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


14.15.2 InnoDB モニターの有効化

InnoDB モニターでの定期的な出力を有効にすると、InnoDB は、その出力を mysqld サーバーの標準エラー出力 (stderr) に書き込みます。この場合、クライアントには出力が送信されません。オンに切り替えられると、InnoDB モニターは約 15 秒に 1 回データを出力します。サーバーの出力は通常、エラーログに送信されます (セクション5.2.2「エラーログ」を参照してください)。このデータは、パフォーマンスチューニングに役立ちます。Windows では、出力をエラーログにではなくウィンドウに送信したい場合は、コンソールウィンドウのコマンドプロンプトから --console オプションを使用してサーバーを起動します。

InnoDB は、バッファーオーバーフローの可能性を回避するために、診断の出力を stdout または固定サイズのメモリーバッファーにではなく、stderr またはファイルに送信します。副作用として、SHOW ENGINE INNODB STATUS の出力が MySQL データディレクトリ内のステータスファイルに 15 秒に 1 回書き込まれます。このファイルの名前は innodb_status.pid です。ここで、pid はサーバープロセス ID です。InnoDB は、正常なシャットダウンのときにこのファイルを削除します。異常なシャットダウンが発生した場合は、これらのステータスファイルのインスタンスが存在する可能性があるため、手動で削除する必要があります。削除する前に、これらのファイルを検査して、異常なシャットダウンの原因に関する有効な情報が含まれているかどうかを確認することをお勧めします。innodb_status.pid ファイルは、構成オプション innodb-status-file=1 が設定されている場合にのみ作成されます。

出力の生成によってパフォーマンスはある程度低下するため、InnoDB モニターは、実際にモニター情報の確認が必要な場合にのみ有効にするようにしてください。また、関連付けられたテーブルを作成することによってモニターの出力を有効にした場合は、あとでテーブルを削除することを忘れると、エラーログがきわめて大きくなることがあります。

注記

トラブルシューティングを支援するために、InnoDB は、特定の状況で InnoDB 標準モニターの出力を一時的に有効にします。詳細は、セクション14.19「InnoDB のトラブルシューティング」を参照してください。

各モニターは、タイムスタンプとモニター名が含まれたヘッダーで始まります。例:

=====================================
2014-10-16 16:28:15 7feee43c5700 INNODB MONITOR OUTPUT
=====================================

ロックモニターでは、追加のロック情報が付加された同じ出力が生成されるため、InnoDB 標準モニターのヘッダー (INNODB MONITOR OUTPUT) はロックモニターにも使用されます。

InnoDB モニターでの定期的な出力を有効にするには、CREATE TABLE ステートメントを使用して、そのモニターに関連付けられた特別な名前の付いた InnoDB テーブルを作成します。たとえば、InnoDB 標準モニターを有効にするには、innodb_monitor という名前の InnoDB テーブルを作成します。

CREATE TABLE 構文の使用は、MySQL の SQL パーサーを経由して InnoDB エンジンにコマンドを渡すための方法にすぎません。重要なのは、テーブル名と、それが InnoDB テーブルであるということだけです。テーブルの構造は関係ありません。サーバーをシャットダウンした場合は、サーバーを再起動しても、モニターは自動的に再開されません。モニターテーブルを削除し、新しい CREATE TABLE ステートメントを発行してモニターを開始します。

注記

InnoDB モニターを有効にするための CREATE TABLE の方法は非推奨であり、将来のリリースで削除される可能性があります。MySQL 5.6.16 の時点では、innodb_status_output および innodb_status_output_locks システム変数を使用して InnoDB 標準モニターおよび InnoDB ロックモニターを有効にすることができます。

InnoDB モニターを無効および有効にするには、PROCESS 権限が必要です。

InnoDB 標準モニターの有効化

InnoDB 標準モニターでの定期的な出力を有効にするには、innodb_monitor テーブルを作成します。

CREATE TABLE innodb_monitor (a INT) ENGINE=INNODB;

InnoDB 標準モニターを無効にするには、そのテーブルを削除します。

DROP TABLE innodb_monitor;

MySQL 5.6.16 の時点では、innodb_status_output システム変数を ON に設定することによって InnoDB 標準モニターを有効にすることもできます。

set GLOBAL innodb_status_output=ON;

InnoDB 標準モニターを無効にするには、innodb_status_outputOFF に設定します。

サーバーをシャットダウンすると、innodb_status_output 変数がデフォルトの OFF 値に設定されます。

オンデマンドでの InnoDB 標準モニターの出力の取得

InnoDB 標準モニターでの定期的な出力を有効にする代わりに、出力をクライアントプログラムにフェッチする SHOW ENGINE INNODB STATUS SQL ステートメントを使用して、オンデマンドで InnoDB 標準モニターの出力を取得できます。mysql 対話型クライアントを使用している場合は、通常のセミコロンのステートメントターミネータを \G に置き換えると、出力が読み取りやすくなります。

mysql> SHOW ENGINE INNODB STATUS\G

InnoDB ロックモニターの有効化

InnoDB ロックモニターでの定期的な出力を有効にするには、innodb_lock_monitor テーブルを作成します。

CREATE TABLE innodb_lock_monitor (a INT) ENGINE=INNODB;

InnoDB ロックモニターを無効にするには、そのテーブルを削除します。

DROP TABLE innodb_lock_monitor;

MySQL 5.6.16 の時点では、innodb_status_output および innodb_status_output_locks システム変数の両方を ON に設定することによって InnoDB ロックモニターを有効にすることもできます。ロックモニターの出力は InnoDB 標準モニターの出力とともに出力されるため、ロックモニターの出力を有効にするには、両方のモニターを有効にする必要があります。

set GLOBAL innodb_status_output=ON;
set GLOBAL innodb_status_output_locks=ON;

サーバーをシャットダウンすると、innodb_status_output および innodb_status_output_locks 変数がデフォルトの OFF 値に設定されます。

InnoDB ロックモニターを無効にするには、innodb_status_output_locksOFF に設定します。InnoDB 標準モニターも無効にするには、innodb_status_output を OFF に設定します。

InnoDB テーブルスペースモニターの有効化

InnoDB テーブルスペースモニターでの定期的な出力を有効にするには、innodb_tablespace_monitor テーブルを作成します。

CREATE TABLE innodb_tablespace_monitor (a INT) ENGINE=INNODB;

標準の InnoDB テーブルスペースモニターを無効にするには、そのテーブルを削除します。

DROP TABLE innodb_tablespace_monitor;
注記

テーブルスペースモニターは非推奨であり、将来の MySQL リリースで削除される予定です。

InnoDB テーブルモニターの有効化

InnoDB テーブルモニターでの定期的な出力を有効にするには、innodb_table_monitor テーブルを作成します。

CREATE TABLE innodb_table_monitor (a INT) ENGINE=INNODB;

InnoDB テーブルモニターを無効にするには、そのテーブルを削除します。

DROP TABLE innodb_table_monitor;
注記

テーブルスペースモニターは非推奨であり、将来の MySQL リリースで削除される予定です。