Spec-Zone.ru › MySQL 5.7

21.6.14 Счётчики и переменные статистики API 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             | 2           |
| Ndb_api_wait_scan_result_count               | 3           |
| Ndb_api_wait_meta_request_count              | 101         |
| Ndb_api_wait_nanos_count                     | 83664697215 |
| Ndb_api_bytes_sent_count                     | 13608       |
| Ndb_api_bytes_received_count                 | 142800      |
| 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_adaptive_send_forced_count           | 0           |
| Ndb_api_adaptive_send_unforced_count         | 3           |
| 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_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            | 0           |
| Ndb_api_event_nondata_count_injector         | 0           |
| Ndb_api_event_bytes_count_injector           | 0           |
| 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_adaptive_send_forced_count_session   | 0           |
| Ndb_api_adaptive_send_unforced_count_session | 0           |
| Ndb_api_adaptive_send_deferred_count_session | 0           |
+----------------------------------------------+-------------+
69 rows in set (0.00 sec)

Эти переменные состояния также доступны из SESSION_STATUS и GLOBAL_STATUS таблиц базы данных INFORMATION_SCHEMA, как показано ниже:

mysql> SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS 
    ->   WHERE VARIABLE_NAME LIKE 'ndb_api%';
+----------------------------------------------+----------------+
| VARIABLE_NAME                                | VARIABLE_VALUE |
+----------------------------------------------+----------------+
| Ndb_api_wait_exec_complete_count             | 2              |
| Ndb_api_wait_scan_result_count               | 3              |
| Ndb_api_wait_meta_request_count              | 101            |
| Ndb_api_wait_nanos_count                     | 74890499869    |
| Ndb_api_bytes_sent_count                     | 13608          |
| Ndb_api_bytes_received_count                 | 142800         |
| 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_adaptive_send_forced_count           | 0              |
| Ndb_api_adaptive_send_unforced_count         | 3              |
| 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_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            | 0              |
| Ndb_api_event_nondata_count_injector         | 0              |
| Ndb_api_event_bytes_count_injector           | 0              |
| 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_adaptive_send_forced_count_session   | 0              |
| Ndb_api_adaptive_send_unforced_count_session | 0              |
| Ndb_api_adaptive_send_deferred_count_session | 0              |
+----------------------------------------------+----------------+
69 rows in set (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             | 2              |
| Ndb_api_wait_scan_result_count               | 3              |
| Ndb_api_wait_meta_request_count              | 101            |
| Ndb_api_wait_nanos_count                     | 13640285623    |
| Ndb_api_bytes_sent_count                     | 13608          |
| Ndb_api_bytes_received_count                 | 142800         |
| 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_adaptive_send_forced_count           | 0              |
| Ndb_api_adaptive_send_unforced_count         | 3              |
| 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_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            | 0              |
| Ndb_api_event_nondata_count_injector         | 0              |
| Ndb_api_event_bytes_count_injector           | 0              |
| 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_adaptive_send_forced_count_session   | 0              |
| Ndb_api_adaptive_send_unforced_count_session | 0              |
| Ndb_api_adaptive_send_deferred_count_session | 0              |
+----------------------------------------------+----------------+
69 rows in set (0.01 sec)

Каждый объект имеет свои собственные счётчики. Приложения API NDB могут считывать значения счётчиков для использования в оптимизации или мониторинге. Для многопоточных клиентов, которые используют более одного объекта одновременно, также можно получить суммарный вид счётчиков от всех объектов, принадлежащих данному.

Доступно четыре набора таких счётчиков. Один набор относится только к текущей сессии; другие три являются глобальными. Это несмотря на то, что их значения могут быть получены как переменные состояния сессии или глобальные переменные состояния в клиенте mysql. Это означает, что указание ключевого слова SESSION или GLOBAL с SHOW STATUS не влияет на значения, отчётные для переменных состояния статистики API NDB, и значение для каждой из этих переменных одинаково, независимо от того, получено ли оно из соответствующего столбца SESSION_STATUS или GLOBAL_STATUS таблицы.

  • Счётчики сессии (специфичные для сессии)

    Счётчики сессии относятся к объектам, используемым (только) текущей сессией. Использование таких объектов другими клиентами MySQL не влияет на эти подсчёты.

    Для минимизации путаницы со стандартными переменными сессии MySQL, мы будем ссылаться на переменные, соответствующие этим счётчикам сессии API NDB, как “_session переменные” с ведущим символом нижнего подчёркивания.

  • Счётчики репликации (глобальные)

    Этот набор счётчиков относится к объектам, используемым потоком репликации SQL, если таковой имеется. Если данный mysqld не работает в качестве реплики или не использует NDB таблицы, то все эти подсчёты равны 0.

    Мы ссылаемся на соответствующие переменные состояния как на “_slave переменные” (с ведущим символом нижнего подчёркивания).

  • Счётчики инжектора (глобальные)

    Счётчики инжектора относятся к объекту, используемому для прослушивания событий кластера потоком двоичного лога инжектора. Даже при отсутствии записи двоичного лога, mysqld, подключённые к кластеру NDB, продолжают прослушивать некоторые события, такие как изменения схемы.

    Мы ссылаемся на переменные состояния, соответствующие счётчикам инжектора API NDB, как “_injector переменные” (с ведущим символом нижнего подчёркивания).

  • Серверные (глобальные) счётчики (глобальные)

    Этот набор счётчиков относится ко всем объектам, в настоящее время используемым этим mysqld. Это включает все приложения MySQL-клиентов, поток репликации SQL (если таковой имеется), инжектор двоичного лога и 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   | 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       |
+--------------------------------------------+---------+
18 rows in set (0.50 sec)

Чтобы получить список переменных состояния уровня mysqld API NDB, фильтруйте имена переменных, начинающиеся с 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   | 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)

Не все счётчики отображаются во всех четырёх наборах переменных состояния. Для счётчиков событий DataEventsRecvdCount, NondataEventsRecvdCount и EventBytesRecvdCount доступны только _injector и переменные состояния API NDB уровня mysqld:

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 переменные состояния не реализованы для других счётчиков API NDB, как показано здесь:

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)

Названия переменных состояния легко сопоставить с названиями соответствующих счётчиков. Каждый счётчик статистики API NDB перечислен в следующей таблице с описанием, а также названиями любых переменных состояния сервера MySQL, соответствующих этому счётчику.

Таблица 21.61 Счётчики статистики API NDB

Таблица 21.61 Счётчики статистики API NDB
Имя счётчика Описание Переменные состояния (по типу статистики):
  • Сессия

  • Раб (реплика)

  • Инжектор

  • Сервер

END_OF_DOCUMENT_MARKER
WaitExecCompleteCount Количество раз, когда поток был заблокирован в ожидании завершения выполнения операции. Включает все вызовы, а также неявные выполнимые операции для операций с BLOB и автоинкрементирования, невидимые для клиентов.
  • Ndb_api_wait_exec_complete_count_session

  • Ndb_api_wait_exec_complete_count_slave

  • [none]

  • Ndb_api_wait_exec_complete_count

WaitScanResultCount Количество раз, когда поток был заблокирован в ожидании сигнала, основанного на сканировании, например, ожидания дополнительных результатов или завершения сканирования.
  • Ndb_api_wait_scan_result_count_session

  • Ndb_api_wait_scan_result_count_slave

  • [none]

  • Ndb_api_wait_scan_result_count

WaitMetaRequestCount Количество раз, когда поток был заблокирован в ожидании сигнала, основанного на метаданных; это может произойти при ожидании операции DDL или начала (или завершения) эпохи.
  • Ndb_api_wait_meta_request_count_session

  • Ndb_api_wait_meta_request_count_slave

  • [none]

  • Ndb_api_wait_meta_request_count

WaitNanosCount Общее время (в наносекундах), затраченное на ожидание сигнала от узлов данных.
  • Ndb_api_wait_nanos_count_session

  • Ndb_api_wait_nanos_count_slave

  • [none]

  • Ndb_api_wait_nanos_count

BytesSentCount Объём данных (в байтах), отправленных узлам данных
  • Ndb_api_bytes_sent_count_session

  • Ndb_api_bytes_sent_count_slave

  • [none]

  • Ndb_api_bytes_sent_count

BytesRecvdCount Объём данных (в байтах), полученных от узлов данных
  • Ndb_api_bytes_received_count_session

  • Ndb_api_bytes_received_count_slave

  • [none]

  • Ndb_api_bytes_received_count

TransStartCount Количество начатых транзакций.
  • Ndb_api_trans_start_count_session

  • Ndb_api_trans_start_count_slave

  • [none]

  • Ndb_api_trans_start_count

TransCommitCount Количество успешно завершенных транзакций.
  • Ndb_api_trans_commit_count_session

  • Ndb_api_trans_commit_count_slave

  • [none]

  • Ndb_api_trans_commit_count

TransAbortCount Количество прерванных транзакций.
  • Ndb_api_trans_abort_count_session

  • Ndb_api_trans_abort_count_slave

  • [none]

  • Ndb_api_trans_abort_count

TransCloseCount Количество прерванных транзакций. (Это значение может быть больше суммы TransCommitCount и TransAbortCount.)
  • Ndb_api_trans_close_count_session

  • Ndb_api_trans_close_count_slave

  • [none]

  • Ndb_api_trans_close_count

PkOpCount Количество операций, основанных на или использующих первичные ключи. Это счёт включает операции с блобами, неявные операции разблокировки и операции автоинкрементирования, а также операции с первичными ключами, обычно видимые для клиентов MySQL.
  • Ndb_api_pk_op_count_session

  • Ndb_api_pk_op_count_slave

  • [none]

  • Ndb_api_pk_op_count

UkOpCount Количество операций, основанных на или использующих уникальные ключи.
  • Ndb_api_uk_op_count_session

  • Ndb_api_uk_op_count_slave

  • [none]

  • Ndb_api_uk_op_count

TableScanCount Количество начатых сканирований таблиц. Это включает сканирование внутренних таблиц.
  • Ndb_api_table_scan_count_session

  • Ndb_api_table_scan_count_slave

  • [none]

  • Ndb_api_table_scan_count

RangeScanCount Количество начатых диапазонных сканирований.
  • Ndb_api_range_scan_count_session

  • Ndb_api_range_scan_count_slave

  • [none]

  • Ndb_api_range_scan_count

PrunedScanCount Количество сканирований, которые были сокращены до единственного раздела.
  • Ndb_api_pruned_scan_count_session

  • Ndb_api_pruned_scan_count_slave

  • [none]

  • Ndb_api_pruned_scan_count

ScanBatchCount Количество партий строк, полученных. (Партия в данном контексте — это набор результатов сканирования из одного фрагмента.)
  • Ndb_api_scan_batch_count_session

  • Ndb_api_scan_batch_count_slave

  • [нет]

  • Ndb_api_scan_batch_count

ReadRowCount Общее количество строк, которые были прочитаны. Включает строки, прочитанные с использованием первичного ключа, уникального ключа и операций сканирования.
  • Ndb_api_read_row_count_session

  • Ndb_api_read_row_count_slave

  • [нет]

  • Ndb_api_read_row_count

TransLocalReadRowCount Количество строк, прочитанных с того же узла данных, на котором выполнялась транзакция.
  • Ndb_api_trans_local_read_row_count_session

  • Ndb_api_trans_local_read_row_count_slave

  • [нет]

  • Ndb_api_trans_local_read_row_count

DataEventsRecvdCount Количество полученных событий изменения строк.
  • [нет]

  • [нет]

  • Ndb_api_event_data_count_injector

  • Ndb_api_event_data_count

NondataEventsRecvdCount Количество полученных событий, отличных от событий изменения строк.
  • [нет]

  • [нет]

  • Ndb_api_event_nondata_count_injector

  • Ndb_api_event_nondata_count

EventBytesRecvdCount Количество байтов полученных событий.
  • [нет]

  • [нет]

  • Ndb_api_event_bytes_count_injector

  • Ndb_api_event_bytes_count


Чтобы увидеть все счетчики завершённых транзакций — то есть, все 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)

Из этого можно определить, что 1 транзакция была завершена в текущем сеансе клиента mysql, и 2 транзакции были завершены в mysqld с момента последней перезагрузки.

Вы можете увидеть, как различные счетчики API NDB инкрементируются заданным SQL-запросом, сравнив значения соответствующих переменных состояния _session непосредственно перед и после выполнения запроса. В этом примере, после получения начальных значений из SHOW STATUS, мы создаём в базе данных test таблицу NDB с именем t, которая имеет один столбец:

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)

Аналогично, вы можете увидеть изменения в счетчиках статистики API NDB, вызванные вставкой строки в t: Вставьте строку, затем выполните тот же запрос 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, мы можем увидеть, что операции API NDB, реализующие запрос CREATE TABLE, ожидали гораздо дольше (706871709 - 820705 = 706051004 наносекунды, или приблизительно 0,7 секунды) ответов от узлов данных, чем те, которые выполнялись запросом INSERT (707370418 - 706871709 = 498709 нс или примерно 0,0005 секунды). Время выполнения, указанное для этих запросов в клиенте mysql, примерно соответствует этим цифрам.

    На платформах без достаточной (наносекундной) разрешающей способности, небольшие изменения в значении счётчика API NDB WaitNanosCount, вызванные SQL-запросами, выполняющимися очень быстро, могут не всегда быть видны в значениях Ndb_api_wait_nanos_count_session, Ndb_api_wait_nanos_count_slave или Ndb_api_wait_nanos_count.

  • Запрос INSERT увеличил оба счётчика статистики API NDB ReadRowCount и TransLocalReadRowCount, что отражается на увеличении значений Ndb_api_read_row_count_session и Ndb_api_trans_local_read_row_count_session.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/mysql-cluster-ndb-api-statistics.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API