MySQL Native Driver は、クライアントとサーバー間の通信に関する 統計情報の収集をサポートしています。 収集される統計情報は、主に以下の 2 種類です。
クライアント統計情報
接続統計情報
mysqli 拡張モジュールを使用している場合、 これらの統計情報は以下の 2 つの API 呼び出しで取得できます。
注意:
統計情報は、MySQL Native Driver を使用するすべての拡張モジュール間で 集約されます。 たとえば、mysqli 拡張モジュールと PDO MySQL ドライバの両方が MySQLnd を使用するように 設定されている場合、mysqli の関数呼び出しと PDO のメソッド呼び出しの両方が統計情報に影響します。
MySQL Native Driver を利用する各拡張モジュールの API 呼び出しが、個々の統計情報にどの程度影響しているかを特定することはできません。
クライアント統計情報は、 mysqli_get_client_stats() 関数を呼び出すことで取得できます。
接続統計情報は、 mysqli_get_connection_stats() 関数を呼び出すことで取得できます。
どちらの関数も連想配列を返します。 統計項目の名前が、対応する統計データのキーになっています。
ほとんどの統計情報は接続に関連付けられますが、 一部はプロセスに関連付けられます。その場合はその旨が記載されます。
MySQL Native Driver が生成する統計情報を以下に示します。
bytes_sentPHP から MySQL サーバーに送信されたバイト数。
bytes_receivedMySQL サーバーから受信したバイト数。
packets_sentMySQL クライアントサーバープロトコルで送信されたパケット数。
packets_receivedMySQL クライアントサーバープロトコルで受信したパケット数。
protocol_overhead_in
MySQL クライアントサーバープロトコルの受信トラフィックにおけるオーバーヘッド(バイト単位)。
現在はパケットヘッダ(4 バイト)のみがオーバーヘッドとみなされます。
protocol_overhead_in = packets_received * 4
protocol_overhead_out
MySQL クライアントサーバープロトコルの送信トラフィックにおけるオーバーヘッド(バイト単位)。
現在はパケットヘッダ(4 バイト)のみがオーバーヘッドとみなされます。
protocol_overhead_out = packets_received * 4
bytes_received_ok_packet受信した MySQL クライアントサーバープロトコルの OK パケットの合計サイズ(バイト単位)。 OK パケットにはステータスメッセージを含めることができます。 ステータスメッセージの長さは可変であるため、OK パケットのサイズは固定ではありません。
注意:
合計サイズ(バイト単位)にはヘッダパケットのサイズ (4 バイト。プロトコルオーバーヘッドを参照)が含まれます。
packets_received_ok受信した MySQL クライアントサーバープロトコルの OK パケットの数。
bytes_received_eof_packet受信した MySQL クライアントサーバープロトコルの EOF パケットの合計サイズ(バイト単位)。 EOF のサイズはサーバーのバージョンによって異なる場合があります。 また、EOF はエラーメッセージを転送することもあります。
注意:
合計サイズ(バイト単位)にはヘッダパケットのサイズ (4 バイト。プロトコルオーバーヘッドを参照)が含まれます。
packets_received_eofMySQL クライアントサーバープロトコルの EOF パケットの数。
他のパケット統計情報と同様に、PHP が期待するパケットではなく たとえばエラーメッセージを受信した場合でもパケット数は増加します。
bytes_received_rset_header_packet
受信した MySQL クライアントサーバープロトコルの結果セットのヘッダパケット
合計サイズ(バイト単位)。
パケットのサイズはペイロード
(LOAD LOCAL INFILE、INSERT、
UPDATE、SELECT、エラーメッセージ)によって異なります。
注意:
合計サイズ(バイト単位)にはヘッダパケットのサイズ (4 バイト。プロトコルオーバーヘッドを参照)が含まれます。
packets_received_rset_headerMySQL クライアントサーバープロトコルの結果セットのヘッダパケット数。
bytes_received_rset_field_meta_packet受信した MySQL クライアントサーバープロトコルの結果セットのメタデータ (フィールド情報)パケット合計サイズ(バイト単位)。 当然、サイズは結果セット内のフィールドによって異なります。 COM_LIST_FIELDS の場合、パケットにはエラーまたは EOF パケットが 含まれることもあります。
注意:
合計サイズ(バイト単位)にはヘッダパケットのサイズ (4 バイト。プロトコルオーバーヘッドを参照)が含まれます。
packets_received_rset_field_metaMySQL クライアントサーバープロトコルの結果セットのメタデータ (フィールド情報)パケット数。
bytes_received_rset_row_packet
受信した MySQL クライアントサーバープロトコルの結果セットの行データパケット
合計サイズ(バイト単位)。
パケットにはエラーまたは EOF パケットが含まれることもあります。
rows_fetched_from_server_normal
と rows_fetched_from_server_ps
を bytes_received_rset_row_packet
から差し引くことで、エラーおよび EOF パケットの数を算出できます。
注意:
合計サイズ(バイト単位)にはヘッダパケットのサイズ (4 バイト。プロトコルオーバーヘッドを参照)が含まれます。
packets_received_rset_rowMySQL クライアントサーバープロトコルの結果セットの行データパケット数。
bytes_received_prepare_response_packet受信した MySQL クライアントサーバープロトコルのプリペアドステートメント初期化用 OK パケット(プリペアドステートメント初期化パケット)の合計サイズ(バイト単位)。 パケットにはエラーが含まれることもあります。 パケットのサイズは MySQL のバージョンによって異なります。
注意:
合計サイズ(バイト単位)にはヘッダパケットのサイズ (4 バイト。プロトコルオーバーヘッドを参照)が含まれます。
packets_received_prepare_responseMySQL クライアントサーバープロトコルのプリペアドステートメント初期化用 OK パケット(プリペアドステートメント初期化パケット)の数。
bytes_received_change_user_packet受信した MySQL クライアントサーバープロトコルの COM_CHANGE_USER パケットの 合計サイズ(バイト単位)。 パケットにはエラーまたは EOF が含まれることもあります。
注意:
合計サイズ(バイト単位)にはヘッダパケットのサイズ (4 バイト。プロトコルオーバーヘッドを参照)が含まれます。
packets_received_change_userMySQL クライアントサーバープロトコルの COM_CHANGE_USER パケットの数。
packets_sent_commandPHP から MySQL に送信された MySQL クライアントサーバープロトコルコマンドの数。
どの特定のコマンドがいくつ送信されたかを知る方法はありません。
bytes_received_real_data_normal
PHP クライアントがテキストプロトコルを使用して
mysqlnd から取得したペイロードのバイト数。
これは、プリペアドステートメントから生成されたものではなく、 PHP クライアントが取得した結果セットに含まれる実データのサイズです。
mysqlnd が MySQL からの結果セット全体を
取得済みであっても、この統計情報は PHP クライアントが
mysqlnd から実際に取得したデータのみをカウントすることに
注意してください。
値を増加させるコードの例を以下に示します。
$mysqli = new mysqli();
$res = $mysqli->query("SELECT 'abc'");
$res->fetch_assoc();
$res->close();
ただし、結果セットがクライアント側でバッファリングされただけで フェッチされなかった場合、以下の例のように統計情報は増加しません。
$mysqli = new mysqli();
$res = $mysqli->query("SELECT 'abc'");
$res->close();
bytes_received_real_data_ps
PHP クライアントがプリペアドステートメントプロトコルを使用して
mysqlnd から取得したペイロードのバイト数。
これは、プリペアドステートメントから生成され、 PHP クライアントが取得した結果セットに含まれる実データのサイズです。
結果セットがその後 PHP クライアントによって読み取られなかった場合、値は増加しません。
mysqlnd が MySQL からの結果セット全体を
取得済みであっても、この統計情報は PHP クライアントが
mysqlnd から実際に取得したデータのみをカウントすることに
注意してください。
bytes_received_real_data_normal も参照してください。
result_set_queries
結果セットを生成したクエリの数。
結果セットを生成するクエリの例:
SELECT、SHOW。
結果セットのヘッダパケットの読み取り時にエラーが発生した場合、 この統計情報は増加しません。
注意:
この統計情報は、PHP が MySQL に送信したクエリ数の 間接的な指標として使用できます。 これは、データベースに高い負荷をかけているクライアントの 特定に役立つ場合があります。
non_result_set_queries
結果セットを生成しなかったクエリの数。
結果セットを生成しないクエリの例:
INSERT、UPDATE、LOAD DATA。
結果セットのヘッダパケットの読み取り時にエラーが発生した場合、 この統計情報は増加しません。
注意:
この統計情報は、PHP が MySQL に送信したクエリ数の 間接的な指標として使用できます。 これは、データベースに高い負荷をかけているクライアントの 特定に役立つ場合があります。
no_index_used
結果セットを生成したがインデックスを使用しなかったクエリの数。
(mysqld の起動オプション --log-queries-not-using-indexes も参照してください。)
注意:
これらのクエリは、
mysqli_report(MYSQLI_REPORT_INDEX);を呼び出すことで例外を通じて報告させることができます。mysqli_report(MYSQLI_REPORT_INDEX ^ MYSQLI_REPORT_STRICT);を呼び出すことで、代わりに警告として報告させることもできます。
bad_index_used
結果セットを生成したが適切なインデックスを使用しなかったクエリの数。
(mysqld の起動オプション --log-slow-queries も参照してください。)
注意:
これらのクエリは、
mysqli_report(MYSQLI_REPORT_INDEX);を呼び出すことで例外を通じて報告させることができます。mysqli_report(MYSQLI_REPORT_INDEX ^ MYSQLI_REPORT_STRICT);を呼び出すことで、代わりに警告として報告させることもできます。
slow_queries
実行に long_query_time 秒以上かかり、
少なくとも min_examined_row_limit 行の検査を
必要とした SQL 文。
mysqli_report() を通じては報告されません。
buffered_sets通常のクエリ(つまり、プリペアドステートメント経由ではないクエリ)が返した バッファリングされた結果セットの数。
クライアント側で結果セットをバッファリングする API 呼び出しの例: mysqli_query(), mysqli_store_result(), mysqli_stmt_get_result()
unbuffered_sets通常のクエリ(つまり、プリペアドステートメント経由ではないクエリ)が返した バッファリングされない結果セットの数。
クライアント側で結果セットをバッファリングしない API 呼び出しの例: mysqli_use_result()
ps_buffered_setsプリペアドステートメントが返したバッファリングされた結果セットの数。
クライアント側で結果セットをバッファリングする API 呼び出しの例: mysqli_stmt_store_result()
ps_unbuffered_setsプリペアドステートメントが返したバッファリングされない結果セットの数。
デフォルトではプリペアドステートメントはバッファリングされないため、 ほとんどのプリペアドステートメントはこの統計情報にカウントされます。
flushed_normal_sets通常のクエリ(つまり、プリペアドステートメント経由ではないクエリ)が返した 結果セットのうち、未読のデータが暗黙的にフラッシュされたものの数。
注意:
フラッシュはバッファリングされない結果セットでのみ発生します。
バッファリングされない結果セットは、接続上で新しいクエリを実行する前に 完全にフェッチする必要があります。そうしないと MySQL がエラーをスローします。 アプリケーションがバッファリングされない結果セットのすべての行をフェッチしなかった場合、 mysqlnd は暗黙的に結果セットをフェッチして回線をクリアします。
rows_skipped_normal、rows_skipped_psも参照してください。暗黙的なフラッシュが発生する原因の例:
クライアントアプリケーションの不具合
クライアントが必要なデータを見つけた後に読み取りを中止したが、 MySQL に必要以上のレコードを計算させてしまった場合
クライアントアプリケーションが予期せず停止した場合
flushed_ps_setsプリペアドステートメントが返した結果セットのうち、 未読のデータが暗黙的にフラッシュされたものの数。
注意:
フラッシュはバッファリングされない結果セットでのみ発生します。
バッファリングされない結果セットは、接続上で新しいクエリを実行する前に 完全にフェッチする必要があります。そうしないと MySQL がエラーをスローします。 アプリケーションがバッファリングされない結果セットのすべての行をフェッチしなかった場合、 mysqlnd は暗黙的に結果セットをフェッチして回線をクリアします。
rows_skipped_normal、rows_skipped_psも参照してください。暗黙的なフラッシュが発生する原因の例:
クライアントアプリケーションの不具合
クライアントが必要なデータを見つけた後に読み取りを中止したが、 MySQL に必要以上のレコードを計算させてしまった場合
クライアントアプリケーションが予期せず停止した場合
ps_prepared_never_executed準備されたが一度も実行されなかったステートメントの数。
ps_prepared_once_executed一度だけ実行されたプリペアドステートメントの数。
rows_fetched_from_server_normalrows_fetched_from_server_psサーバーからフェッチされた結果セット行の合計数。 これには、クライアントが読み取らなかったが、 バッファリングされない結果セットのフラッシュにより暗黙的にフェッチされた行も含まれます。
packets_received_rset_row も参照してください。
rows_buffered_from_client_normal通常のクエリから生成された、バッファリングされた行の合計数。
これは、MySQL からフェッチされ、クライアント側でバッファリングされた行の数です。
結果をバッファリングするクエリの例:
rows_buffered_from_client_ps
rows_buffered_from_client_normal と同様ですが、
プリペアドステートメント用です。
rows_fetched_from_client_normal_buffered通常のクエリで作成されたバッファリングされた結果セットから、 クライアントがフェッチした行の合計数。
rows_fetched_from_client_ps_bufferedプリペアドステートメントで作成されたバッファリングされた結果セットから、 クライアントがフェッチした行の合計数。
rows_fetched_from_client_normal_unbuffered通常のクエリで作成されたバッファリングされない結果セットから、 クライアントがフェッチした行の合計数。
rows_fetched_from_client_ps_unbufferedプリペアドステートメントで作成されたバッファリングされない結果セットから、 クライアントがフェッチした行の合計数。
rows_fetched_from_client_ps_cursorプリペアドステートメントで作成されたカーソルから、 クライアントがフェッチした行の合計数。
rows_skipped_normalrows_skipped_ps将来の使用のために予約されています(現在はサポートされていません)。
copy_on_write_savedcopy_on_write_performedこれはプロセスレベルのスコープの統計情報です。
mysqlnd では、拡張モジュールが返す変数は mysqlnd の 内部ネットワーク結果バッファを指しています。 データが変更されない場合、フェッチされたデータはメモリ内に一度だけ保持されます。 ただし、データを変更する場合は、mysqlnd が コピーオンライト操作を実行します。
explicit_free_resultimplicit_free_resultこれは接続レベルおよびプロセスレベルのスコープの統計情報です。
解放された結果セットの合計数。
proto_text_fetched_null
通常のクエリ(MySQL テキストプロトコル)から取得した
MYSQL_TYPE_NULL
型のカラムの合計数。
proto_binary_fetched_null
プリペアドステートメント(MySQL バイナリプロトコル)から取得した
MYSQL_TYPE_NULL
型のカラムの合計数。
proto_text_fetched_bit
通常のクエリ(MySQL テキストプロトコル)から取得した
MYSQL_TYPE_BIT
型のカラムの合計数。
proto_binary_fetched_bit
プリペアドステートメント(MySQL バイナリプロトコル)から取得した
MYSQL_TYPE_BIT
型のカラムの合計数。
proto_text_fetched_tinyint
通常のクエリ(MySQL テキストプロトコル)から取得した
MYSQL_TYPE_TINY
型のカラムの合計数。
proto_binary_fetched_tinyint
プリペアドステートメント(MySQL バイナリプロトコル)から取得した
MYSQL_TYPE_TINY
型のカラムの合計数。
proto_text_fetched_short
通常のクエリ(MySQL テキストプロトコル)から取得した
MYSQL_TYPE_SHORT
型のカラムの合計数。
proto_binary_fetched_short
プリペアドステートメント(MySQL バイナリプロトコル)から取得した
MYSQL_TYPE_SHORT
型のカラムの合計数。
proto_text_fetched_int24
通常のクエリ(MySQL テキストプロトコル)から取得した
MYSQL_TYPE_INT24
型のカラムの合計数。
proto_binary_fetched_int24
プリペアドステートメント(MySQL バイナリプロトコル)から取得した
MYSQL_TYPE_INT24
型のカラムの合計数。
proto_text_fetched_int
通常のクエリ(MySQL テキストプロトコル)から取得した
MYSQL_TYPE_LONG
型のカラムの合計数。
proto_binary_fetched_int
プリペアドステートメント(MySQL バイナリプロトコル)から取得した
MYSQL_TYPE_LONG
型のカラムの合計数。
proto_text_fetched_bigint
通常のクエリ(MySQL テキストプロトコル)から取得した
MYSQL_TYPE_LONGLONG
型のカラムの合計数。
proto_binary_fetched_bigint
プリペアドステートメント(MySQL バイナリプロトコル)から取得した
MYSQL_TYPE_LONGLONG
型のカラムの合計数。
proto_text_fetched_decimal
通常のクエリ(MySQL テキストプロトコル)から取得した
MYSQL_TYPE_DECIMAL または MYSQL_TYPE_NEWDECIMAL
型のカラムの合計数。
proto_binary_fetched_decimal
プリペアドステートメント(MySQL バイナリプロトコル)から取得した
MYSQL_TYPE_DECIMAL または MYSQL_TYPE_NEWDECIMAL
型のカラムの合計数。
proto_text_fetched_float
通常のクエリ(MySQL テキストプロトコル)から取得した
MYSQL_TYPE_FLOAT
型のカラムの合計数。
proto_binary_fetched_float
プリペアドステートメント(MySQL バイナリプロトコル)から取得した
MYSQL_TYPE_FLOAT
型のカラムの合計数。
proto_text_fetched_double
通常のクエリ(MySQL テキストプロトコル)から取得した
MYSQL_TYPE_DOUBLE
型のカラムの合計数。
proto_binary_fetched_double
プリペアドステートメント(MySQL バイナリプロトコル)から取得した
MYSQL_TYPE_DOUBLE
型のカラムの合計数。
proto_text_fetched_date
通常のクエリ(MySQL テキストプロトコル)から取得した
MYSQL_TYPE_DATE または MYSQL_TYPE_NEWDATE
型のカラムの合計数。
proto_binary_fetched_date
プリペアドステートメント(MySQL バイナリプロトコル)から取得した
MYSQL_TYPE_DATE または MYSQL_TYPE_NEWDATE
型のカラムの合計数。
proto_text_fetched_year
通常のクエリ(MySQL テキストプロトコル)から取得した
MYSQL_TYPE_YEAR
型のカラムの合計数。
proto_binary_fetched_year
プリペアドステートメント(MySQL バイナリプロトコル)から取得した
MYSQL_TYPE_YEAR
型のカラムの合計数。
proto_text_fetched_time
通常のクエリ(MySQL テキストプロトコル)から取得した
MYSQL_TYPE_TIME
型のカラムの合計数。
proto_binary_fetched_time
プリペアドステートメント(MySQL バイナリプロトコル)から取得した
MYSQL_TYPE_TIME
型のカラムの合計数。
proto_text_fetched_datetime
通常のクエリ(MySQL テキストプロトコル)から取得した
MYSQL_TYPE_DATETIME
型のカラムの合計数。
proto_binary_fetched_datetime
プリペアドステートメント(MySQL バイナリプロトコル)から取得した
MYSQL_TYPE_DATETIME
型のカラムの合計数。
proto_text_fetched_timestamp
通常のクエリ(MySQL テキストプロトコル)から取得した
MYSQL_TYPE_TIMESTAMP
型のカラムの合計数。
proto_binary_fetched_timestamp
プリペアドステートメント(MySQL バイナリプロトコル)から取得した
MYSQL_TYPE_TIMESTAMP
型のカラムの合計数。
proto_text_fetched_string
通常のクエリ(MySQL テキストプロトコル)から取得した
MYSQL_TYPE_STRING、MYSQL_TYPE_VARSTRING、または MYSQL_TYPE_VARCHAR
型のカラムの合計数。
proto_binary_fetched_string
プリペアドステートメント(MySQL バイナリプロトコル)から取得した
MYSQL_TYPE_STRING、MYSQL_TYPE_VARSTRING、または MYSQL_TYPE_VARCHAR
型のカラムの合計数。
proto_text_fetched_blob
通常のクエリ(MySQL テキストプロトコル)から取得した
MYSQL_TYPE_TINY_BLOB、
MYSQL_TYPE_MEDIUM_BLOB、
MYSQL_TYPE_LONG_BLOB、
または MYSQL_TYPE_BLOB
型のカラムの合計数。
proto_binary_fetched_blob
プリペアドステートメント(MySQL バイナリプロトコル)から取得した
MYSQL_TYPE_TINY_BLOB、
MYSQL_TYPE_MEDIUM_BLOB、
MYSQL_TYPE_LONG_BLOB、
または MYSQL_TYPE_BLOB
型のカラムの合計数。
proto_text_fetched_enum
通常のクエリ(MySQL テキストプロトコル)から取得した
MYSQL_TYPE_ENUM
型のカラムの合計数。
proto_binary_fetched_enum
プリペアドステートメント(MySQL バイナリプロトコル)から取得した
MYSQL_TYPE_ENUM
型のカラムの合計数。
proto_text_fetched_set
通常のクエリ(MySQL テキストプロトコル)から取得した
MYSQL_TYPE_SET
型のカラムの合計数。
proto_binary_fetched_set
プリペアドステートメント(MySQL バイナリプロトコル)から取得した
MYSQL_TYPE_SET
型のカラムの合計数。
proto_text_fetched_geometry
通常のクエリ(MySQL テキストプロトコル)から取得した
MYSQL_TYPE_GEOMETRY
型のカラムの合計数。
proto_binary_fetched_geometry
プリペアドステートメント(MySQL バイナリプロトコル)から取得した
MYSQL_TYPE_GEOMETRY
型のカラムの合計数。
proto_text_fetched_other
通常のクエリ(MySQL テキストプロトコル)から取得した、
上記に記載されていない
MYSQL_TYPE_*
型のカラムの合計数。
注意:
理論上、これは常に
0になるはずです。
proto_binary_fetched_other
プリペアドステートメント(MySQL バイナリプロトコル)から取得した、
上記に記載されていない
MYSQL_TYPE_*
型のカラムの合計数。
注意:
理論上、これは常に
0になるはずです。
connect_success成功した接続試行の合計数。
注意:
connect_successには、成功した持続的接続と 非持続的接続の試行の合計が含まれます。 したがって、成功した非持続的接続の試行数はconnect_success - pconnect_successとなります。
pconnect_success成功した持続的接続試行の合計数。
connect_failure失敗した接続試行の合計数。
reconnectこれはプロセスレベルのスコープの統計情報です。
active_connectionsこれはプロセスレベルのスコープの統計情報です。
アクティブな持続的接続と非持続的接続の合計数。
注意:
アクティブな非持続的接続の合計数は
active_connections - active_persistent_connectionsです。
active_persistent_connectionsこれはプロセスレベルのスコープの統計情報です。
アクティブな持続的接続の合計数。
explicit_close明示的に閉じられた接続の合計数。
例1 明示的なクローズが発生するコードスニペットの例
$link = new mysqli(/* ... */); $link->close(/* ... */);
$link = new mysqli(/* ... */); $link->connect(/* ... */);
implicit_close暗黙的に閉じられた接続の合計数。
例2 暗黙的なクローズが発生するコードスニペットの例
$link = new mysqli(/* ... */); $link->real_connect(/* ... */);
unset($link)
持続的接続: プールされた接続が real_connect で作成されており、未知のオプションが設定されている可能性がある場合、 未知のオプションが設定された接続を返すことを避けるために暗黙的にクローズする
持続的接続: ping/change_user が失敗し、ext/mysqli が接続をクローズする場合
スクリプト実行の終了時: ユーザーが閉じなかった接続を 自動的にクローズする
disconnect_close
接続確立時に C API の
mysql_real_connect 呼び出しが示す接続失敗。
in_middle_of_command_closeこれはプロセスレベルのスコープの統計情報です。
コマンド実行の途中でクローズされた接続 (未取得の結果セットがある状態、クエリ送信後かつ応答受信前、 データフェッチ中、LOAD DATA でのデータ転送中)。
非同期クエリを使用していない限り、 これは PHP アプリケーションが予期せず終了し、 PHP が自動的に接続をクローズした場合にのみ発生するはずです。
init_command_executed_count
init コマンドの実行回数の合計。
例: mysqli_options(MYSQLI_INIT_COMMAND , $value)。
成功した実行回数は
init_command_executed_count - init_command_failed_count です。
init_command_failed_count失敗した init コマンドの合計数。
COM_* コマンド関連の統計情報
com_quitcom_init_dbcom_querycom_field_listcom_create_dbcom_drop_dbcom_refreshcom_shutdowncom_statisticscom_process_infocom_connectcom_process_killcom_debugcom_pingcom_timecom_delayed_insertcom_change_usercom_binlog_dumpcom_table_dumpcom_connect_outcom_register_slavecom_stmt_preparecom_stmt_executecom_stmt_send_long_datacom_stmt_closecom_stmt_resetcom_stmt_set_optioncom_stmt_fetchcom_daemon
PHP から MySQL に特定の COM_*
コマンドを送信した試行回数の合計。
統計情報は、回線の確認後、対応する MySQL クライアントサーバープロトコルパケットを 送信する直前にインクリメントされます。
MySQLnd がパケットの送信に失敗した場合でも、統計情報はデクリメントされません。
失敗した場合、MySQLnd は PHP の警告
Error while sending %s packet. PID=%d.
を発行します。
例3 使用例
PHP が特定のコマンドを MySQL に送信しているかどうかを確認する。
たとえば、クライアントが COM_PROCESS_KILL
を送信しているかどうかを確認する
COM_EXECUTE と
COM_PREPARE を比較して、
プリペアドステートメントの平均実行回数を算出する
COM_QUERY がゼロかどうかを確認して、
PHP がプリペアドステートメント以外の SQL 文を実行していないかどうかを確認する
COM_QUERY と
COM_EXECUTE を確認して、
過剰な数の SQL 文を実行している PHP スクリプトを特定する
explicit_stmt_closeimplicit_stmt_closeこれはプロセスレベルのスコープの統計情報です。
クローズされたプリペアドステートメントの合計数。
注意:
プリペアドステートメントは常に明示的にクローズされます。暗黙的にクローズされるのは、 準備に失敗した場合だけです。
mem_emalloc_countmem_emalloc_ammountmem_ecalloc_countmem_ecalloc_ammountmem_realloc_countmem_realloc_ammountmem_efree_countmem_malloc_countmem_malloc_ammountmem_calloc_countmem_calloc_ammountmem_ealloc_countmem_ealloc_ammountmem_free_countこれはプロセスレベルのスコープの統計情報です。
メモリ管理の呼び出し。
command_buffer_too_smallPHP から MySQL にコマンドを送信する際に、ネットワークコマンドバッファが 拡張された回数。
MySQLnd は各接続に対して mysqlnd.net_cmd_buffer_size バイトの内部コマンド/ネットワークバッファを割り当てます。
MySQL クライアントサーバープロトコルコマンド、
たとえば COM_QUERY(通常のクエリ)が
バッファに収まらない場合、
MySQLnd はコマンドの送信に必要なサイズまでバッファを拡張します。
ある接続でバッファが拡張されるたびに、
command_buffer_too_small が 1 増加します。
MySQLnd がほぼすべての接続で初期サイズの mysqlnd.net_cmd_buffer_size バイトを超えてバッファを拡張する必要がある場合は、 再割り当てを避けるためにデフォルトサイズの増加を検討すべきです。
connection_reused持続的接続が再利用された合計回数。