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
表格中。
執行緒名稱會以
格式顯示在 prefix
/plugin_name
/thread_name
threads
和 setup_threads
表格的 name
欄位中。prefix
是由 performance_schema
引擎判定的物件類型,外掛程式執行緒是 thread
(請參閱 執行緒檢測元素)。plugin_name
是 ndbcluster
。thread_name
是執行緒的獨立名稱 (ndb_binlog
、ndb_index_stat
或 ndb_metadata
)。
使用 threads
或 setup_threads
表格中給定執行緒的執行緒 ID 或 OS 執行緒 ID,可以從效能綱要中取得有關外掛程式執行和資源使用的相當多資訊。此範例示範如何藉由聯結 threads
和 memory_summary_by_thread_by_event_name
表格,從 mem_root
區域取得 ndbcluster
外掛程式所建立的執行緒配置的記憶體量
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)