Spec-Zone.ru › MySQL 8.4

25.6.16 Счетчики и переменные статистики 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             | 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)

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

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

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

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

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

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

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

    Мы называем соответствующие переменные состояния “_replica переменные” (с ведущим подчеркиванием).

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

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

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

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

    Этот набор счетчиков относится ко всем объектам, в настоящее время используемым данным экземпляром mysqld. Это включает все приложения 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 и переменные состояния 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, соответствующих этому счетчику.

Таблица 25.39 Счетчики статистики API NDB

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

  • Репликация (ведомый сервер)

  • Инжектор

  • Сервер

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

  • Ndb_api_wait_exec_complete_count_replica

  • [none]

  • Ndb_api_wait_exec_complete_count

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

  • Ndb_api_wait_scan_result_count_replica

  • [none]

  • Ndb_api_wait_scan_result_count

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

  • Ndb_api_wait_meta_request_count_replica

  • [none]

  • Ndb_api_wait_meta_request_count

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

  • Ndb_api_wait_nanos_count_replica

  • [none]

  • Ndb_api_wait_nanos_count

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

  • Ndb_api_bytes_sent_count_replica

  • [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_replica

  • [none]

  • Ndb_api_trans_start_count

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

  • Ndb_api_trans_commit_count_replica

  • [none]

  • Ndb_api_trans_commit_count

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

  • Ndb_api_trans_abort_count_replica

  • [none]

  • Ndb_api_trans_abort_count

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

  • Ndb_api_trans_close_count_replica

  • [none]

  • Ndb_api_trans_close_count

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

  • Ndb_api_pk_op_count_replica

  • [none]

  • Ndb_api_pk_op_count

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

  • Ndb_api_uk_op_count_replica

  • [none]

  • Ndb_api_uk_op_count

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

  • Ndb_api_table_scan_count_replica

  • [none]

  • Ndb_api_table_scan_count

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

  • Ndb_api_range_scan_count_replica

  • [none]

  • Ndb_api_range_scan_count

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

  • Ndb_api_pruned_scan_count_replica

  • [none]

  • Ndb_api_pruned_scan_count

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

  • Ndb_api_scan_batch_count_replica

  • [none]

  • Ndb_api_scan_batch_count

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

  • Ndb_api_read_row_count_replica

  • [none]

  • Ndb_api_read_row_count

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

  • Ndb_api_trans_local_read_row_count_replica

  • [none]

  • Ndb_api_trans_local_read_row_count

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

  • [none]

  • Ndb_api_event_data_count_injector

  • Ndb_api_event_data_count

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

  • [none]

  • Ndb_api_event_nondata_count_injector

  • Ndb_api_event_nondata_count

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

  • [none]

  • 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 с момента последней перезагрузки.

Вы можете увидеть, как различные счётчики NDB API инкрементируются заданным 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)

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

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

  • Заявление INSERT увеличило оба счётчика статистики NDB API 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-8.4-en/mysql-cluster-ndb-api-statistics.html

Spec-Zone.ru

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