Loading...
MySQL 9.5 Reference Manual 9.5의 25.6.17 NDB Cluster and the Performance Schema의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
NDB는 MySQL Performance Schema에서
ndbcluster 플러그인 스레드 및 트랜잭션 배치 메모리 계측에 대한 정보를 제공합니다. 이러한 기능에 대해서는 뒤에 나오는 섹션들에서 더 자세히 설명합니다.
ndbcluster 플러그인 스레드는 Performance Schema의
threads 테이블에서 볼 수 있으며,
다음 쿼리에 나타난 것처럼 확인할 수 있습니다:
1mysql> SELECT name, type, thread_id, thread_os_id 2 -> FROM performance_schema.threads 3 -> WHERE name LIKE '%ndbcluster%'\G 4+----------------------------------+------------+-----------+--------------+ 5| name | type | thread_id | thread_os_id | 6+----------------------------------+------------+-----------+--------------+ 7| thread/ndbcluster/ndb_binlog | BACKGROUND | 30 | 11980 | 8| thread/ndbcluster/ndb_index_stat | BACKGROUND | 31 | 11981 | 9| thread/ndbcluster/ndb_metadata | BACKGROUND | 32 | 11982 | 10+----------------------------------+------------+-----------+--------------+
threads 테이블은 여기 나열된 세 개의 스레드 모두를 보여 줍니다:
ndb_binlog: 바이너리 로깅 스레드ndb_index_stat: 인덱스 통계 스레드ndb_metadata: 메타데이터 스레드이들 스레드는
setup_threads 테이블에서도 이름으로 표시됩니다.
스레드 이름은 threads 및
setup_threads 테이블의 name 컬럼에
prefix/plugin_name/thread_name 형식으로 표시됩니다.
_prefix_는 performance_schema 엔진에 의해 결정되는 오브젝트 타입이며,
플러그인 스레드의 경우(자세한 내용은
Thread Instrument Elements 참조)
thread입니다.
_plugin_name_은
ndbcluster입니다.
_thread_name_은 스레드의 단독 이름으로
(ndb_binlog,
ndb_index_stat, 또는
ndb_metadata) 입니다.
주어진 스레드에 대해 threads 또는 setup_threads
테이블에 있는 스레드 ID 또는 OS 스레드 ID를 사용하여
플러그인 실행 및 리소스 사용에 관해 Performance Schema에서
상당한 양의 정보를 얻을 수 있습니다.
다음 예시는
ndbcluster
플러그인이 생성한 스레드가
mem_root 아레나에서 할당한 메모리 양을,
threads 테이블과
memory_summary_by_thread_by_event_name
테이블을 조인하여 얻는 방법을 보여 줍니다:
1mysql> SELECT 2 -> t.name, 3 -> m.sum_number_of_bytes_alloc, 4 -> IF(m.sum_number_of_bytes_alloc > 0, "true", "false") AS 'Has allocated memory' 5 -> FROM performance_schema.memory_summary_by_thread_by_event_name m 6 -> JOIN performance_schema.threads t 7 -> ON m.thread_id = t.thread_id 8 -> WHERE t.name LIKE '%ndbcluster%' 9 -> AND event_name LIKE '%THD::main_mem_root%'; 10+----------------------------------+---------------------------+----------------------+ 11| name | sum_number_of_bytes_alloc | Has allocated memory | 12+----------------------------------+---------------------------+----------------------+ 13| thread/ndbcluster/ndb_binlog | 20576 | true | 14| thread/ndbcluster/ndb_index_stat | 0 | false | 15| thread/ndbcluster/ndb_metadata | 8240 | true | 16+----------------------------------+---------------------------+----------------------+
트랜잭션 배칭에 사용된 메모리 양은
Performance Schema의
memory_summary_by_thread_by_event_name
테이블을 쿼리하여,
다음과 비슷한 방식으로 확인할 수 있습니다:
1mysql> SELECT EVENT_NAME 2 -> FROM performance_schema.memory_summary_by_thread_by_event_name 3 -> WHERE THREAD_ID = PS_CURRENT_THREAD_ID() 4 -> AND EVENT_NAME LIKE 'memory/ndbcluster/%'; 5+-------------------------------------------+ 6| EVENT_NAME | 7+-------------------------------------------+ 8| memory/ndbcluster/Thd_ndb::batch_mem_root | 9+-------------------------------------------+ 101 row in set (0.01 sec)
ndbcluster 트랜잭션 메모리 인스트루먼트는
Performance Schema의
setup_instruments 테이블에서도,
다음과 같이 볼 수 있습니다:
1mysql> SELECT * from performance_schema.setup_instruments 2 -> WHERE NAME LIKE '%ndb%'\G 3*************************** 1. row *************************** 4 NAME: memory/ndbcluster/Thd_ndb::batch_mem_root 5 ENABLED: YES 6 TIMED: NULL 7 PROPERTIES: 8 VOLATILITY: 0 9DOCUMENTATION: Memory used for transaction batching 101 row in set (0.01 sec)
25.6.16 INFORMATION_SCHEMA Tables for NDB Cluster
25.6.18 Quick Reference: NDB Cluster SQL Statements