有许多类型的统计计数器与 Ndb
对象执行或影响的操作有关。此类操作包括启动和关闭(或中止)事务;主键和唯一键操作;表、范围和修剪扫描;在等待各种操作完成时阻塞的线程;以及由 NDBCLUSTER
发送和接收的数据和事件。每当进行 NDB API 调用或数据节点发送或接收数据时,NDB 内核中的计数器就会增加。 mysqld 将这些计数器公开为系统状态变量;它们的值可以在 SHOW STATUS
的输出中读取,或者通过查询性能模式 session_status
或 global_status
表来读取。通过比较对 NDB
表进行操作的语句前后这些值,您可以观察到在 API 级别采取的相应操作,从而了解执行语句的成本。
您可以使用以下 SHOW STATUS
语句列出所有这些状态变量
mysql> SHOW STATUS LIKE 'ndb_api%';
+----------------------------------------------+-------------+
| Variable_name | Value |
+----------------------------------------------+-------------+
| Ndb_api_wait_exec_complete_count | 11 |
| Ndb_api_wait_scan_result_count | 14 |
| Ndb_api_wait_meta_request_count | 74 |
| Ndb_api_wait_nanos_count | 31453031678 |
| Ndb_api_bytes_sent_count | 3336 |
| Ndb_api_bytes_received_count | 103568 |
| Ndb_api_trans_start_count | 10 |
| Ndb_api_trans_commit_count | 2 |
| Ndb_api_trans_abort_count | 4 |
| Ndb_api_trans_close_count | 10 |
| Ndb_api_pk_op_count | 6 |
| Ndb_api_uk_op_count | 0 |
| Ndb_api_table_scan_count | 3 |
| Ndb_api_range_scan_count | 1 |
| Ndb_api_pruned_scan_count | 0 |
| Ndb_api_scan_batch_count | 3 |
| Ndb_api_read_row_count | 11 |
| Ndb_api_trans_local_read_row_count | 9 |
| Ndb_api_adaptive_send_forced_count | 5 |
| Ndb_api_adaptive_send_unforced_count | 11 |
| Ndb_api_adaptive_send_deferred_count | 0 |
| Ndb_api_event_data_count | 0 |
| Ndb_api_event_nondata_count | 0 |
| Ndb_api_event_bytes_count | 0 |
| Ndb_api_event_data_count_injector | 0 |
| Ndb_api_event_nondata_count_injector | 0 |
| Ndb_api_event_bytes_count_injector | 0 |
| Ndb_api_wait_exec_complete_count_slave | 0 |
| Ndb_api_wait_scan_result_count_slave | 0 |
| Ndb_api_wait_meta_request_count_slave | 0 |
| Ndb_api_wait_nanos_count_slave | 0 |
| Ndb_api_bytes_sent_count_slave | 0 |
| Ndb_api_bytes_received_count_slave | 0 |
| Ndb_api_trans_start_count_slave | 0 |
| Ndb_api_trans_commit_count_slave | 0 |
| Ndb_api_trans_abort_count_slave | 0 |
| Ndb_api_trans_close_count_slave | 0 |
| Ndb_api_pk_op_count_slave | 0 |
| Ndb_api_uk_op_count_slave | 0 |
| Ndb_api_table_scan_count_slave | 0 |
| Ndb_api_range_scan_count_slave | 0 |
| Ndb_api_pruned_scan_count_slave | 0 |
| Ndb_api_scan_batch_count_slave | 0 |
| Ndb_api_read_row_count_slave | 0 |
| Ndb_api_trans_local_read_row_count_slave | 0 |
| Ndb_api_adaptive_send_forced_count_slave | 0 |
| Ndb_api_adaptive_send_unforced_count_slave | 0 |
| Ndb_api_adaptive_send_deferred_count_slave | 0 |
| Ndb_api_wait_exec_complete_count_replica | 0 |
| Ndb_api_wait_scan_result_count_replica | 0 |
| Ndb_api_wait_meta_request_count_replica | 0 |
| Ndb_api_wait_nanos_count_replica | 0 |
| Ndb_api_bytes_sent_count_replica | 0 |
| Ndb_api_bytes_received_count_replica | 0 |
| Ndb_api_trans_start_count_replica | 0 |
| Ndb_api_trans_commit_count_replica | 0 |
| Ndb_api_trans_abort_count_replica | 0 |
| Ndb_api_trans_close_count_replica | 0 |
| Ndb_api_pk_op_count_replica | 0 |
| Ndb_api_uk_op_count_replica | 0 |
| Ndb_api_table_scan_count_replica | 0 |
| Ndb_api_range_scan_count_replica | 0 |
| Ndb_api_pruned_scan_count_replica | 0 |
| Ndb_api_scan_batch_count_replica | 0 |
| Ndb_api_read_row_count_replica | 0 |
| Ndb_api_trans_local_read_row_count_replica | 0 |
| Ndb_api_adaptive_send_forced_count_replica | 0 |
| Ndb_api_adaptive_send_unforced_count_replica | 0 |
| Ndb_api_adaptive_send_deferred_count_replica | 0 |
| Ndb_api_wait_exec_complete_count_session | 0 |
| Ndb_api_wait_scan_result_count_session | 3 |
| Ndb_api_wait_meta_request_count_session | 6 |
| Ndb_api_wait_nanos_count_session | 2022486 |
| Ndb_api_bytes_sent_count_session | 268 |
| Ndb_api_bytes_received_count_session | 10332 |
| Ndb_api_trans_start_count_session | 1 |
| Ndb_api_trans_commit_count_session | 0 |
| Ndb_api_trans_abort_count_session | 0 |
| Ndb_api_trans_close_count_session | 1 |
| Ndb_api_pk_op_count_session | 0 |
| Ndb_api_uk_op_count_session | 0 |
| Ndb_api_table_scan_count_session | 1 |
| Ndb_api_range_scan_count_session | 0 |
| Ndb_api_pruned_scan_count_session | 0 |
| Ndb_api_scan_batch_count_session | 2 |
| Ndb_api_read_row_count_session | 2 |
| Ndb_api_trans_local_read_row_count_session | 2 |
| Ndb_api_adaptive_send_forced_count_session | 1 |
| Ndb_api_adaptive_send_unforced_count_session | 0 |
| Ndb_api_adaptive_send_deferred_count_session | 0 |
+----------------------------------------------+-------------+
90 rows in set (0.00 sec)
这些状态变量也可以从性能模式 session_status
和 global_status
表中获得,如下所示
mysql> SELECT * FROM performance_schema.session_status
-> WHERE VARIABLE_NAME LIKE 'ndb_api%';
+----------------------------------------------+----------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+----------------------------------------------+----------------+
| Ndb_api_wait_exec_complete_count | 11 |
| Ndb_api_wait_scan_result_count | 14 |
| Ndb_api_wait_meta_request_count | 81 |
| Ndb_api_wait_nanos_count | 119485762051 |
| Ndb_api_bytes_sent_count | 3476 |
| Ndb_api_bytes_received_count | 105372 |
| Ndb_api_trans_start_count | 10 |
| Ndb_api_trans_commit_count | 2 |
| Ndb_api_trans_abort_count | 4 |
| Ndb_api_trans_close_count | 10 |
| Ndb_api_pk_op_count | 6 |
| Ndb_api_uk_op_count | 0 |
| Ndb_api_table_scan_count | 3 |
| Ndb_api_range_scan_count | 1 |
| Ndb_api_pruned_scan_count | 0 |
| Ndb_api_scan_batch_count | 3 |
| Ndb_api_read_row_count | 11 |
| Ndb_api_trans_local_read_row_count | 9 |
| Ndb_api_adaptive_send_forced_count | 5 |
| Ndb_api_adaptive_send_unforced_count | 11 |
| Ndb_api_adaptive_send_deferred_count | 0 |
| Ndb_api_event_data_count | 0 |
| Ndb_api_event_nondata_count | 0 |
| Ndb_api_event_bytes_count | 0 |
| Ndb_api_event_data_count_injector | 0 |
| Ndb_api_event_nondata_count_injector | 0 |
| Ndb_api_event_bytes_count_injector | 0 |
| Ndb_api_wait_exec_complete_count_slave | 0 |
| Ndb_api_wait_scan_result_count_slave | 0 |
| Ndb_api_wait_meta_request_count_slave | 0 |
| Ndb_api_wait_nanos_count_slave | 0 |
| Ndb_api_bytes_sent_count_slave | 0 |
| Ndb_api_bytes_received_count_slave | 0 |
| Ndb_api_trans_start_count_slave | 0 |
| Ndb_api_trans_commit_count_slave | 0 |
| Ndb_api_trans_abort_count_slave | 0 |
| Ndb_api_trans_close_count_slave | 0 |
| Ndb_api_pk_op_count_slave | 0 |
| Ndb_api_uk_op_count_slave | 0 |
| Ndb_api_table_scan_count_slave | 0 |
| Ndb_api_range_scan_count_slave | 0 |
| Ndb_api_pruned_scan_count_slave | 0 |
| Ndb_api_scan_batch_count_slave | 0 |
| Ndb_api_read_row_count_slave | 0 |
| Ndb_api_trans_local_read_row_count_slave | 0 |
| Ndb_api_adaptive_send_forced_count_slave | 0 |
| Ndb_api_adaptive_send_unforced_count_slave | 0 |
| Ndb_api_adaptive_send_deferred_count_slave | 0 |
| Ndb_api_wait_exec_complete_count_replica | 0 |
| Ndb_api_wait_scan_result_count_replica | 0 |
| Ndb_api_wait_meta_request_count_replica | 0 |
| Ndb_api_wait_nanos_count_replica | 0 |
| Ndb_api_bytes_sent_count_replica | 0 |
| Ndb_api_bytes_received_count_replica | 0 |
| Ndb_api_trans_start_count_replica | 0 |
| Ndb_api_trans_commit_count_replica | 0 |
| Ndb_api_trans_abort_count_replica | 0 |
| Ndb_api_trans_close_count_replica | 0 |
| Ndb_api_pk_op_count_replica | 0 |
| Ndb_api_uk_op_count_replica | 0 |
| Ndb_api_table_scan_count_replica | 0 |
| Ndb_api_range_scan_count_replica | 0 |
| Ndb_api_pruned_scan_count_replica | 0 |
| Ndb_api_scan_batch_count_replica | 0 |
| Ndb_api_read_row_count_replica | 0 |
| Ndb_api_trans_local_read_row_count_replica | 0 |
| Ndb_api_adaptive_send_forced_count_replica | 0 |
| Ndb_api_adaptive_send_unforced_count_replica | 0 |
| Ndb_api_adaptive_send_deferred_count_replica | 0 |
| Ndb_api_wait_exec_complete_count_session | 0 |
| Ndb_api_wait_scan_result_count_session | 3 |
| Ndb_api_wait_meta_request_count_session | 6 |
| Ndb_api_wait_nanos_count_session | 2022486 |
| Ndb_api_bytes_sent_count_session | 268 |
| Ndb_api_bytes_received_count_session | 10332 |
| Ndb_api_trans_start_count_session | 1 |
| Ndb_api_trans_commit_count_session | 0 |
| Ndb_api_trans_abort_count_session | 0 |
| Ndb_api_trans_close_count_session | 1 |
| Ndb_api_pk_op_count_session | 0 |
| Ndb_api_uk_op_count_session | 0 |
| Ndb_api_table_scan_count_session | 1 |
| Ndb_api_range_scan_count_session | 0 |
| Ndb_api_pruned_scan_count_session | 0 |
| Ndb_api_scan_batch_count_session | 2 |
| Ndb_api_read_row_count_session | 2 |
| Ndb_api_trans_local_read_row_count_session | 2 |
| Ndb_api_adaptive_send_forced_count_session | 1 |
| Ndb_api_adaptive_send_unforced_count_session | 0 |
| Ndb_api_adaptive_send_deferred_count_session | 0 |
+----------------------------------------------+----------------+
90 rows in set (0.00 sec)
mysql> SELECT * FROM performance_schema.global_status
-> WHERE VARIABLE_NAME LIKE 'ndb_api%';
+----------------------------------------------+----------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+----------------------------------------------+----------------+
| Ndb_api_wait_exec_complete_count | 11 |
| Ndb_api_wait_scan_result_count | 14 |
| Ndb_api_wait_meta_request_count | 88 |
| Ndb_api_wait_nanos_count | 159810484729 |
| Ndb_api_bytes_sent_count | 3616 |
| Ndb_api_bytes_received_count | 107176 |
| Ndb_api_trans_start_count | 10 |
| Ndb_api_trans_commit_count | 2 |
| Ndb_api_trans_abort_count | 4 |
| Ndb_api_trans_close_count | 10 |
| Ndb_api_pk_op_count | 6 |
| Ndb_api_uk_op_count | 0 |
| Ndb_api_table_scan_count | 3 |
| Ndb_api_range_scan_count | 1 |
| Ndb_api_pruned_scan_count | 0 |
| Ndb_api_scan_batch_count | 3 |
| Ndb_api_read_row_count | 11 |
| Ndb_api_trans_local_read_row_count | 9 |
| Ndb_api_adaptive_send_forced_count | 5 |
| Ndb_api_adaptive_send_unforced_count | 11 |
| Ndb_api_adaptive_send_deferred_count | 0 |
| Ndb_api_event_data_count | 0 |
| Ndb_api_event_nondata_count | 0 |
| Ndb_api_event_bytes_count | 0 |
| Ndb_api_event_data_count_injector | 0 |
| Ndb_api_event_nondata_count_injector | 0 |
| Ndb_api_event_bytes_count_injector | 0 |
| Ndb_api_wait_exec_complete_count_slave | 0 |
| Ndb_api_wait_scan_result_count_slave | 0 |
| Ndb_api_wait_meta_request_count_slave | 0 |
| Ndb_api_wait_nanos_count_slave | 0 |
| Ndb_api_bytes_sent_count_slave | 0 |
| Ndb_api_bytes_received_count_slave | 0 |
| Ndb_api_trans_start_count_slave | 0 |
| Ndb_api_trans_commit_count_slave | 0 |
| Ndb_api_trans_abort_count_slave | 0 |
| Ndb_api_trans_close_count_slave | 0 |
| Ndb_api_pk_op_count_slave | 0 |
| Ndb_api_uk_op_count_slave | 0 |
| Ndb_api_table_scan_count_slave | 0 |
| Ndb_api_range_scan_count_slave | 0 |
| Ndb_api_pruned_scan_count_slave | 0 |
| Ndb_api_scan_batch_count_slave | 0 |
| Ndb_api_read_row_count_slave | 0 |
| Ndb_api_trans_local_read_row_count_slave | 0 |
| Ndb_api_adaptive_send_forced_count_slave | 0 |
| Ndb_api_adaptive_send_unforced_count_slave | 0 |
| Ndb_api_adaptive_send_deferred_count_slave | 0 |
| Ndb_api_wait_exec_complete_count_replica | 0 |
| Ndb_api_wait_scan_result_count_replica | 0 |
| Ndb_api_wait_meta_request_count_replica | 0 |
| Ndb_api_wait_nanos_count_replica | 0 |
| Ndb_api_bytes_sent_count_replica | 0 |
| Ndb_api_bytes_received_count_replica | 0 |
| Ndb_api_trans_start_count_replica | 0 |
| Ndb_api_trans_commit_count_replica | 0 |
| Ndb_api_trans_abort_count_replica | 0 |
| Ndb_api_trans_close_count_replica | 0 |
| Ndb_api_pk_op_count_replica | 0 |
| Ndb_api_uk_op_count_replica | 0 |
| Ndb_api_table_scan_count_replica | 0 |
| Ndb_api_range_scan_count_replica | 0 |
| Ndb_api_pruned_scan_count_replica | 0 |
| Ndb_api_scan_batch_count_replica | 0 |
| Ndb_api_read_row_count_replica | 0 |
| Ndb_api_trans_local_read_row_count_replica | 0 |
| Ndb_api_adaptive_send_forced_count_replica | 0 |
| Ndb_api_adaptive_send_unforced_count_replica | 0 |
| Ndb_api_adaptive_send_deferred_count_replica | 0 |
| Ndb_api_wait_exec_complete_count_session | 0 |
| Ndb_api_wait_scan_result_count_session | 3 |
| Ndb_api_wait_meta_request_count_session | 6 |
| Ndb_api_wait_nanos_count_session | 2022486 |
| Ndb_api_bytes_sent_count_session | 268 |
| Ndb_api_bytes_received_count_session | 10332 |
| Ndb_api_trans_start_count_session | 1 |
| Ndb_api_trans_commit_count_session | 0 |
| Ndb_api_trans_abort_count_session | 0 |
| Ndb_api_trans_close_count_session | 1 |
| Ndb_api_pk_op_count_session | 0 |
| Ndb_api_uk_op_count_session | 0 |
| Ndb_api_table_scan_count_session | 1 |
| Ndb_api_range_scan_count_session | 0 |
| Ndb_api_pruned_scan_count_session | 0 |
| Ndb_api_scan_batch_count_session | 2 |
| Ndb_api_read_row_count_session | 2 |
| Ndb_api_trans_local_read_row_count_session | 2 |
| Ndb_api_adaptive_send_forced_count_session | 1 |
| Ndb_api_adaptive_send_unforced_count_session | 0 |
| Ndb_api_adaptive_send_deferred_count_session | 0 |
+----------------------------------------------+----------------+
90 rows in set (0.01 sec)
每个 Ndb
对象都有自己的计数器。NDB API 应用程序可以读取计数器的值,以用于优化或监控。对于并发使用多个 Ndb
对象的多线程客户端,还可以从属于给定 Ndb_cluster_connection
的所有 Ndb
对象中获取计数器的汇总视图。
公开了四组计数器。一组仅适用于当前会话;其他三组是全局的。 尽管可以在 mysql 客户端中将它们的值作为会话或全局状态变量获取,但情况并非如此。这意味着在 SHOW STATUS
中指定 SESSION
或 GLOBAL
关键字对 NDB API 统计信息状态变量报告的值没有影响,并且无论是从 session_status
表还是 global_status
表的等效列中获取值,这些变量的值都是相同的。
会话计数器(特定于会话)
会话计数器与(仅)当前会话正在使用的
Ndb
对象有关。其他 MySQL 客户端对此类对象的使用不会影响这些计数。为了最大限度地减少与标准 MySQL 会话变量的混淆,我们将对应于这些 NDB API 会话计数器的变量称为 “
_session
变量”,并在前面加上下划线。副本计数器(全局)
这组计数器与副本 SQL 线程(如果有)使用的
Ndb
对象有关。如果此 mysqld 不充当副本,或者不使用NDB
表,则所有这些计数都为 0。我们将相关的状态变量称为 “
_replica
变量”(并在前面加上下划线)。注入器计数器(全局)
注入器计数器与二进制日志注入器线程用于侦听集群事件的
Ndb
对象有关。即使不写入二进制日志,连接到 NDB 集群的 mysqld 进程也会继续侦听某些事件,例如模式更改。我们将对应于 NDB API 注入器计数器的状态变量称为 “
_injector
变量”(并在前面加上下划线)。服务器(全局)计数器(全局)
这组计数器与此 mysqld 当前使用的所有
Ndb
对象有关。这包括所有 MySQL 客户端应用程序、副本 SQL 线程(如果有)、二进制日志注入器和NDB
实用程序线程。我们将对应于这些计数器的状态变量称为 “全局变量” 或 “mysqld 级变量”。
您可以通过在变量名中另外筛选子字符串 session
、replica
或 injector
(以及公共前缀 Ndb_api
)来获取特定变量集的值。对于 _session
变量,可以按如下所示执行此操作
mysql> SHOW STATUS LIKE 'ndb_api%session';
+----------------------------------------------+---------+
| Variable_name | Value |
+----------------------------------------------+---------+
| Ndb_api_wait_exec_complete_count_session | 0 |
| Ndb_api_wait_scan_result_count_session | 3 |
| Ndb_api_wait_meta_request_count_session | 6 |
| Ndb_api_wait_nanos_count_session | 2022486 |
| Ndb_api_bytes_sent_count_session | 268 |
| Ndb_api_bytes_received_count_session | 10332 |
| Ndb_api_trans_start_count_session | 1 |
| Ndb_api_trans_commit_count_session | 0 |
| Ndb_api_trans_abort_count_session | 0 |
| Ndb_api_trans_close_count_session | 1 |
| Ndb_api_pk_op_count_session | 0 |
| Ndb_api_uk_op_count_session | 0 |
| Ndb_api_table_scan_count_session | 1 |
| Ndb_api_range_scan_count_session | 0 |
| Ndb_api_pruned_scan_count_session | 0 |
| Ndb_api_scan_batch_count_session | 2 |
| Ndb_api_read_row_count_session | 2 |
| Ndb_api_trans_local_read_row_count_session | 2 |
| Ndb_api_adaptive_send_forced_count_session | 1 |
| Ndb_api_adaptive_send_unforced_count_session | 0 |
| Ndb_api_adaptive_send_deferred_count_session | 0 |
+----------------------------------------------+---------+
21 rows in set (0.00 sec)
要获取 NDB API mysqld 级状态变量的列表,请筛选以 ndb_api
开头并以 _count
结尾的变量名,如下所示
mysql> SELECT * FROM performance_schema.session_status
-> WHERE VARIABLE_NAME LIKE 'ndb_api%count';
+------------------------------------+----------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+------------------------------------+----------------+
| NDB_API_WAIT_EXEC_COMPLETE_COUNT | 4 |
| NDB_API_WAIT_SCAN_RESULT_COUNT | 3 |
| NDB_API_WAIT_META_REQUEST_COUNT | 28 |
| NDB_API_WAIT_NANOS_COUNT | 53756398 |
| NDB_API_BYTES_SENT_COUNT | 1060 |
| NDB_API_BYTES_RECEIVED_COUNT | 9724 |
| NDB_API_TRANS_START_COUNT | 3 |
| NDB_API_TRANS_COMMIT_COUNT | 2 |
| NDB_API_TRANS_ABORT_COUNT | 0 |
| NDB_API_TRANS_CLOSE_COUNT | 3 |
| NDB_API_PK_OP_COUNT | 2 |
| NDB_API_UK_OP_COUNT | 0 |
| NDB_API_TABLE_SCAN_COUNT | 1 |
| NDB_API_RANGE_SCAN_COUNT | 0 |
| NDB_API_PRUNED_SCAN_COUNT | 0 |
| NDB_API_SCAN_BATCH_COUNT | 0 |
| NDB_API_READ_ROW_COUNT | 2 |
| NDB_API_TRANS_LOCAL_READ_ROW_COUNT | 2 |
| NDB_API_EVENT_DATA_COUNT | 0 |
| NDB_API_EVENT_NONDATA_COUNT | 0 |
| NDB_API_EVENT_BYTES_COUNT | 0 |
+------------------------------------+----------------+
21 rows in set (0.09 sec)
并非所有计数器都反映在所有 4 组状态变量中。对于事件计数器 DataEventsRecvdCount
、NondataEventsRecvdCount
和 EventBytesRecvdCount
,只有 _injector
和 mysqld 级 NDB API 状态变量可用
mysql> SHOW STATUS LIKE 'ndb_api%event%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| Ndb_api_event_data_count_injector | 0 |
| Ndb_api_event_nondata_count_injector | 0 |
| Ndb_api_event_bytes_count_injector | 0 |
| Ndb_api_event_data_count | 0 |
| Ndb_api_event_nondata_count | 0 |
| Ndb_api_event_bytes_count | 0 |
+--------------------------------------+-------+
6 rows in set (0.00 sec)
_injector
状态变量未针对任何其他 NDB API 计数器实现,如下所示
mysql> SHOW STATUS LIKE 'ndb_api%injector%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| Ndb_api_event_data_count_injector | 0 |
| Ndb_api_event_nondata_count_injector | 0 |
| Ndb_api_event_bytes_count_injector | 0 |
+--------------------------------------+-------+
3 rows in set (0.00 sec)
状态变量的名称可以很容易地与相应计数器的名称关联起来。下表列出了每个 NDB API 统计计数器,并提供了描述以及与该计数器对应的任何 MySQL 服务器状态变量的名称。
表 25.39 NDB API 统计计数器
计数器名称 | 描述 | 状态变量(按统计类型)
|
---|---|---|
WaitExecCompleteCount |
线程在等待操作执行完成时被阻塞的次数。包括所有 execute() 调用,以及对客户端不可见的 blob 操作和自动递增的隐式执行。 |
|
WaitScanResultCount |
线程在等待基于扫描的信号(如等待其他结果或等待扫描关闭)时被阻塞的次数。 | |
WaitMetaRequestCount |
线程在等待基于元数据的信号时被阻塞的次数;这可能发生在等待 DDL 操作或等待纪元启动(或结束)时。 | |
WaitNanosCount |
花费在等待数据节点的某种类型信号上的总时间(以纳秒为单位)。 | |
BytesSentCount |
发送到数据节点的数据量(以字节为单位) | |
BytesRecvdCount |
从数据节点接收的数据量(以字节为单位) | |
TransStartCount |
已启动的事务数。 | |
TransCommitCount |
已提交的事务数。 | |
TransAbortCount |
已中止的事务数。 | |
TransCloseCount |
已中止的事务数。(此值可能大于 TransCommitCount 和 TransAbortCount 的总和。) |
|
PkOpCount |
基于或使用主键的操作数。此计数包括 blob 部分表操作、隐式解锁操作和自动递增操作,以及通常对 MySQL 客户端可见的主键操作。 | |
UkOpCount |
基于或使用唯一键的操作数。 | |
TableScanCount |
已启动的表扫描次数。这包括对内部表的扫描。 | |
RangeScanCount |
已启动的范围扫描次数。 | |
PrunedScanCount |
已修剪到单个分区的扫描次数。 | |
ScanBatchCount |
接收到的行批次数。(在此上下文中,批次是指来自单个片段的一组扫描结果。) | |
ReadRowCount |
已读取的总行数。包括使用主键、唯一键和扫描操作读取的行。 | |
TransLocalReadRowCount |
从运行事务的同一节点上的数据读取的行数。 | |
DataEventsRecvdCount |
接收到的行更改事件数。 | |
NondataEventsRecvdCount |
接收到的事件数,不包括行更改事件。 | |
EventBytesRecvdCount |
接收到的事件的字节数。 |
要查看已提交事务的所有计数,即所有 TransCommitCount
计数器状态变量,您可以筛选 SHOW STATUS
的结果以获取子字符串 trans_commit_count
,如下所示
mysql> SHOW STATUS LIKE '%trans_commit_count%';
+------------------------------------+-------+
| Variable_name | Value |
+------------------------------------+-------+
| Ndb_api_trans_commit_count_session | 1 |
| Ndb_api_trans_commit_count_slave | 0 |
| Ndb_api_trans_commit_count | 2 |
+------------------------------------+-------+
3 rows in set (0.00 sec)
由此,您可以确定当前 mysql 客户端会话中已提交 1 个事务,并且自上次重启以来,此 mysqld 上已提交 2 个事务。
您可以通过比较执行语句前后相应的 _session
状态变量的值,来查看给定 SQL 语句如何递增各种 NDB API 计数器。在本例中,在从 SHOW STATUS
获取初始值后,我们在 test
数据库中创建一个名为 t
的 NDB
表,该表只有一列
mysql> SHOW STATUS LIKE 'ndb_api%session%';
+--------------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------------+--------+
| Ndb_api_wait_exec_complete_count_session | 2 |
| Ndb_api_wait_scan_result_count_session | 0 |
| Ndb_api_wait_meta_request_count_session | 3 |
| Ndb_api_wait_nanos_count_session | 820705 |
| Ndb_api_bytes_sent_count_session | 132 |
| Ndb_api_bytes_received_count_session | 372 |
| Ndb_api_trans_start_count_session | 1 |
| Ndb_api_trans_commit_count_session | 1 |
| Ndb_api_trans_abort_count_session | 0 |
| Ndb_api_trans_close_count_session | 1 |
| Ndb_api_pk_op_count_session | 1 |
| Ndb_api_uk_op_count_session | 0 |
| Ndb_api_table_scan_count_session | 0 |
| Ndb_api_range_scan_count_session | 0 |
| Ndb_api_pruned_scan_count_session | 0 |
| Ndb_api_scan_batch_count_session | 0 |
| Ndb_api_read_row_count_session | 1 |
| Ndb_api_trans_local_read_row_count_session | 1 |
+--------------------------------------------+--------+
18 rows in set (0.00 sec)
mysql> USE test;
Database changed
mysql> CREATE TABLE t (c INT) ENGINE NDBCLUSTER;
Query OK, 0 rows affected (0.85 sec)
现在,您可以执行新的 SHOW STATUS
语句并观察更改,如下所示(输出中突出显示了更改的行)
mysql> SHOW STATUS LIKE 'ndb_api%session%';
+--------------------------------------------+-----------+
| Variable_name | Value |
+--------------------------------------------+-----------+
| Ndb_api_wait_exec_complete_count_session | 8 |
| Ndb_api_wait_scan_result_count_session | 0 |
| Ndb_api_wait_meta_request_count_session | 17 |
| Ndb_api_wait_nanos_count_session | 706871709 |
| Ndb_api_bytes_sent_count_session | 2376 |
| Ndb_api_bytes_received_count_session | 3844 |
| Ndb_api_trans_start_count_session | 4 |
| Ndb_api_trans_commit_count_session | 4 |
| Ndb_api_trans_abort_count_session | 0 |
| Ndb_api_trans_close_count_session | 4 |
| Ndb_api_pk_op_count_session | 6 |
| Ndb_api_uk_op_count_session | 0 |
| Ndb_api_table_scan_count_session | 0 |
| Ndb_api_range_scan_count_session | 0 |
| Ndb_api_pruned_scan_count_session | 0 |
| Ndb_api_scan_batch_count_session | 0 |
| Ndb_api_read_row_count_session | 2 |
| Ndb_api_trans_local_read_row_count_session | 1 |
+--------------------------------------------+-----------+
18 rows in set (0.00 sec)
同样,您可以看到通过将一行插入 t
导致的 NDB API 统计计数器的变化:插入行,然后运行上一个示例中使用的相同 SHOW STATUS
语句,如下所示
mysql> INSERT INTO t VALUES (100);
Query OK, 1 row affected (0.00 sec)
mysql> SHOW STATUS LIKE 'ndb_api%session%';
+--------------------------------------------+-----------+
| Variable_name | Value |
+--------------------------------------------+-----------+
| Ndb_api_wait_exec_complete_count_session | 11 |
| Ndb_api_wait_scan_result_count_session | 6 |
| Ndb_api_wait_meta_request_count_session | 20 |
| Ndb_api_wait_nanos_count_session | 707370418 |
| Ndb_api_bytes_sent_count_session | 2724 |
| Ndb_api_bytes_received_count_session | 4116 |
| Ndb_api_trans_start_count_session | 7 |
| Ndb_api_trans_commit_count_session | 6 |
| Ndb_api_trans_abort_count_session | 0 |
| Ndb_api_trans_close_count_session | 7 |
| Ndb_api_pk_op_count_session | 8 |
| Ndb_api_uk_op_count_session | 0 |
| Ndb_api_table_scan_count_session | 1 |
| Ndb_api_range_scan_count_session | 0 |
| Ndb_api_pruned_scan_count_session | 0 |
| Ndb_api_scan_batch_count_session | 0 |
| Ndb_api_read_row_count_session | 3 |
| Ndb_api_trans_local_read_row_count_session | 2 |
+--------------------------------------------+-----------+
18 rows in set (0.00 sec)
我们可以从这些结果中得出一些观察结果
尽管我们创建
t
时没有显式的主键,但在执行此操作时执行了 5 次主键操作(Ndb_api_pk_op_count_session
的“之前”和“之后”值之间的差异,即 6 减 1)。这反映了隐藏主键的创建,这是所有使用NDB
存储引擎的表的特征。通过比较
Ndb_api_wait_nanos_count_session
的连续值,我们可以看到实现CREATE TABLE
语句的 NDB API 操作等待数据节点的响应的时间(706871709 - 820705 = 706051004 纳秒,约 0.7 秒)比INSERT
执行的操作(707370418 - 706871709 = 498709 纳秒,约 0.0005 秒)长得多。这些语句在 mysql 客户端中报告的执行时间与这些数字大致相关。在时间分辨率不足(纳秒级)的平台上,由于执行速度非常快的 SQL 语句导致的
WaitNanosCount
NDB API 计数器值的微小变化在Ndb_api_wait_nanos_count_session
、Ndb_api_wait_nanos_count_replica
或Ndb_api_wait_nanos_count
的值中可能并不总是可见。INSERT
语句递增了ReadRowCount
和TransLocalReadRowCount
NDB API 统计计数器,这反映在Ndb_api_read_row_count_session
和Ndb_api_trans_local_read_row_count_session
的值增加中。