ほとんどの統計情報は接続に関連付けられますが、 一部はプロセスに関連付けられます。その場合はその旨が記載されます。
MySQL Native Driver が生成する統計情報を以下に示します。
bytes_sent
bytes_received
packets_sent
packets_received
protocol_overhead_in
protocol_overhead_in = packets_received * 4
protocol_overhead_out
protocol_overhead_out = packets_received * 4
bytes_received_ok_packet
注意: 合計サイズ(バイト単位)にはヘッダパケットのサイズ (4 バイト。プロトコルオーバーヘッドを参照)が含まれます。
packets_received_ok
bytes_received_eof_packet
packets_received_eof
bytes_received_rset_header_packet
LOAD LOCAL INFILE
INSERT
UPDATE
SELECT
packets_received_rset_header
bytes_received_rset_field_meta_packet
packets_received_rset_field_meta
bytes_received_rset_row_packet
rows_fetched_from_server_normal
rows_fetched_from_server_ps
packets_received_rset_row
bytes_received_prepare_response_packet
packets_received_prepare_response
bytes_received_change_user_packet
packets_received_change_user
packets_sent_command
bytes_received_real_data_normal
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
result_set_queries
SHOW
注意: この統計情報は、PHP が MySQL に送信したクエリ数の 間接的な指標として使用できます。 これは、データベースに高い負荷をかけているクライアントの 特定に役立つ場合があります。
non_result_set_queries
LOAD DATA
no_index_used
--log-queries-not-using-indexes
注意: これらのクエリは、 mysqli_report(MYSQLI_REPORT_INDEX); を呼び出すことで例外を通じて報告させることができます。 mysqli_report(MYSQLI_REPORT_INDEX ^ MYSQLI_REPORT_STRICT); を呼び出すことで、代わりに警告として報告させることもできます。
mysqli_report(MYSQLI_REPORT_INDEX);
mysqli_report(MYSQLI_REPORT_INDEX ^ MYSQLI_REPORT_STRICT);
bad_index_used
--log-slow-queries
slow_queries
long_query_time
min_examined_row_limit
mysqli_report を通じては報告されません。
buffered_sets
クライアント側で結果セットをバッファリングする API 呼び出しの例:
unbuffered_sets
クライアント側で結果セットをバッファリングしない API 呼び出しの例:
ps_buffered_sets
ps_unbuffered_sets
flushed_normal_sets
注意: フラッシュはバッファリングされない結果セットでのみ発生します。 バッファリングされない結果セットは、接続上で新しいクエリを実行する前に 完全にフェッチする必要があります。そうしないと MySQL がエラーをスローします。 アプリケーションがバッファリングされない結果セットのすべての行をフェッチしなかった場合、 mysqlnd は暗黙的に結果セットをフェッチして回線をクリアします。 rows_skipped_normal、rows_skipped_ps も参照してください。 暗黙的なフラッシュが発生する原因の例: クライアントアプリケーションの不具合 クライアントが必要なデータを見つけた後に読み取りを中止したが、 MySQL に必要以上のレコードを計算させてしまった場合 クライアントアプリケーションが予期せず停止した場合
注意: フラッシュはバッファリングされない結果セットでのみ発生します。 バッファリングされない結果セットは、接続上で新しいクエリを実行する前に 完全にフェッチする必要があります。そうしないと MySQL がエラーをスローします。 アプリケーションがバッファリングされない結果セットのすべての行をフェッチしなかった場合、 mysqlnd は暗黙的に結果セットをフェッチして回線をクリアします。 rows_skipped_normal、rows_skipped_ps も参照してください。
rows_skipped_normal
rows_skipped_ps
暗黙的なフラッシュが発生する原因の例:
flushed_ps_sets
ps_prepared_never_executed
ps_prepared_once_executed
rows_buffered_from_client_normal
結果をバッファリングするクエリの例:
rows_buffered_from_client_ps
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
copy_on_write_saved
copy_on_write_performed
explicit_free_result
implicit_free_result
proto_text_fetched_null
MYSQL_TYPE_NULL
proto_binary_fetched_null
proto_text_fetched_bit
MYSQL_TYPE_BIT
proto_binary_fetched_bit
proto_text_fetched_tinyint
MYSQL_TYPE_TINY
proto_binary_fetched_tinyint
proto_text_fetched_short
MYSQL_TYPE_SHORT
proto_binary_fetched_short
proto_text_fetched_int24
MYSQL_TYPE_INT24
proto_binary_fetched_int24
proto_text_fetched_int
MYSQL_TYPE_LONG
proto_binary_fetched_int
proto_text_fetched_bigint
MYSQL_TYPE_LONGLONG
proto_binary_fetched_bigint
proto_text_fetched_decimal
MYSQL_TYPE_DECIMAL
MYSQL_TYPE_NEWDECIMAL
proto_binary_fetched_decimal
proto_text_fetched_float
MYSQL_TYPE_FLOAT
proto_binary_fetched_float
proto_text_fetched_double
MYSQL_TYPE_DOUBLE
proto_binary_fetched_double
proto_text_fetched_date
MYSQL_TYPE_DATE
MYSQL_TYPE_NEWDATE
proto_binary_fetched_date
proto_text_fetched_year
MYSQL_TYPE_YEAR
proto_binary_fetched_year
proto_text_fetched_time
MYSQL_TYPE_TIME
proto_binary_fetched_time
proto_text_fetched_datetime
MYSQL_TYPE_DATETIME
proto_binary_fetched_datetime
proto_text_fetched_timestamp
MYSQL_TYPE_TIMESTAMP
proto_binary_fetched_timestamp
proto_text_fetched_string
MYSQL_TYPE_STRING
MYSQL_TYPE_VARSTRING
MYSQL_TYPE_VARCHAR
proto_binary_fetched_string
proto_text_fetched_blob
MYSQL_TYPE_TINY_BLOB
MYSQL_TYPE_MEDIUM_BLOB
MYSQL_TYPE_LONG_BLOB
MYSQL_TYPE_BLOB
proto_binary_fetched_blob
proto_text_fetched_enum
MYSQL_TYPE_ENUM
proto_binary_fetched_enum
proto_text_fetched_set
MYSQL_TYPE_SET
proto_binary_fetched_set
proto_text_fetched_geometry
MYSQL_TYPE_GEOMETRY
proto_binary_fetched_geometry
proto_text_fetched_other
MYSQL_TYPE_*
注意: 理論上、これは常に 0 になるはずです。
0
proto_binary_fetched_other
connect_success
注意: connect_success には、成功した持続的接続と 非持続的接続の試行の合計が含まれます。 したがって、成功した非持続的接続の試行数は connect_success - pconnect_success となります。
connect_success - pconnect_success
pconnect_success
connect_failure
reconnect
active_connections
注意: アクティブな非持続的接続の合計数は active_connections - active_persistent_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)
disconnect_close
mysql_real_connect
in_middle_of_command_close
非同期クエリを使用していない限り、 これは PHP アプリケーションが予期せず終了し、 PHP が自動的に接続をクローズした場合にのみ発生するはずです。
init_command_executed_count
mysqli_options(MYSQLI_INIT_COMMAND , $value)
init_command_executed_count - init_command_failed_count
init_command_failed_count
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
MySQLnd がパケットの送信に失敗した場合でも、統計情報はデクリメントされません。 失敗した場合、MySQLnd は PHP の警告 Error while sending %s packet. PID=%d. を発行します。
Error while sending %s packet. PID=%d.
例3 使用例
COM_PROCESS_KILL
COM_EXECUTE
COM_PREPARE
COM_QUERY
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
connection_reused