PHP 8.5.4 Released!

統計情報

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 の統計情報

ほとんどの統計情報は接続に関連付けられますが、 一部はプロセスに関連付けられます。その場合はその旨が記載されます。

MySQL Native Driver が生成する統計情報を以下に示します。

ネットワーク関連の統計情報
bytes_sent
PHP から MySQL サーバーに送信されたバイト数。
bytes_received
MySQL サーバーから受信したバイト数。
packets_sent
MySQL クライアントサーバープロトコルで送信されたパケット数。
packets_received
MySQL クライアントサーバープロトコルで受信したパケット数。
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_eof
MySQL クライアントサーバープロトコルの EOF パケットの数。 他のパケット統計情報と同様に、PHP が期待するパケットではなく たとえばエラーメッセージを受信した場合でもパケット数は増加します。
bytes_received_rset_header_packet
受信した MySQL クライアントサーバープロトコルの結果セットのヘッダパケット 合計サイズ(バイト単位)。 パケットのサイズはペイロード (LOAD LOCAL INFILEINSERTUPDATESELECT、エラーメッセージ)によって異なります。

注意: 合計サイズ(バイト単位)にはヘッダパケットのサイズ (4 バイト。プロトコルオーバーヘッドを参照)が含まれます。

packets_received_rset_header
MySQL クライアントサーバープロトコルの結果セットのヘッダパケット数。
bytes_received_rset_field_meta_packet
受信した MySQL クライアントサーバープロトコルの結果セットのメタデータ (フィールド情報)パケット合計サイズ(バイト単位)。 当然、サイズは結果セット内のフィールドによって異なります。 COM_LIST_FIELDS の場合、パケットにはエラーまたは EOF パケットが 含まれることもあります。

注意: 合計サイズ(バイト単位)にはヘッダパケットのサイズ (4 バイト。プロトコルオーバーヘッドを参照)が含まれます。

packets_received_rset_field_meta
MySQL クライアントサーバープロトコルの結果セットのメタデータ (フィールド情報)パケット数。
bytes_received_rset_row_packet
受信した MySQL クライアントサーバープロトコルの結果セットの行データパケット 合計サイズ(バイト単位)。 パケットにはエラーまたは EOF パケットが含まれることもあります。 rows_fetched_from_server_normalrows_fetched_from_server_psbytes_received_rset_row_packet から差し引くことで、エラーおよび EOF パケットの数を算出できます。

注意: 合計サイズ(バイト単位)にはヘッダパケットのサイズ (4 バイト。プロトコルオーバーヘッドを参照)が含まれます。

packets_received_rset_row
MySQL クライアントサーバープロトコルの結果セットの行データパケット数。
bytes_received_prepare_response_packet
受信した MySQL クライアントサーバープロトコルのプリペアドステートメント初期化用 OK パケット(プリペアドステートメント初期化パケット)の合計サイズ(バイト単位)。 パケットにはエラーが含まれることもあります。 パケットのサイズは MySQL のバージョンによって異なります。

注意: 合計サイズ(バイト単位)にはヘッダパケットのサイズ (4 バイト。プロトコルオーバーヘッドを参照)が含まれます。

packets_received_prepare_response
MySQL クライアントサーバープロトコルのプリペアドステートメント初期化用 OK パケット(プリペアドステートメント初期化パケット)の数。
bytes_received_change_user_packet
受信した MySQL クライアントサーバープロトコルの COM_CHANGE_USER パケットの 合計サイズ(バイト単位)。 パケットにはエラーまたは EOF が含まれることもあります。

注意: 合計サイズ(バイト単位)にはヘッダパケットのサイズ (4 バイト。プロトコルオーバーヘッドを参照)が含まれます。

packets_received_change_user
MySQL クライアントサーバープロトコルの COM_CHANGE_USER パケットの数。
packets_sent_command
PHP から 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
結果セットを生成したクエリの数。 結果セットを生成するクエリの例: SELECTSHOW 結果セットのヘッダパケットの読み取り時にエラーが発生した場合、 この統計情報は増加しません。

注意: この統計情報は、PHP が MySQL に送信したクエリ数の 間接的な指標として使用できます。 これは、データベースに高い負荷をかけているクライアントの 特定に役立つ場合があります。

non_result_set_queries
結果セットを生成しなかったクエリの数。 結果セットを生成しないクエリの例: INSERTUPDATELOAD 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_normalrows_skipped_ps も参照してください。

暗黙的なフラッシュが発生する原因の例:

  • クライアントアプリケーションの不具合
  • クライアントが必要なデータを見つけた後に読み取りを中止したが、 MySQL に必要以上のレコードを計算させてしまった場合
  • クライアントアプリケーションが予期せず停止した場合

flushed_ps_sets
プリペアドステートメントが返した結果セットのうち、 未読のデータが暗黙的にフラッシュされたものの数。

注意: フラッシュはバッファリングされない結果セットでのみ発生します。 バッファリングされない結果セットは、接続上で新しいクエリを実行する前に 完全にフェッチする必要があります。そうしないと MySQL がエラーをスローします。 アプリケーションがバッファリングされない結果セットのすべての行をフェッチしなかった場合、 mysqlnd は暗黙的に結果セットをフェッチして回線をクリアします。 rows_skipped_normalrows_skipped_ps も参照してください。

暗黙的なフラッシュが発生する原因の例:

  • クライアントアプリケーションの不具合
  • クライアントが必要なデータを見つけた後に読み取りを中止したが、 MySQL に必要以上のレコードを計算させてしまった場合
  • クライアントアプリケーションが予期せず停止した場合

ps_prepared_never_executed
準備されたが一度も実行されなかったステートメントの数。
ps_prepared_once_executed
一度だけ実行されたプリペアドステートメントの数。
rows_fetched_from_server_normal
rows_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_normal
rows_skipped_ps
将来の使用のために予約されています(現在はサポートされていません)。
copy_on_write_saved
copy_on_write_performed
これはプロセスレベルのスコープの統計情報です。 mysqlnd では、拡張モジュールが返す変数は mysqlnd の 内部ネットワーク結果バッファを指しています。 データが変更されない場合、フェッチされたデータはメモリ内に一度だけ保持されます。 ただし、データを変更する場合は、mysqlnd が コピーオンライト操作を実行します。
explicit_free_result
implicit_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_STRINGMYSQL_TYPE_VARSTRING、または MYSQL_TYPE_VARCHAR 型のカラムの合計数。
proto_binary_fetched_string
プリペアドステートメント(MySQL バイナリプロトコル)から取得した MYSQL_TYPE_STRINGMYSQL_TYPE_VARSTRING、または MYSQL_TYPE_VARCHAR 型のカラムの合計数。
proto_text_fetched_blob
通常のクエリ(MySQL テキストプロトコル)から取得した MYSQL_TYPE_TINY_BLOBMYSQL_TYPE_MEDIUM_BLOBMYSQL_TYPE_LONG_BLOB、 または MYSQL_TYPE_BLOB 型のカラムの合計数。
proto_binary_fetched_blob
プリペアドステートメント(MySQL バイナリプロトコル)から取得した MYSQL_TYPE_TINY_BLOBMYSQL_TYPE_MEDIUM_BLOBMYSQL_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_quit
com_init_db
com_query
com_field_list
com_create_db
com_drop_db
com_refresh
com_shutdown
com_statistics
com_process_info
com_connect
com_process_kill
com_debug
com_ping
com_time
com_delayed_insert
com_change_user
com_binlog_dump
com_table_dump
com_connect_out
com_register_slave
com_stmt_prepare
com_stmt_execute
com_stmt_send_long_data
com_stmt_close
com_stmt_reset
com_stmt_set_option
com_stmt_fetch
com_daemon
PHP から MySQL に特定の COM_* コマンドを送信した試行回数の合計。 統計情報は、回線の確認後、対応する MySQL クライアントサーバープロトコルパケットを 送信する直前にインクリメントされます。
警告

MySQLnd がパケットの送信に失敗した場合でも、統計情報はデクリメントされません。 失敗した場合、MySQLnd は PHP の警告 Error while sending %s packet. PID=%d. を発行します。

例3 使用例

  • PHP が特定のコマンドを MySQL に送信しているかどうかを確認する。 たとえば、クライアントが COM_PROCESS_KILL を送信しているかどうかを確認する
  • COM_EXECUTECOM_PREPARE を比較して、 プリペアドステートメントの平均実行回数を算出する
  • COM_QUERY がゼロかどうかを確認して、 PHP がプリペアドステートメント以外の SQL 文を実行していないかどうかを確認する
  • COM_QUERYCOM_EXECUTE を確認して、 過剰な数の SQL 文を実行している PHP スクリプトを特定する
その他の統計情報
explicit_stmt_close
implicit_stmt_close
これはプロセスレベルのスコープの統計情報です。 クローズされたプリペアドステートメントの合計数。

注意: プリペアドステートメントは常に明示的にクローズされます。暗黙的にクローズされるのは、 準備に失敗した場合だけです。

mem_emalloc_count
mem_emalloc_ammount
mem_ecalloc_count
mem_ecalloc_ammount
mem_realloc_count
mem_realloc_ammount
mem_efree_count
mem_malloc_count
mem_malloc_ammount
mem_calloc_count
mem_calloc_ammount
mem_ealloc_count
mem_ealloc_ammount
mem_free_count
これはプロセスレベルのスコープの統計情報です。 メモリ管理の呼び出し。
command_buffer_too_small
PHP から MySQL にコマンドを送信する際に、ネットワークコマンドバッファが 拡張された回数。 MySQLnd は各接続に対して mysqlnd.net_cmd_buffer_size バイトの内部コマンド/ネットワークバッファを割り当てます。 MySQL クライアントサーバープロトコルコマンド、 たとえば COM_QUERY(通常のクエリ)が バッファに収まらない場合、 MySQLnd はコマンドの送信に必要なサイズまでバッファを拡張します。 ある接続でバッファが拡張されるたびに、 command_buffer_too_small が 1 増加します。 MySQLnd がほぼすべての接続で初期サイズの mysqlnd.net_cmd_buffer_size バイトを超えてバッファを拡張する必要がある場合は、 再割り当てを避けるためにデフォルトサイズの増加を検討すべきです。
connection_reused
持続的接続が再利用された合計回数。
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top