Spec-Zone.ru › MySQL 9.2

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)

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

Доступны четыре набора таких счётчиков. Один набор относится только к текущей сессии; другие 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)

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

    На платформах без достаточного разрешения по времени (наносекунды), незначительные изменения в значении счётчика NDB API WaitNanosCount, вызванные 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-9.2-en/mysql-cluster-ndb-api-statistics.html

Spec-Zone.ru

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