診断目的で現在のサーバーステータスのレポートを作成します。
このプロシージャは、sql_log_bin
システム変数のセッション値を操作して、実行中にバイナリロギングを無効にします。 これは制限付き操作であるため、このプロシージャには制限付きセッション変数を設定するのに十分な権限が必要です。 セクション5.1.9.1「システム変数権限」を参照してください。
diagnostics()
用に収集されるデータには、次の情報が含まれます:
metrics
ビューからの情報 (セクション28.4.3.21「メトリックビュー」 を参照)95 パーセンタイルでクエリーを検出するビューなど、その他の関連する
sys
スキーマビューからの情報MySQL サーバーが NDB Cluster の一部である場合、
ndbinfo
スキーマからの情報レプリケーションステータス (ソースとレプリカの両方)
sys スキーマビューの一部は、初期値 (オプション)、全体値およびデルタ値として計算されます:
初期ビューは、
diagnostics()
プロシージャの開始時のビューの内容です。 この出力は、デルタ表示に使用される開始値と同じです。 初期ビューは、diagnostics.include_raw
構成オプションがON
の場合に含まれます。全体的なビューは、
diagnostics()
プロシージャの最後にあるビューの内容です。 この出力は、デルタ表示に使用される終了値と同じです。 ビュー全体が常に含まれます。デルタビューは、プロシージャの実行の開始と終了の違いです。 最小値と最大値は、それぞれ終了ビューの最小値と最大値です。 監視対象期間の最小値および最大値を反映しているとはかぎりません。
metrics
ビューを除き、デルタは最初の出力と最後の出力の間でのみ計算されます。
in_max_runtime INT UNSIGNED
: データ収集の最大時間 (秒)。NULL
を使用して、デフォルトの 60 秒のデータを収集します。 それ以外の場合は、0 より大きい値を使用します。in_interval INT UNSIGNED
: データ収集間のスリープ時間 (秒)。NULL
を使用して、デフォルトの 30 秒間スリープします。 それ以外の場合は、0 より大きい値を使用します。-
in_auto_config ENUM('current', 'medium', 'full')
: 使用するパフォーマンススキーマ構成。 許可される値は次のとおりです:current
: 現在のインストゥルメントおよびコンシューマ設定を使用します。medium
: 一部のインストゥルメントおよびコンシューマを有効にします。full
: すべてのインストゥルメントおよびコンシューマを有効にします。
注記インストゥルメントおよびコンシューマが有効になるほど、MySQL サーバーのパフォーマンスへの影響が大きくなります。
medium
設定、特にパフォーマンスに大きな影響を与えるfull
設定には注意してください。medium
またはfull
設定を使用するには、SUPER
権限が必要です。current
以外の設定を選択すると、現在の設定がプロシージャの最後にリストアされます。
diagnostics()
操作は、次の構成オプションまたは対応するユーザー定義変数を使用して変更できます (セクション28.4.2.1「sys_config テーブル」 を参照):
-
debug
,@sys.debug
このオプションが
ON
の場合は、デバッグ出力を生成します。 デフォルトはOFF
です。 -
diagnostics.allow_i_s_tables
,@sys.diagnostics.allow_i_s_tables
このオプションが
ON
の場合、diagnostics()
プロシージャはINFORMATION_SCHEMA.TABLES
テーブルに対してテーブルスキャンを実行できます。 多くのテーブルがある場合、これはコストがかかる可能性があります。 デフォルトはOFF
です。 -
diagnostics.include_raw
,@sys.diagnostics.include_raw
このオプションが
ON
の場合、diagnostics()
プロシージャの出力には、metrics
ビューのクエリーからの RAW 出力が含まれます。 デフォルトはOFF
です。 -
statement_truncate_len
,@sys.statement_truncate_len
format_statement()
関数によって戻されるステートメントの最大長。 長いステートメントはこの長さに切り捨てられます。 デフォルトは 64 です。
30 秒ごとに反復を開始し、現在のパフォーマンススキーマ設定を使用して最大 120 秒間実行する診断レポートを作成します:
mysql> CALL sys.diagnostics(120, 30, 'current');
diagnostics()
プロシージャの実行時にファイル内の出力を取得するには、mysql クライアントの tee
および filename
notee
コマンドを使用します (セクション4.5.1.2「mysql クライアントコマンド」 を参照):
mysql> tee diag.out;
mysql> CALL sys.diagnostics(120, 30, 'current');
mysql> notee;