25.6.18 NDB Cluster and the Performance Schema (original) (raw)
25.6.18 NDB Cluster and the Performance Schema
NDB 8.0 provides information in the MySQL Performance Schema about threads and transaction memory usage; NDB 8.0.29 addsndbcluster
plugin threads, and NDB 8.0.30 adds instrumenting for transaction batch memory. These features are described in greater detail in the sections which follow.
ndbcluster Plugin Threads
Beginning with NDB 8.0.29, ndbcluster
plugin threads are visible in the Performance Schemathreads table, as shown in the following query:
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 |
+----------------------------------+------------+-----------+--------------+
The threads
table shows all three of the threads listed here:
ndb_binlog
: Binary logging threadndb_index_stat
: Index statistics threadndb_metadata
: Metadata thread
These threads are also shown by name in thesetup_threads table.
Thread names are shown in the name
column of the threads
andsetup_threads
tables using the format_`prefix`_/_`pluginname`_/_`threadname`_
.prefix
, the object type as determined by the performance_schema engine, is thread
for plugin threads (seeThread Instrument Elements). The pluginname
isndbcluster
.threadname
is the standalone name of the thread (ndb_binlog
,ndb_index_stat
, orndb_metadata
).
Using the thread ID or OS thread ID for a given thread in thethreads
or setup_threads
table, it is possible to obtain considerable information from Performance Schema about plugin execution and resource usage. This example shows how to obtain the amount of memory allocated by the threads created by the ndbcluster
plugin from the mem_root
arena by joining thethreads
andmemory_summary_by_thread_by_event_name tables:
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 |
+----------------------------------+---------------------------+----------------------+
Transaction Memory Usage
Starting with NDB 8.0.30, you can see the amount of memory used for transaction batching by querying the Performance Schemamemory_summary_by_thread_by_event_name table, similar to what is shown here:
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)
The ndbcluster
transaction memory instrument is also visible in the Performance Schemasetup_instruments table, as shown here:
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)