25.6.19 NDB Кластер и схема производительности
NDB предоставляет информацию в схеме производительности MySQL о потоках плагина ndbcluster и инструментировании для памяти транзакционных пакетов. Эти функции описаны более подробно в следующих разделах.
Потоки плагина ndbcluster
Потоки плагина ndbcluster отображаются в таблице схемы производительности threads, как показано в запросе ниже:
mysql> SELECT name, type, thread_id, thread_os_id
-> FROM performance_schema.threads
-> WHERE name LIKE '%ndbcluster%'\G
+----------------------------------+------------+-----------+--------------+
| name | type | thread_id | thread_os_id |
+----------------------------------+------------+-----------+--------------+
| thread/ndbcluster/ndb_binlog | BACKGROUND | 30 | 11980 |
| thread/ndbcluster/ndb_index_stat | BACKGROUND | 31 | 11981 |
| thread/ndbcluster/ndb_metadata | BACKGROUND | 32 | 11982 |
+----------------------------------+------------+-----------+--------------+
Таблица threads отображает все три перечисленных потока:
ndb_binlog: Поток двоичного протоколированияndb_index_stat: Поток статистики индексовndb_metadata: Поток метаданных
Эти потоки также отображаются по имени в таблице setup_threads.
Имена потоков отображаются в столбце name таблиц threads и setup_threads с использованием формата . prefix/plugin_name/thread_nameprefix, тип объекта, определяемый движком performance_schema, равен thread для потоков плагинов (см. Элементы инструментов потоков). plugin_name равен ndbcluster. thread_name — это самостоятельное имя потока (ndb_binlog, ndb_index_stat или ndb_metadata).
Используя идентификатор потока или идентификатор потока ОС для данного потока в таблице threads или setup_threads, можно получить значительную информацию из схемы производительности о выполнении плагина и использовании ресурсов. Этот пример демонстрирует, как получить объем памяти, выделенной потоками, созданными плагином ndbcluster из арены mem_root, объединяя таблицы threads и memory_summary_by_thread_by_event_name:
mysql> SELECT
-> t.name,
-> m.sum_number_of_bytes_alloc,
-> IF(m.sum_number_of_bytes_alloc > 0, "true", "false") AS 'Has allocated memory'
-> FROM performance_schema.memory_summary_by_thread_by_event_name m
-> JOIN performance_schema.threads t
-> ON m.thread_id = t.thread_id
-> WHERE t.name LIKE '%ndbcluster%'
-> AND event_name LIKE '%THD::main_mem_root%';
+----------------------------------+---------------------------+----------------------+
| name | sum_number_of_bytes_alloc | Has allocated memory |
+----------------------------------+---------------------------+----------------------+
| thread/ndbcluster/ndb_binlog | 20576 | true |
| thread/ndbcluster/ndb_index_stat | 0 | false |
| thread/ndbcluster/ndb_metadata | 8240 | true |
+----------------------------------+---------------------------+----------------------+
Использование памяти для транзакций
Объем памяти, используемой для группировки транзакций, можно увидеть, запросив таблицу схемы производительности memory_summary_by_thread_by_event_name, примерно так:
mysql> SELECT EVENT_NAME
-> FROM performance_schema.memory_summary_by_thread_by_event_name
-> WHERE THREAD_ID = PS_CURRENT_THREAD_ID()
-> AND EVENT_NAME LIKE 'memory/ndbcluster/%';
+-------------------------------------------+
| EVENT_NAME |
+-------------------------------------------+
| memory/ndbcluster/Thd_ndb::batch_mem_root |
+-------------------------------------------+
1 row in set (0.01 sec)
Инструмент памяти транзакций ndbcluster также отображается в таблице схемы производительности setup_instruments, как показано ниже:
mysql> SELECT * from performance_schema.setup_instruments
-> WHERE NAME LIKE '%ndb%'\G
*************************** 1. row ***************************
NAME: memory/ndbcluster/Thd_ndb::batch_mem_root
ENABLED: YES
TIMED: NULL
PROPERTIES:
VOLATILITY: 0
DOCUMENTATION: Memory used for transaction batching
1 row in set (0.01 sec)
© 2025 Oracle
Licensed under the GPLv2 License.