Rechercher dans le manuel MySQL
22.5.17 NDB API Statistics Counters and Variables
A number of types of statistical counters relating to actions
performed by or affecting Ndb
objects are available. Such actions include starting and closing
(or aborting) transactions; primary key and unique key operations;
table, range, and pruned scans; threads blocked while waiting for
the completion of various operations; and data and events sent and
received by NDBCLUSTER
. The counters are
incremented inside the NDB kernel whenever NDB API calls are made
or data is sent to or received by the data nodes.
mysqld exposes these counters as system status
variables; their values can be read in the output of
SHOW STATUS
, or by querying the
INFORMATION_SCHEMA.SESSION_STATUS
or
INFORMATION_SCHEMA.GLOBAL_STATUS
table. By comparing the values before and after statements
operating on NDB
tables, you can
observe the corresponding actions taken on the API level, and thus
the cost of performing the statement.
You can list all of these status variables using the following
SHOW STATUS
statement:
- +--------------------------------------------+----------+
- +--------------------------------------------+----------+
- | Ndb_api_wait_exec_complete_count_session | 0 |
- | Ndb_api_wait_scan_result_count_session | 0 |
- | Ndb_api_wait_meta_request_count_session | 0 |
- | Ndb_api_wait_nanos_count_session | 0 |
- | Ndb_api_bytes_sent_count_session | 0 |
- | Ndb_api_bytes_received_count_session | 0 |
- | Ndb_api_trans_start_count_session | 0 |
- | Ndb_api_trans_commit_count_session | 0 |
- | Ndb_api_trans_abort_count_session | 0 |
- | Ndb_api_trans_close_count_session | 0 |
- | Ndb_api_pk_op_count_session | 0 |
- | 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 | 0 |
- | Ndb_api_trans_local_read_row_count_session | 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_wait_exec_complete_count | 2 |
- | Ndb_api_wait_scan_result_count | 3 |
- | Ndb_api_wait_meta_request_count | 27 |
- | Ndb_api_wait_nanos_count | 45612023 |
- | Ndb_api_bytes_sent_count | 992 |
- | Ndb_api_bytes_received_count | 9640 |
- | Ndb_api_trans_start_count | 2 |
- | Ndb_api_trans_commit_count | 1 |
- | Ndb_api_trans_abort_count | 0 |
- | Ndb_api_trans_close_count | 2 |
- | Ndb_api_pk_op_count | 1 |
- | 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 | 1 |
- | Ndb_api_trans_local_read_row_count | 1 |
- | Ndb_api_event_data_count | 0 |
- | Ndb_api_event_nondata_count | 0 |
- | Ndb_api_event_bytes_count | 0 |
- +--------------------------------------------+----------+
These status variables are also available from the
SESSION_STATUS
and
GLOBAL_STATUS
tables of the INFORMATION_SCHEMA
database, as
shown here:
- +--------------------------------------------+----------------+
- | VARIABLE_NAME | VARIABLE_VALUE |
- +--------------------------------------------+----------------+
- | NDB_API_WAIT_EXEC_COMPLETE_COUNT_SESSION | 2 |
- | NDB_API_WAIT_SCAN_RESULT_COUNT_SESSION | 0 |
- | NDB_API_WAIT_META_REQUEST_COUNT_SESSION | 1 |
- | NDB_API_WAIT_NANOS_COUNT_SESSION | 8144375 |
- | NDB_API_BYTES_SENT_COUNT_SESSION | 68 |
- | NDB_API_BYTES_RECEIVED_COUNT_SESSION | 84 |
- | 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 |
- | 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_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 |
- +--------------------------------------------+----------------+
- +--------------------------------------------+----------------+
- | VARIABLE_NAME | VARIABLE_VALUE |
- +--------------------------------------------+----------------+
- | NDB_API_WAIT_EXEC_COMPLETE_COUNT_SESSION | 2 |
- | NDB_API_WAIT_SCAN_RESULT_COUNT_SESSION | 0 |
- | NDB_API_WAIT_META_REQUEST_COUNT_SESSION | 1 |
- | NDB_API_WAIT_NANOS_COUNT_SESSION | 8144375 |
- | NDB_API_BYTES_SENT_COUNT_SESSION | 68 |
- | NDB_API_BYTES_RECEIVED_COUNT_SESSION | 84 |
- | 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 |
- | 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_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 |
- +--------------------------------------------+----------------+
Each Ndb
object has its own
counters. NDB API applications can read the values of the counters
for use in optimization or monitoring. For multithreaded clients
which use more than one Ndb
object concurrently, it is also possible to obtain a summed view
of counters from all Ndb
objects
belonging to a given
Ndb_cluster_connection
.
Four sets of these counters are exposed. One set applies to the
current session only; the other 3 are global. This is in
spite of the fact that their values can be obtained as either
session or global status variables in the mysql
client. This means that specifying the
SESSION
or GLOBAL
keyword
with SHOW STATUS
has no effect on
the values reported for NDB API statistics status variables, and
the value for each of these variables is the same whether the
value is obtained from the equivalent column of the
SESSION_STATUS
or
the GLOBAL_STATUS
table.
Session counters (session specific)
Session counters relate to the
Ndb
objects in use by (only) the current session. Use of such objects by other MySQL clients does not influence these counts.In order to minimize confusion with standard MySQL session variables, we refer to the variables that correspond to these NDB API session counters as “
_session
variables”, with a leading underscore.Slave counters (global)
This set of counters relates to the
Ndb
objects used by the replication slave SQL thread, if any. If this mysqld does not act as a replication slave, or does not useNDB
tables, then all of these counts are 0.We refer to the related status variables as “
_slave
variables” (with a leading underscore).Injector counters (global)
Injector counters relate to the
Ndb
object used to listen to cluster events by the binary log injector thread. Even when not writing a binary log, mysqld processes attached to an NDB Cluster continue to listen for some events, such as schema changes.We refer to the status variables that correspond to NDB API injector counters as “
_injector
variables” (with a leading underscore).Server (Global) counters (global)
This set of counters relates to all
Ndb
objects currently used by this mysqld. This includes all MySQL client applications, the slave SQL thread (if any), the binlog injector, and theNDB
utility thread.We refer to the status variables that correspond to these counters as “global variables” or “mysqld-level variables”.
You can obtain values for a particular set of variables by
additionally filtering for the substring
session
, slave
, or
injector
in the variable name (along with the
common prefix Ndb_api
). For
_session
variables, this can be done as shown
here:
- +--------------------------------------------+---------+
- +--------------------------------------------+---------+
- | Ndb_api_wait_exec_complete_count_session | 2 |
- | Ndb_api_wait_scan_result_count_session | 0 |
- | Ndb_api_wait_meta_request_count_session | 1 |
- | Ndb_api_wait_nanos_count_session | 8144375 |
- | Ndb_api_bytes_sent_count_session | 68 |
- | Ndb_api_bytes_received_count_session | 84 |
- | 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 |
- +--------------------------------------------+---------+
To obtain a listing of the NDB API mysqld-level
status variables, filter for variable names beginning with
ndb_api
and ending in
_count
, like this:
- +------------------------------------+----------------+
- | 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 |
- +------------------------------------+----------------+
Not all counters are reflected in all 4 sets of status variables.
For the event counters DataEventsRecvdCount
,
NondataEventsRecvdCount
, and
EventBytesRecvdCount
, only
_injector
and mysqld-level
NDB API status variables are available:
- +--------------------------------------+-------+
- +--------------------------------------+-------+
- | 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 |
- +--------------------------------------+-------+
_injector
status variables are not implemented
for any other NDB API counters, as shown here:
- +--------------------------------------+-------+
- +--------------------------------------+-------+
- | Ndb_api_event_data_count_injector | 0 |
- | Ndb_api_event_nondata_count_injector | 0 |
- | Ndb_api_event_bytes_count_injector | 0 |
- +--------------------------------------+-------+
The names of the status variables can easily be associated with the names of the corresponding counters. Each NDB API statistics counter is listed in the following table with a description as well as the names of any MySQL server status variables corresponding to this counter.
Table 22.423 NDB API statistics counters
Counter Name | Description | Status Variables (by statistic type):
|
---|---|---|
WaitExecCompleteCount |
Number of times thread has been blocked while waiting for execution of
an operation to complete. Includes all
execute()
calls as well as implicit executes for blob operations and
auto-increment not visible to clients. |
|
WaitScanResultCount |
Number of times thread has been blocked while waiting for a scan-based signal, such waiting for additional results, or for a scan to close. | |
WaitMetaRequestCount |
Number of times thread has been blocked waiting for a metadata-based signal; this can occur when waiting for a DDL operation or for an epoch to be started (or ended). | |
WaitNanosCount |
Total time (in nanoseconds) spent waiting for some type of signal from the data nodes. | |
BytesSentCount |
Amount of data (in bytes) sent to the data nodes | |
BytesRecvdCount |
Amount of data (in bytes) received from the data nodes | |
TransStartCount |
Number of transactions started. | |
TransCommitCount |
Number of transactions committed. | |
TransAbortCount |
Number of transactions aborted. | |
TransCloseCount |
Number of transactions aborted. (This value may be greater than the sum
of TransCommitCount and
TransAbortCount .) |
|
PkOpCount |
Number of operations based on or using primary keys. This count includes blob-part table operations, implicit unlocking operations, and auto-increment operations, as well as primary key operations normally visible to MySQL clients. | |
UkOpCount |
Number of operations based on or using unique keys. | |
TableScanCount |
Number of table scans that have been started. This includes scans of internal tables. | |
RangeScanCount |
Number of range scans that have been started. | |
PrunedScanCount |
Number of scans that have been pruned to a single partition. | |
ScanBatchCount |
Number of batches of rows received. (A batch in this context is a set of scan results from a single fragment.) | |
ReadRowCount |
Total number of rows that have been read. Includes rows read using primary key, unique key, and scan operations. | |
TransLocalReadRowCount |
Number of rows read from the data same node on which the transaction was being run. | |
DataEventsRecvdCount |
Number of row change events received. |
|
NondataEventsRecvdCount |
Number of events received, other than row change events. | |
EventBytesRecvdCount |
Number of bytes of events received. |
|
To see all counts of committed transactions—that is, all
TransCommitCount
counter status
variables—you can filter the results of
SHOW STATUS
for the substring
trans_commit_count
, like this:
- +------------------------------------+-------+
- +------------------------------------+-------+
- | Ndb_api_trans_commit_count_session | 1 |
- | Ndb_api_trans_commit_count_slave | 0 |
- | Ndb_api_trans_commit_count | 2 |
- +------------------------------------+-------+
From this you can determine that 1 transaction has been committed in the current mysql client session, and 2 transactions have been committed on this mysqld since it was last restarted.
You can see how various NDB API counters are incremented by a
given SQL statement by comparing the values of the corresponding
_session
status variables immediately before
and after performing the statement. In this example, after getting
the initial values from SHOW
STATUS
, we create in the test
database an NDB
table, named
t
, that has a single column:
- +--------------------------------------------+--------+
- +--------------------------------------------+--------+
- | 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 |
- +--------------------------------------------+--------+
- Database changed
- Query OK, 0 rows affected (0.85 sec)
Now you can execute a new SHOW
STATUS
statement and observe the changes, as shown here
(with the changed rows highlighted in the output):
- +--------------------------------------------+-----------+
- +--------------------------------------------+-----------+
- | 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 |
- +--------------------------------------------+-----------+
Similarly, you can see the changes in the NDB API statistics
counters caused by inserting a row into t
:
Insert the row, then run the same SHOW
STATUS
statement used in the previous example, as shown
here:
- Query OK, 1 row affected (0.00 sec)
- +--------------------------------------------+-----------+
- +--------------------------------------------+-----------+
- | 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 |
- +--------------------------------------------+-----------+
We can make a number of observations from these results:
Although we created
t
with no explicit primary key, 5 primary key operations were performed in doing so (the difference in the “before” and “after” values ofNdb_api_pk_op_count_session
, or 6 minus 1). This reflects the creation of the hidden primary key that is a feature of all tables using theNDB
storage engine.By comparing successive values for
Ndb_api_wait_nanos_count_session
, we can see that the NDB API operations implementing theCREATE TABLE
statement waited much longer (706871709 - 820705 = 706051004 nanoseconds, or approximately 0.7 second) for responses from the data nodes than those executed by theINSERT
(707370418 - 706871709 = 498709 ns or roughly .0005 second). The execution times reported for these statements in the mysql client correlate roughly with these figures.On platforms without sufficient (nanosecond) time resolution, small changes in the value of the
WaitNanosCount
NDB API counter due to SQL statements that execute very quickly may not always be visible in the values ofNdb_api_wait_nanos_count_session
,Ndb_api_wait_nanos_count_slave
, orNdb_api_wait_nanos_count
.The
INSERT
statement incremented both theReadRowCount
andTransLocalReadRowCount
NDB API statistics counters, as reflected by the increased values ofNdb_api_read_row_count_session
andNdb_api_trans_local_read_row_count_session
.
Document created the 26/06/2006, last modified the 26/10/2018
Source of the printed document:https://www.gaudry.be/en/mysql-rf-mysql-cluster-ndb-api-statistics.html
The infobrol is a personal site whose content is my sole responsibility. The text is available under CreativeCommons license (BY-NC-SA). More info on the terms of use and the author.
References
These references and links indicate documents consulted during the writing of this page, or which may provide additional information, but the authors of these sources can not be held responsible for the content of this page.
The author This site is solely responsible for the way in which the various concepts, and the freedoms that are taken with the reference works, are presented here. Remember that you must cross multiple source information to reduce the risk of errors.