MySQL NDB API统计计数器和变量

NDB API统计计数器和变量
与 Ndb 对象执行的操作或影响 Ndb 对象的多种类型的统计计数器可用。此类操作包括启动和关闭(或中止)事务;主键和唯一键操作;表、范 围和修剪扫描;在等待各种操作完成时被阻塞的线程;以及 NDBCLUSTER 发送和接收的数据和事件。每当调用 NDB API 或向数据节点发送或接 收数据时,NDB 内核内部都会递增这些计数器。mysqld 将这些计数器作为系统状态变量公开;其值可以在 SHOW STATUS 的输出中读取,或者通 过查询 INFORMATION_SCHEMA.SESSION_STATUS 或 INFORMATION_SCHEMA.GLOBAL_STATUS 表来获取。通过比较操作 NDB 表的语句执行前后计数器 的值,您可以观察到在 API 级别执行的相应操作,从而了解执行该语句的成本。

你可以使用下面的SHOW STATUS语句列出所有这些状态变量:

mysql> SHOW STATUS LIKE 'ndb_api%';
+----------------------------------------------+----------------+
| Variable_name                                | Value          |
+----------------------------------------------+----------------+
| Ndb_api_wait_exec_complete_count             | 576            |
| Ndb_api_wait_scan_result_count               | 432            |
| Ndb_api_wait_meta_request_count              | 1292           |
| Ndb_api_wait_nanos_count                     | 80154431380927 |
| Ndb_api_bytes_sent_count                     | 250968         |
| Ndb_api_bytes_received_count                 | 2080340        |
| Ndb_api_trans_start_count                    | 409            |
| Ndb_api_trans_commit_count                   | 332            |
| Ndb_api_trans_abort_count                    | 2              |
| Ndb_api_trans_close_count                    | 409            |
| Ndb_api_pk_op_count                          | 475            |
| Ndb_api_uk_op_count                          | 0              |
| Ndb_api_table_scan_count                     | 95             |
| Ndb_api_range_scan_count                     | 0              |
| Ndb_api_pruned_scan_count                    | 0              |
| Ndb_api_scan_batch_count                     | 147            |
| Ndb_api_read_row_count                       | 348            |
| Ndb_api_trans_local_read_row_count           | 108            |
| Ndb_api_adaptive_send_forced_count           | 225            |
| Ndb_api_adaptive_send_unforced_count         | 457            |
| Ndb_api_adaptive_send_deferred_count         | 0              |
| Ndb_api_event_data_count                     | 78             |
| Ndb_api_event_nondata_count                  | 7              |
| Ndb_api_event_bytes_count                    | 26756          |
| 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_event_data_count_injector            | 78             |
| Ndb_api_event_nondata_count_injector         | 7              |
| Ndb_api_event_bytes_count_injector           | 26756          |
| Ndb_api_wait_exec_complete_count_session     | 131            |
| Ndb_api_wait_scan_result_count_session       | 142            |
| Ndb_api_wait_meta_request_count_session      | 480            |
| Ndb_api_wait_nanos_count_session             | 1672752063     |
| Ndb_api_bytes_sent_count_session             | 162512         |
| Ndb_api_bytes_received_count_session         | 1019116        |
| Ndb_api_trans_start_count_session            | 87             |
| Ndb_api_trans_commit_count_session           | 64             |
| Ndb_api_trans_abort_count_session            | 0              |
| Ndb_api_trans_close_count_session            | 87             |
| Ndb_api_pk_op_count_session                  | 101            |
| Ndb_api_uk_op_count_session                  | 0              |
| Ndb_api_table_scan_count_session             | 29             |
| Ndb_api_range_scan_count_session             | 0              |
| Ndb_api_pruned_scan_count_session            | 0              |
| Ndb_api_scan_batch_count_session             | 19             |
| Ndb_api_read_row_count_session               | 55             |
| Ndb_api_trans_local_read_row_count_session   | 14             |
| Ndb_api_adaptive_send_forced_count_session   | 76             |
| Ndb_api_adaptive_send_unforced_count_session | 88             |
| Ndb_api_adaptive_send_deferred_count_session | 0              |
+----------------------------------------------+----------------+
69 rows in set (0.01 sec)

这些状态变量也可以从INFORMATION_SCHEMA数据库的SESSION_STATUS和GLOBAL_STATUS表中获得,如下所示:

mysql> SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS  WHERE VARIABLE_NAME LIKE 'ndb_api%';
ERROR 3167 (HY000): The 'INFORMATION_SCHEMA.SESSION_STATUS' feature is disabled; see the documentation for  'show_compatibility_56'

这个错误是由于MySQL 5.7.6及以上版本中,INFORMATION_SCHEMA.SESSION_STATUS视图已被弃用,默认情况下该功能被禁用导致的?,下面临时
启用一下:

mysql> SET GLOBAL show_compatibility_56=ON;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS  WHERE VARIABLE_NAME LIKE 'ndb_api%';
+----------------------------------------------+----------------+
| VARIABLE_NAME                                | VARIABLE_VALUE |
+----------------------------------------------+----------------+
| NDB_API_WAIT_EXEC_COMPLETE_COUNT             | 576            |
| NDB_API_WAIT_SCAN_RESULT_COUNT               | 432            |
| NDB_API_WAIT_META_REQUEST_COUNT              | 1293           |
| NDB_API_WAIT_NANOS_COUNT                     | 80408736595437 |
| NDB_API_BYTES_SENT_COUNT                     | 251028         |
| NDB_API_BYTES_RECEIVED_COUNT                 | 2080368        |
| NDB_API_TRANS_START_COUNT                    | 409            |
| NDB_API_TRANS_COMMIT_COUNT                   | 332            |
| NDB_API_TRANS_ABORT_COUNT                    | 2              |
| NDB_API_TRANS_CLOSE_COUNT                    | 409            |
| NDB_API_PK_OP_COUNT                          | 475            |
| NDB_API_UK_OP_COUNT                          | 0              |
| NDB_API_TABLE_SCAN_COUNT                     | 95             |
| NDB_API_RANGE_SCAN_COUNT                     | 0              |
| NDB_API_PRUNED_SCAN_COUNT                    | 0              |
| NDB_API_SCAN_BATCH_COUNT                     | 147            |
| NDB_API_READ_ROW_COUNT                       | 348            |
| NDB_API_TRANS_LOCAL_READ_ROW_COUNT           | 108            |
| NDB_API_ADAPTIVE_SEND_FORCED_COUNT           | 225            |
| NDB_API_ADAPTIVE_SEND_UNFORCED_COUNT         | 457            |
| NDB_API_ADAPTIVE_SEND_DEFERRED_COUNT         | 0              |
| NDB_API_EVENT_DATA_COUNT                     | 78             |
| NDB_API_EVENT_NONDATA_COUNT                  | 7              |
| NDB_API_EVENT_BYTES_COUNT                    | 26756          |
| 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_EVENT_DATA_COUNT_INJECTOR            | 78             |
| NDB_API_EVENT_NONDATA_COUNT_INJECTOR         | 7              |
| NDB_API_EVENT_BYTES_COUNT_INJECTOR           | 26756          |
| NDB_API_WAIT_EXEC_COMPLETE_COUNT_SESSION     | 131            |
| NDB_API_WAIT_SCAN_RESULT_COUNT_SESSION       | 142            |
| NDB_API_WAIT_META_REQUEST_COUNT_SESSION      | 481            |
| NDB_API_WAIT_NANOS_COUNT_SESSION             | 1672988157     |
| NDB_API_BYTES_SENT_COUNT_SESSION             | 162572         |
| NDB_API_BYTES_RECEIVED_COUNT_SESSION         | 1019144        |
| NDB_API_TRANS_START_COUNT_SESSION            | 87             |
| NDB_API_TRANS_COMMIT_COUNT_SESSION           | 64             |
| NDB_API_TRANS_ABORT_COUNT_SESSION            | 0              |
| NDB_API_TRANS_CLOSE_COUNT_SESSION            | 87             |
| NDB_API_PK_OP_COUNT_SESSION                  | 101            |
| NDB_API_UK_OP_COUNT_SESSION                  | 0              |
| NDB_API_TABLE_SCAN_COUNT_SESSION             | 29             |
| NDB_API_RANGE_SCAN_COUNT_SESSION             | 0              |
| NDB_API_PRUNED_SCAN_COUNT_SESSION            | 0              |
| NDB_API_SCAN_BATCH_COUNT_SESSION             | 19             |
| NDB_API_READ_ROW_COUNT_SESSION               | 55             |
| NDB_API_TRANS_LOCAL_READ_ROW_COUNT_SESSION   | 14             |
| NDB_API_ADAPTIVE_SEND_FORCED_COUNT_SESSION   | 76             |
| NDB_API_ADAPTIVE_SEND_UNFORCED_COUNT_SESSION | 88             |
| NDB_API_ADAPTIVE_SEND_DEFERRED_COUNT_SESSION | 0              |
+----------------------------------------------+----------------+
69 rows in set, 1 warning (0.00 sec)

mysql> SELECT * FROM INFORMATION_SCHEMA.GLOBAL_STATUS  WHERE VARIABLE_NAME LIKE 'ndb_api%';
+----------------------------------------------+----------------+
| VARIABLE_NAME                                | VARIABLE_VALUE |
+----------------------------------------------+----------------+
| NDB_API_WAIT_EXEC_COMPLETE_COUNT             | 576            |
| NDB_API_WAIT_SCAN_RESULT_COUNT               | 432            |
| NDB_API_WAIT_META_REQUEST_COUNT              | 1293           |
| NDB_API_WAIT_NANOS_COUNT                     | 80505790466465 |
| NDB_API_BYTES_SENT_COUNT                     | 251028         |
| NDB_API_BYTES_RECEIVED_COUNT                 | 2080368        |
| NDB_API_TRANS_START_COUNT                    | 409            |
| NDB_API_TRANS_COMMIT_COUNT                   | 332            |
| NDB_API_TRANS_ABORT_COUNT                    | 2              |
| NDB_API_TRANS_CLOSE_COUNT                    | 409            |
| NDB_API_PK_OP_COUNT                          | 475            |
| NDB_API_UK_OP_COUNT                          | 0              |
| NDB_API_TABLE_SCAN_COUNT                     | 95             |
| NDB_API_RANGE_SCAN_COUNT                     | 0              |
| NDB_API_PRUNED_SCAN_COUNT                    | 0              |
| NDB_API_SCAN_BATCH_COUNT                     | 147            |
| NDB_API_READ_ROW_COUNT                       | 348            |
| NDB_API_TRANS_LOCAL_READ_ROW_COUNT           | 108            |
| NDB_API_ADAPTIVE_SEND_FORCED_COUNT           | 225            |
| NDB_API_ADAPTIVE_SEND_UNFORCED_COUNT         | 457            |
| NDB_API_ADAPTIVE_SEND_DEFERRED_COUNT         | 0              |
| NDB_API_EVENT_DATA_COUNT                     | 78             |
| NDB_API_EVENT_NONDATA_COUNT                  | 7              |
| NDB_API_EVENT_BYTES_COUNT                    | 26756          |
| 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_EVENT_DATA_COUNT_INJECTOR            | 78             |
| NDB_API_EVENT_NONDATA_COUNT_INJECTOR         | 7              |
| NDB_API_EVENT_BYTES_COUNT_INJECTOR           | 26756          |
| NDB_API_WAIT_EXEC_COMPLETE_COUNT_SESSION     | 131            |
| NDB_API_WAIT_SCAN_RESULT_COUNT_SESSION       | 142            |
| NDB_API_WAIT_META_REQUEST_COUNT_SESSION      | 481            |
| NDB_API_WAIT_NANOS_COUNT_SESSION             | 1672988157     |
| NDB_API_BYTES_SENT_COUNT_SESSION             | 162572         |
| NDB_API_BYTES_RECEIVED_COUNT_SESSION         | 1019144        |
| NDB_API_TRANS_START_COUNT_SESSION            | 87             |
| NDB_API_TRANS_COMMIT_COUNT_SESSION           | 64             |
| NDB_API_TRANS_ABORT_COUNT_SESSION            | 0              |
| NDB_API_TRANS_CLOSE_COUNT_SESSION            | 87             |
| NDB_API_PK_OP_COUNT_SESSION                  | 101            |
| NDB_API_UK_OP_COUNT_SESSION                  | 0              |
| NDB_API_TABLE_SCAN_COUNT_SESSION             | 29             |
| NDB_API_RANGE_SCAN_COUNT_SESSION             | 0              |
| NDB_API_PRUNED_SCAN_COUNT_SESSION            | 0              |
| NDB_API_SCAN_BATCH_COUNT_SESSION             | 19             |
| NDB_API_READ_ROW_COUNT_SESSION               | 55             |
| NDB_API_TRANS_LOCAL_READ_ROW_COUNT_SESSION   | 14             |
| NDB_API_ADAPTIVE_SEND_FORCED_COUNT_SESSION   | 76             |
| NDB_API_ADAPTIVE_SEND_UNFORCED_COUNT_SESSION | 88             |
| NDB_API_ADAPTIVE_SEND_DEFERRED_COUNT_SESSION | 0              |
+----------------------------------------------+----------------+
69 rows in set, 1 warning (0.00 sec)

每个 ndb 对象都有其自身的计数器。NDB API 应用程序可以读取这些计数器的值,用于优化或监控。对于使用多个 Ndb 对象并发运行的多线程 客户端,还可以从属于给定 ndb_cluster_connection 的所有 Ndb 对象中获取计数器的汇总视图。

暴露了四组这样的计数器。一组只适用于当前会话;另外3个是全局性的。尽管它们的值可以在mysql客户端中作为会话或全局状态变量获得。这 意味着使用SHOW STATUS指定SESSION或GLOBAL关键字对NDB API统计状态变量报告的值没有影响,并且这些变量的值无论从SESSION_STATUS或 GLOBAL_STATUS表的等效列中获得的值都是相同的。
.会话计数器(特定于会话)
会话计数器与(仅)当前会话使用的Ndb对象相关。其他MySQL客户端使用这些对象不会影响这些计数。

为了尽量减少与标准MySQL会话变量的混淆,我们将与这些NDB API会话计数器对应的变量称为“_session变量”,前面有下划线。

.从属计数器(全局)
这组计数器与复制从SQL线程使用的Ndb对象相关(如果有的话)。如果这个mysqld不作为复制从,或者不使用NDB表,那么所有这些计数都是0。

我们将相关的状态变量称为“_slave变量”(前面有下划线)。

.注入器计数器(全局)
注入器计数器与用于侦听二进制日志注入器线程的集群事件的Ndb对象相关。即使不写二进制日志,附加到NDB集群的mysqld进程也会继续侦听一 些事件,比如模式更改。
我们把对应于NDB API注入器计数器的状态变量称为“_injector variables”。(以下划线开头)。

.服务器(全局)计数器(全局)
这组计数器与当前mysqld使用的所有Ndb对象相关。这包括所有MySQL客户端应用程序、从SQL线程(如果有的话)、binlog注入器和NDB实用程序 线程。
我们将与这些计数器对应的状态变量称为“全局变量”或“mysqld级变量”。

你可以通过额外过滤变量名中的子字符串session、slave或injector(以及常用的前缀Ndb_api)来获得一组特定变量的值。对于_session变量 ,可以这样做:

mysql> SHOW STATUS LIKE 'ndb_api%session';
+----------------------------------------------+------------+
| Variable_name                                | Value      |
+----------------------------------------------+------------+
| Ndb_api_wait_exec_complete_count_session     | 131        |
| Ndb_api_wait_scan_result_count_session       | 142        |
| Ndb_api_wait_meta_request_count_session      | 481        |
| Ndb_api_wait_nanos_count_session             | 1672988157 |
| Ndb_api_bytes_sent_count_session             | 162572     |
| Ndb_api_bytes_received_count_session         | 1019144    |
| Ndb_api_trans_start_count_session            | 87         |
| Ndb_api_trans_commit_count_session           | 64         |
| Ndb_api_trans_abort_count_session            | 0          |
| Ndb_api_trans_close_count_session            | 87         |
| Ndb_api_pk_op_count_session                  | 101        |
| Ndb_api_uk_op_count_session                  | 0          |
| Ndb_api_table_scan_count_session             | 29         |
| Ndb_api_range_scan_count_session             | 0          |
| Ndb_api_pruned_scan_count_session            | 0          |
| Ndb_api_scan_batch_count_session             | 19         |
| Ndb_api_read_row_count_session               | 55         |
| Ndb_api_trans_local_read_row_count_session   | 14         |
| Ndb_api_adaptive_send_forced_count_session   | 76         |
| Ndb_api_adaptive_send_unforced_count_session | 88         |
| Ndb_api_adaptive_send_deferred_count_session | 0          |
+----------------------------------------------+------------+
21 rows in set (0.00 sec)

要获取NDB API mysqld级别状态变量的列表,请过滤以ndb_api开头、以_count结尾的变量名,如下所示:

mysql> SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS  WHERE VARIABLE_NAME LIKE 'ndb_api%count';
+--------------------------------------+----------------+
| VARIABLE_NAME                        | VARIABLE_VALUE |
+--------------------------------------+----------------+
| NDB_API_WAIT_EXEC_COMPLETE_COUNT     | 578            |
| NDB_API_WAIT_SCAN_RESULT_COUNT       | 432            |
| NDB_API_WAIT_META_REQUEST_COUNT      | 1293           |
| NDB_API_WAIT_NANOS_COUNT             | 81348847300579 |
| NDB_API_BYTES_SENT_COUNT             | 251124         |
| NDB_API_BYTES_RECEIVED_COUNT         | 2080408        |
| NDB_API_TRANS_START_COUNT            | 411            |
| NDB_API_TRANS_COMMIT_COUNT           | 334            |
| NDB_API_TRANS_ABORT_COUNT            | 2              |
| NDB_API_TRANS_CLOSE_COUNT            | 411            |
| NDB_API_PK_OP_COUNT                  | 477            |
| NDB_API_UK_OP_COUNT                  | 0              |
| NDB_API_TABLE_SCAN_COUNT             | 95             |
| NDB_API_RANGE_SCAN_COUNT             | 0              |
| NDB_API_PRUNED_SCAN_COUNT            | 0              |
| NDB_API_SCAN_BATCH_COUNT             | 147            |
| NDB_API_READ_ROW_COUNT               | 348            |
| NDB_API_TRANS_LOCAL_READ_ROW_COUNT   | 108            |
| NDB_API_ADAPTIVE_SEND_FORCED_COUNT   | 225            |
| NDB_API_ADAPTIVE_SEND_UNFORCED_COUNT | 459            |
| NDB_API_ADAPTIVE_SEND_DEFERRED_COUNT | 0              |
| NDB_API_EVENT_DATA_COUNT             | 78             |
| NDB_API_EVENT_NONDATA_COUNT          | 7              |
| NDB_API_EVENT_BYTES_COUNT            | 26756          |
+--------------------------------------+----------------+
24 rows in set, 1 warning (0.00 sec)

并非所有计数器都反映在所有4组状态变量中。对于事件计数器DataEventsRecvdCount、NondataEventsRecvdCount和EventBytesRecvdCount,只 有_injector和mysqld级别的NDB API状态变量可用:


mysql> SHOW STATUS LIKE 'ndb_api%event%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| Ndb_api_event_data_count             | 78    |
| Ndb_api_event_nondata_count          | 7     |
| Ndb_api_event_bytes_count            | 26756 |
| Ndb_api_event_data_count_injector    | 78    |
| Ndb_api_event_nondata_count_injector | 7     |
| Ndb_api_event_bytes_count_injector   | 26756 |
+--------------------------------------+-------+
6 rows in set (0.00 sec)

_injector状态变量,如下所示:

mysql> SHOW STATUS LIKE 'ndb_api%injector%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| Ndb_api_event_data_count_injector    | 78    |
| Ndb_api_event_nondata_count_injector | 7     |
| Ndb_api_event_bytes_count_injector   | 26756 |
+--------------------------------------+-------+
3 rows in set (0.00 sec)

要查看所有已提交事务的计数,也就是所有TransCommitCount计数器状态变量,你可以为SHOW STATUS加上子字符串trans_commit_count进行过滤 ,如下所示:

mysql> SHOW STATUS LIKE '%trans_commit_count%';
+------------------------------------+-------+
| Variable_name                      | Value |
+------------------------------------+-------+
| Ndb_api_trans_commit_count         | 334   |
| Ndb_api_trans_commit_count_slave   | 0     |
| Ndb_api_trans_commit_count_session | 64    |
+------------------------------------+-------+
3 rows in set (0.00 sec)

由此,你可以确定在当前mysql客户端会话中已经提交了334个事务,并且自上次重新启动以来,这个mysqld上已经提交了64个事务。

通过比较执行语句前后对应的_session状态变量的值,可以看到给定SQL语句如何增加各种NDB API计数器。在这个例子中,在得到SHOW STATUS 的初始值之后,我们在jycs数据库中创建了一个名为t的NDB表,它只有一列:

mysql> SHOW STATUS LIKE 'ndb_api%session%';
+----------------------------------------------+------------+
| Variable_name                                | Value      |
+----------------------------------------------+------------+
| Ndb_api_wait_exec_complete_count_session     | 131        |
| Ndb_api_wait_scan_result_count_session       | 142        |
| Ndb_api_wait_meta_request_count_session      | 481        |
| Ndb_api_wait_nanos_count_session             | 1672988157 |
| Ndb_api_bytes_sent_count_session             | 162572     |
| Ndb_api_bytes_received_count_session         | 1019144    |
| Ndb_api_trans_start_count_session            | 87         |
| Ndb_api_trans_commit_count_session           | 64         |
| Ndb_api_trans_abort_count_session            | 0          |
| Ndb_api_trans_close_count_session            | 87         |
| Ndb_api_pk_op_count_session                  | 101        |
| Ndb_api_uk_op_count_session                  | 0          |
| Ndb_api_table_scan_count_session             | 29         |
| Ndb_api_range_scan_count_session             | 0          |
| Ndb_api_pruned_scan_count_session            | 0          |
| Ndb_api_scan_batch_count_session             | 19         |
| Ndb_api_read_row_count_session               | 55         |
| Ndb_api_trans_local_read_row_count_session   | 14         |
| Ndb_api_adaptive_send_forced_count_session   | 76         |
| Ndb_api_adaptive_send_unforced_count_session | 88         |
| Ndb_api_adaptive_send_deferred_count_session | 0          |
+----------------------------------------------+------------+
21 rows in set (0.00 sec)

mysql> use jycs;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> CREATE TABLE t (c INT) ENGINE NDBCLUSTER;
Query OK, 0 rows affected (0.08 sec)

现在,您可以执行新的SHOW STATUS语句并观察更改,如下所示(在输出中突出显示更改的行):

mysql> SHOW STATUS LIKE 'ndb_api%session%';
+----------------------------------------------+------------+
| Variable_name                                | Value      |
+----------------------------------------------+------------+
| Ndb_api_wait_exec_complete_count_session     | 139        |
| Ndb_api_wait_scan_result_count_session       | 142        |
| Ndb_api_wait_meta_request_count_session      | 497        |
| Ndb_api_wait_nanos_count_session             | 1714790150 |
| Ndb_api_bytes_sent_count_session             | 164632     |
| Ndb_api_bytes_received_count_session         | 1051308    |
| Ndb_api_trans_start_count_session            | 91         |
| Ndb_api_trans_commit_count_session           | 68         |
| Ndb_api_trans_abort_count_session            | 0          |
| Ndb_api_trans_close_count_session            | 91         |
| Ndb_api_pk_op_count_session                  | 107        |
| Ndb_api_uk_op_count_session                  | 0          |
| Ndb_api_table_scan_count_session             | 29         |
| Ndb_api_range_scan_count_session             | 0          |
| Ndb_api_pruned_scan_count_session            | 0          |
| Ndb_api_scan_batch_count_session             | 19         |
| Ndb_api_read_row_count_session               | 57         |
| Ndb_api_trans_local_read_row_count_session   | 14         |
| Ndb_api_adaptive_send_forced_count_session   | 78         |
| Ndb_api_adaptive_send_unforced_count_session | 94         |
| Ndb_api_adaptive_send_deferred_count_session | 0          |
+----------------------------------------------+------------+
21 rows in set (0.00 sec)

类似地,你可以看到在t中插入一行所引起的NDB API统计计数器的变化:插入行,然后运行与前面示例中相同的SHOW STATUS语句,如下所示:

mysql> INSERT INTO t VALUES (100);
Query OK, 1 row affected (0.01 sec)

mysql> SHOW STATUS LIKE 'ndb_api%session%';
+----------------------------------------------+------------+
| Variable_name                                | Value      |
+----------------------------------------------+------------+
| Ndb_api_wait_exec_complete_count_session     | 142        |
| Ndb_api_wait_scan_result_count_session       | 146        |
| Ndb_api_wait_meta_request_count_session      | 498        |
| Ndb_api_wait_nanos_count_session             | 1715762929 |
| Ndb_api_bytes_sent_count_session             | 164928     |
| Ndb_api_bytes_received_count_session         | 1051540    |
| Ndb_api_trans_start_count_session            | 94         |
| Ndb_api_trans_commit_count_session           | 70         |
| Ndb_api_trans_abort_count_session            | 0          |
| Ndb_api_trans_close_count_session            | 94         |
| Ndb_api_pk_op_count_session                  | 109        |
| Ndb_api_uk_op_count_session                  | 0          |
| Ndb_api_table_scan_count_session             | 30         |
| Ndb_api_range_scan_count_session             | 0          |
| Ndb_api_pruned_scan_count_session            | 0          |
| Ndb_api_scan_batch_count_session             | 19         |
| Ndb_api_read_row_count_session               | 58         |
| Ndb_api_trans_local_read_row_count_session   | 15         |
| Ndb_api_adaptive_send_forced_count_session   | 81         |
| Ndb_api_adaptive_send_unforced_count_session | 95         |
| Ndb_api_adaptive_send_deferred_count_session | 0          |
+----------------------------------------------+------------+
21 rows in set (0.00 sec)

我们可以从这些结果中得出一些观察结果:
.虽然我们没有使用显式的主键创建t,但在此过程中执行了6个主键操作(Ndb_api_pk_op_count_session的“before”和“after”值之差,即 107减106)。这反映了隐藏主键的创建,这是使用NDB存储引擎的所有表的一个特性。

.通过比较Ndb_api_wait_nanos_count_session的连续值,我们可以看到,实现CREATE TABLE语句的NDB API操作等待数据节点响应的时间 (1714790150-1672988157 = 41801993 纳秒,或大约0.04秒)要比INSERT (1715762929-1714790150 = 972779 纳秒或大约0.001秒)长得多。 mysql客户端中报告的这些语句的执行时间与这些图大致相关。

在没有足够(纳秒)时间分辨率的平台上,由于SQL语句执行非常快而导致的WaitNanosCount NDB API计数器值的微小变化可能并不总是在 Ndb_api_wait_nanos_count_session, Ndb_api_wait_nanos_count_slave或Ndb_api_wait_nanos_count的值中可见。

.INSERT语句增加了NDB API统计计数器的ReadRowCount和TransLocalReadRowCount,正如Ndb_api_read_row_count_session和 Ndb_api_trans_local_read_row_count_session增加的值所反映的那样。

发表评论

电子邮件地址不会被公开。