NDB 在 MySQL 性能模式中提供了有关 ndbcluster
插件线程和事务批处理内存检测的信息。以下部分将更详细地描述这些功能。
性能模式 threads
表中显示了 ndbcluster
插件线程,如下查询所示
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
表中。
threads
和 setup_threads
表的 name
列中显示的线程名称使用
格式。 prefix
/plugin_name
/thread_name
prefix
是由 performance_schema
引擎确定的对象类型,对于插件线程为 thread
(请参阅 线程检测元素)。 plugin_name
为 ndbcluster
。 thread_name
是线程的独立名称(ndb_binlog
、ndb_index_stat
或 ndb_metadata
)。
使用 threads
或 setup_threads
表中给定线程的线程 ID 或操作系统线程 ID,可以从性能模式中获取有关插件执行和资源使用情况的大量信息。此示例展示了如何通过联接 threads
和 memory_summary_by_thread_by_event_name
表来获取 ndbcluster
插件创建的线程从 mem_root
区域分配的内存量
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)
性能模式 setup_instruments
表中也显示了 ndbcluster
事务内存检测,如下所示
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)