Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  NDB Cluster and the Performance Schema

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 |
+----------------------------------+------------+-----------+--------------+

线程表显示了以下三个线程:

  • ndb_binlog:二进制日志线程

  • ndb_index_stat:索引统计线程

  • ndb_metadata:元数据线程

这些线程也显示在 setup_threads 表中。

线程名称显示在 name 列中,使用格式 prefix/plugin_name/thread_nameprefix 是对象类型,由性能模式引擎确定,是 thread 插件线程(见 线程仪器元素)。 plugin_namendbclusterthread_name 是独立的线程名称(ndb_binlogndb_index_statndb_metadata)。

使用 threadssetup_threads 表中的线程 ID 或操作系统线程 ID,可以从性能模式中获取插件执行和资源使用情况的详细信息。例如,以下示例显示如何从 mem_root 堆中获取 ndbcluster 插件创建的线程的内存分配情况,通过连接 threadsmemory_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)