10bet网址
MySQL 5.6 リファレンスマニュアル
Download this Manual

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 STATUSSQL ステートメントを使用して、オンデマンドで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 リリースで削除される予定です。