18.5.15 NDB API 통계 카운터 및 변수
Ndb
객체에 의해 실행되는 액션과 이러한 개체에 영향을 미치는 작업에 대한 많은 유형의 통계 카운터를 사용할 수 있습니다. 이 같은 조치는 트랜잭션의 시작과 끝 (또는 중지) 기본 키 및 고유 키 작업 테이블 스캔, 범위 스캔 및 가지 치기 스캔, 다양한 작업이 완료 될 때까지 대기하는 동안 차단 된 스레드 NDBCLUSTER
의해 송수신 된 데이터 및 이벤트가 포함됩니다. NDB API를 호출하거나 데이터 노드가 데이터를 전송하거나 수신 할 때마다 NDB 커널 내부의 카운터가 증가됩니다. mysqld는이 카운터가 시스템 상태 변수로 표시됩니다. 이 값은 SHOW STATUS
출력에서 또는 INFORMATION_SCHEMA.SESSION_STATUS
과 INFORMATION_SCHEMA.GLOBAL_STATUS
테이블을 쿼리하여 읽을 수 있습니다. NDB
테이블을 조작하는 문 전후로 값을 비교하면 API 수준에서 수행 된 해당 작업 및 문을 실행 비용을 확인할 수 있습니다.
다음 SHOW STATUS
명령문을 사용하면 이러한 상태 변수를 나열 할 수 있습니다.
mysql> SHOW STATUS LIKE 'ndb_api%';
+--------------------------------------------+----------+
| Variable_name | Value |
+--------------------------------------------+----------+
| Ndb_api_wait_exec_complete_count_session | 0 |
| Ndb_api_wait_scan_result_count_session | 0 |
| Ndb_api_wait_meta_request_count_session | 0 |
| Ndb_api_wait_nanos_count_session | 0 |
| Ndb_api_bytes_sent_count_session | 0 |
| Ndb_api_bytes_received_count_session | 0 |
| Ndb_api_trans_start_count_session | 0 |
| Ndb_api_trans_commit_count_session | 0 |
| Ndb_api_trans_abort_count_session | 0 |
| Ndb_api_trans_close_count_session | 0 |
| Ndb_api_pk_op_count_session | 0 |
| Ndb_api_uk_op_count_session | 0 |
| Ndb_api_table_scan_count_session | 0 |
| Ndb_api_range_scan_count_session | 0 |
| Ndb_api_pruned_scan_count_session | 0 |
| Ndb_api_scan_batch_count_session | 0 |
| Ndb_api_read_row_count_session | 0 |
| Ndb_api_trans_local_read_row_count_session | 0 |
| Ndb_api_event_data_count_injector | 0 |
| Ndb_api_event_nondata_count_injector | 0 |
| Ndb_api_event_bytes_count_injector | 0 |
| Ndb_api_wait_exec_complete_count_slave | 0 |
| Ndb_api_wait_scan_result_count_slave | 0 |
| Ndb_api_wait_meta_request_count_slave | 0 |
| Ndb_api_wait_nanos_count_slave | 0 |
| Ndb_api_bytes_sent_count_slave | 0 |
| Ndb_api_bytes_received_count_slave | 0 |
| Ndb_api_trans_start_count_slave | 0 |
| Ndb_api_trans_commit_count_slave | 0 |
| Ndb_api_trans_abort_count_slave | 0 |
| Ndb_api_trans_close_count_slave | 0 |
| Ndb_api_pk_op_count_slave | 0 |
| Ndb_api_uk_op_count_slave | 0 |
| Ndb_api_table_scan_count_slave | 0 |
| Ndb_api_range_scan_count_slave | 0 |
| Ndb_api_pruned_scan_count_slave | 0 |
| Ndb_api_scan_batch_count_slave | 0 |
| Ndb_api_read_row_count_slave | 0 |
| Ndb_api_trans_local_read_row_count_slave | 0 |
| Ndb_api_wait_exec_complete_count | 2 |
| Ndb_api_wait_scan_result_count | 3 |
| Ndb_api_wait_meta_request_count | 27 |
| Ndb_api_wait_nanos_count | 45612023 |
| Ndb_api_bytes_sent_count | 992 |
| Ndb_api_bytes_received_count | 9640 |
| Ndb_api_trans_start_count | 2 |
| Ndb_api_trans_commit_count | 1 |
| Ndb_api_trans_abort_count | 0 |
| Ndb_api_trans_close_count | 2 |
| Ndb_api_pk_op_count | 1 |
| Ndb_api_uk_op_count | 0 |
| Ndb_api_table_scan_count | 1 |
| Ndb_api_range_scan_count | 0 |
| Ndb_api_pruned_scan_count | 0 |
| Ndb_api_scan_batch_count | 0 |
| Ndb_api_read_row_count | 1 |
| Ndb_api_trans_local_read_row_count | 1 |
| Ndb_api_event_data_count | 0 |
| Ndb_api_event_nondata_count | 0 |
| Ndb_api_event_bytes_count | 0 |
+--------------------------------------------+----------+
60 rows in set (0.02 sec)
이러한 상태 변수는 다음과 같이 INFORMATION_SCHEMA
데이터베이스 SESSION_STATUS
및 GLOBAL_STATUS
테이블에서 사용할 수 있습니다.
mysql>SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
->WHERE VARIABLE_NAME LIKE 'ndb_api%';
+--------------------------------------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +--------------------------------------------+----------------+ | NDB_API_WAIT_EXEC_COMPLETE_COUNT_SESSION | 2 | | NDB_API_WAIT_SCAN_RESULT_COUNT_SESSION | 0 | | NDB_API_WAIT_META_REQUEST_COUNT_SESSION | 1 | | NDB_API_WAIT_NANOS_COUNT_SESSION | 8144375 | | NDB_API_BYTES_SENT_COUNT_SESSION | 68 | | NDB_API_BYTES_RECEIVED_COUNT_SESSION | 84 | | NDB_API_TRANS_START_COUNT_SESSION | 1 | | NDB_API_TRANS_COMMIT_COUNT_SESSION | 1 | | NDB_API_TRANS_ABORT_COUNT_SESSION | 0 | | NDB_API_TRANS_CLOSE_COUNT_SESSION | 1 | | NDB_API_PK_OP_COUNT_SESSION | 1 | | NDB_API_UK_OP_COUNT_SESSION | 0 | | NDB_API_TABLE_SCAN_COUNT_SESSION | 0 | | NDB_API_RANGE_SCAN_COUNT_SESSION | 0 | | NDB_API_PRUNED_SCAN_COUNT_SESSION | 0 | | NDB_API_SCAN_BATCH_COUNT_SESSION | 0 | | NDB_API_READ_ROW_COUNT_SESSION | 1 | | NDB_API_TRANS_LOCAL_READ_ROW_COUNT_SESSION | 1 | | NDB_API_EVENT_DATA_COUNT_INJECTOR | 0 | | NDB_API_EVENT_NONDATA_COUNT_INJECTOR | 0 | | NDB_API_EVENT_BYTES_COUNT_INJECTOR | 0 | | NDB_API_WAIT_EXEC_COMPLETE_COUNT_SLAVE | 0 | | NDB_API_WAIT_SCAN_RESULT_COUNT_SLAVE | 0 | | NDB_API_WAIT_META_REQUEST_COUNT_SLAVE | 0 | | NDB_API_WAIT_NANOS_COUNT_SLAVE | 0 | | NDB_API_BYTES_SENT_COUNT_SLAVE | 0 | | NDB_API_BYTES_RECEIVED_COUNT_SLAVE | 0 | | NDB_API_TRANS_START_COUNT_SLAVE | 0 | | NDB_API_TRANS_COMMIT_COUNT_SLAVE | 0 | | NDB_API_TRANS_ABORT_COUNT_SLAVE | 0 | | NDB_API_TRANS_CLOSE_COUNT_SLAVE | 0 | | NDB_API_PK_OP_COUNT_SLAVE | 0 | | NDB_API_UK_OP_COUNT_SLAVE | 0 | | NDB_API_TABLE_SCAN_COUNT_SLAVE | 0 | | NDB_API_RANGE_SCAN_COUNT_SLAVE | 0 | | NDB_API_PRUNED_SCAN_COUNT_SLAVE | 0 | | NDB_API_SCAN_BATCH_COUNT_SLAVE | 0 | | NDB_API_READ_ROW_COUNT_SLAVE | 0 | | NDB_API_TRANS_LOCAL_READ_ROW_COUNT_SLAVE | 0 | | NDB_API_WAIT_EXEC_COMPLETE_COUNT | 4 | | NDB_API_WAIT_SCAN_RESULT_COUNT | 3 | | NDB_API_WAIT_META_REQUEST_COUNT | 28 | | NDB_API_WAIT_NANOS_COUNT | 53756398 | | NDB_API_BYTES_SENT_COUNT | 1060 | | NDB_API_BYTES_RECEIVED_COUNT | 9724 | | NDB_API_TRANS_START_COUNT | 3 | | NDB_API_TRANS_COMMIT_COUNT | 2 | | NDB_API_TRANS_ABORT_COUNT | 0 | | NDB_API_TRANS_CLOSE_COUNT | 3 | | NDB_API_PK_OP_COUNT | 2 | | NDB_API_UK_OP_COUNT | 0 | | NDB_API_TABLE_SCAN_COUNT | 1 | | NDB_API_RANGE_SCAN_COUNT | 0 | | NDB_API_PRUNED_SCAN_COUNT | 0 | | NDB_API_SCAN_BATCH_COUNT | 0 | | NDB_API_READ_ROW_COUNT | 2 | | NDB_API_TRANS_LOCAL_READ_ROW_COUNT | 2 | | NDB_API_EVENT_DATA_COUNT | 0 | | NDB_API_EVENT_NONDATA_COUNT | 0 | | NDB_API_EVENT_BYTES_COUNT | 0 | +--------------------------------------------+----------------+ 60 rows in set (0.00 sec) mysql>SELECT * FROM INFORMATION_SCHEMA.GLOBAL_STATUS
->WHERE VARIABLE_NAME LIKE 'ndb_api%';
+--------------------------------------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +--------------------------------------------+----------------+ | NDB_API_WAIT_EXEC_COMPLETE_COUNT_SESSION | 2 | | NDB_API_WAIT_SCAN_RESULT_COUNT_SESSION | 0 | | NDB_API_WAIT_META_REQUEST_COUNT_SESSION | 1 | | NDB_API_WAIT_NANOS_COUNT_SESSION | 8144375 | | NDB_API_BYTES_SENT_COUNT_SESSION | 68 | | NDB_API_BYTES_RECEIVED_COUNT_SESSION | 84 | | NDB_API_TRANS_START_COUNT_SESSION | 1 | | NDB_API_TRANS_COMMIT_COUNT_SESSION | 1 | | NDB_API_TRANS_ABORT_COUNT_SESSION | 0 | | NDB_API_TRANS_CLOSE_COUNT_SESSION | 1 | | NDB_API_PK_OP_COUNT_SESSION | 1 | | NDB_API_UK_OP_COUNT_SESSION | 0 | | NDB_API_TABLE_SCAN_COUNT_SESSION | 0 | | NDB_API_RANGE_SCAN_COUNT_SESSION | 0 | | NDB_API_PRUNED_SCAN_COUNT_SESSION | 0 | | NDB_API_SCAN_BATCH_COUNT_SESSION | 0 | | NDB_API_READ_ROW_COUNT_SESSION | 1 | | NDB_API_TRANS_LOCAL_READ_ROW_COUNT_SESSION | 1 | | NDB_API_EVENT_DATA_COUNT_INJECTOR | 0 | | NDB_API_EVENT_NONDATA_COUNT_INJECTOR | 0 | | NDB_API_EVENT_BYTES_COUNT_INJECTOR | 0 | | NDB_API_WAIT_EXEC_COMPLETE_COUNT_SLAVE | 0 | | NDB_API_WAIT_SCAN_RESULT_COUNT_SLAVE | 0 | | NDB_API_WAIT_META_REQUEST_COUNT_SLAVE | 0 | | NDB_API_WAIT_NANOS_COUNT_SLAVE | 0 | | NDB_API_BYTES_SENT_COUNT_SLAVE | 0 | | NDB_API_BYTES_RECEIVED_COUNT_SLAVE | 0 | | NDB_API_TRANS_START_COUNT_SLAVE | 0 | | NDB_API_TRANS_COMMIT_COUNT_SLAVE | 0 | | NDB_API_TRANS_ABORT_COUNT_SLAVE | 0 | | NDB_API_TRANS_CLOSE_COUNT_SLAVE | 0 | | NDB_API_PK_OP_COUNT_SLAVE | 0 | | NDB_API_UK_OP_COUNT_SLAVE | 0 | | NDB_API_TABLE_SCAN_COUNT_SLAVE | 0 | | NDB_API_RANGE_SCAN_COUNT_SLAVE | 0 | | NDB_API_PRUNED_SCAN_COUNT_SLAVE | 0 | | NDB_API_SCAN_BATCH_COUNT_SLAVE | 0 | | NDB_API_READ_ROW_COUNT_SLAVE | 0 | | NDB_API_TRANS_LOCAL_READ_ROW_COUNT_SLAVE | 0 | | NDB_API_WAIT_EXEC_COMPLETE_COUNT | 4 | | NDB_API_WAIT_SCAN_RESULT_COUNT | 3 | | NDB_API_WAIT_META_REQUEST_COUNT | 28 | | NDB_API_WAIT_NANOS_COUNT | 53756398 | | NDB_API_BYTES_SENT_COUNT | 1060 | | NDB_API_BYTES_RECEIVED_COUNT | 9724 | | NDB_API_TRANS_START_COUNT | 3 | | NDB_API_TRANS_COMMIT_COUNT | 2 | | NDB_API_TRANS_ABORT_COUNT | 0 | | NDB_API_TRANS_CLOSE_COUNT | 3 | | NDB_API_PK_OP_COUNT | 2 | | NDB_API_UK_OP_COUNT | 0 | | NDB_API_TABLE_SCAN_COUNT | 1 | | NDB_API_RANGE_SCAN_COUNT | 0 | | NDB_API_PRUNED_SCAN_COUNT | 0 | | NDB_API_SCAN_BATCH_COUNT | 0 | | NDB_API_READ_ROW_COUNT | 2 | | NDB_API_TRANS_LOCAL_READ_ROW_COUNT | 2 | | NDB_API_EVENT_DATA_COUNT | 0 | | NDB_API_EVENT_NONDATA_COUNT | 0 | | NDB_API_EVENT_BYTES_COUNT | 0 | +--------------------------------------------+----------------+ 60 rows in set (0.00 sec)
각 Ndb
개체는 각각 자신의 카운터를 가지고 있습니다. NDB API 응용 프로그램은 최적화 및 모니터링에 사용하기 위해 카운터 값을 읽을 수 있습니다. 동시에 여러 Ndb
개체를 사용하는 다중 스레드 클라이언트의 경우 특정 Ndb_cluster_connection
에 속하는 모든 Ndb
개체에서 카운터 집계 뷰를 얻을 수 있습니다.
4 세트의 카운터가 표시됩니다. 1 세트는 현재 세션에만 적용됩니다. 기타 3 세트는 글로벌입니다. 이것은 mysql 클라이언트에서는 이러한 값을 세션과 글로벌의 두 상태 변수로 얻을 수에 관계 없습니다. 즉, SHOW STATUS
를 사용하여 SESSION
또는 GLOBAL
키워드를 지정하면, NDB API 통계의 상태 변수로보고되는 값은 영향을받지 않고 SESSION_STATUS
과 GLOBAL_STATUS
테이블의 두 동등한 컬럼에서 값을 가져옵니다 있는지에 관계없이 이러한 각 변수의 값은 동일합니다.
세션 카운터 (세션 별)
세션 카운터는 현재 세션에서 (만) 사용되는
Ndb
객체에 관련합니다. 이러한 오브젝트를 다른 MySQL 클라이언트를 사용하더라도 이러한 카운터는 영향을받지 않습니다.표준 MySQL 세션 변수와 혼동을 최소화하기 위해 이러한 NDB API 세션에 대응하는 변수는 앞에 밑줄있는 "
_session
변수 "라고 부르고 있습니다.슬레이브 카운터 (글로벌)
이 카운터 세트는 리플리케이션 슬레이브 SQL 쓰레드 (존재하는 경우)에 사용되는
Ndb
객체에 관련합니다. 이 mysqld가 리플리케이션 작동하지 않거나NDB
테이블을 사용하지 않는 경우 이러한 계산은 모두 0입니다.관련 상태 변수 (앞에 밑줄있는) "
_slave
변수 "라고 부르고 있습니다.인젝터 카운터 (글로벌)
인젝터 카운터는 바이너리 로그 인젝터 스레드가 클러스터 이벤트를 수신하는 데 사용하는
Ndb
객체에 관련합니다. 바이너리 로그를 기록 않을 때에도, MySQL Cluster에 연결된 mysqld 프로세스는 스키마의 변경 등의 일부 이벤트를 대기하고 있습니다.NDB API 인젝터 카운터에 대응하는 상태 변수 (앞에 밑줄있는) "
_injector
변수 "라고 부르고 있습니다.서버 (글로벌) 카운터 (글로벌)
이 카운터 세트는이 mysqld에 의해 현재 사용되는 모든
Ndb
객체에 관련합니다. 여기에는 모든 MySQL 클라이언트 응용 프로그램 슬레이브 SQL 쓰레드 (존재하는 경우) binlog 인젝터 및NDB
유틸리티 스레드가 포함됩니다.이러한 카운터에 대응하는 상태 변수는 "전역 변수"또는 "mysqld 수준 변수"라고 부르고 있습니다.
(일반적인 프리픽스 Ndb_api
함께) 변수 이름의 부분 문자열 session
, slave
또는 injector
에서 추가로 필터링하여 특정 변수 세트의 값을 얻을 수 있습니다. _session
변수의 경우이를 다음과 같이 실행할 수 있습니다.
mysql> SHOW STATUS LIKE 'ndb_api%session';
+--------------------------------------------+---------+
| Variable_name | Value |
+--------------------------------------------+---------+
| Ndb_api_wait_exec_complete_count_session | 2 |
| Ndb_api_wait_scan_result_count_session | 0 |
| Ndb_api_wait_meta_request_count_session | 1 |
| Ndb_api_wait_nanos_count_session | 8144375 |
| Ndb_api_bytes_sent_count_session | 68 |
| Ndb_api_bytes_received_count_session | 84 |
| Ndb_api_trans_start_count_session | 1 |
| Ndb_api_trans_commit_count_session | 1 |
| Ndb_api_trans_abort_count_session | 0 |
| Ndb_api_trans_close_count_session | 1 |
| Ndb_api_pk_op_count_session | 1 |
| Ndb_api_uk_op_count_session | 0 |
| Ndb_api_table_scan_count_session | 0 |
| Ndb_api_range_scan_count_session | 0 |
| Ndb_api_pruned_scan_count_session | 0 |
| Ndb_api_scan_batch_count_session | 0 |
| Ndb_api_read_row_count_session | 1 |
| Ndb_api_trans_local_read_row_count_session | 1 |
+--------------------------------------------+---------+
18 rows in set (0.50 sec)
NDB API mysqld 수준의 상태 변수의 목록을 얻으려면 다음과 같이 ndb_api
에서 시작 _count
로 끝나는 변수 이름으로 필터링합니다.
mysql>SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
->WHERE VARIABLE_NAME LIKE 'ndb_api%count';
+------------------------------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +------------------------------------+----------------+ | NDB_API_WAIT_EXEC_COMPLETE_COUNT | 4 | | NDB_API_WAIT_SCAN_RESULT_COUNT | 3 | | NDB_API_WAIT_META_REQUEST_COUNT | 28 | | NDB_API_WAIT_NANOS_COUNT | 53756398 | | NDB_API_BYTES_SENT_COUNT | 1060 | | NDB_API_BYTES_RECEIVED_COUNT | 9724 | | NDB_API_TRANS_START_COUNT | 3 | | NDB_API_TRANS_COMMIT_COUNT | 2 | | NDB_API_TRANS_ABORT_COUNT | 0 | | NDB_API_TRANS_CLOSE_COUNT | 3 | | NDB_API_PK_OP_COUNT | 2 | | NDB_API_UK_OP_COUNT | 0 | | NDB_API_TABLE_SCAN_COUNT | 1 | | NDB_API_RANGE_SCAN_COUNT | 0 | | NDB_API_PRUNED_SCAN_COUNT | 0 | | NDB_API_SCAN_BATCH_COUNT | 0 | | NDB_API_READ_ROW_COUNT | 2 | | NDB_API_TRANS_LOCAL_READ_ROW_COUNT | 2 | | NDB_API_EVENT_DATA_COUNT | 0 | | NDB_API_EVENT_NONDATA_COUNT | 0 | | NDB_API_EVENT_BYTES_COUNT | 0 | +------------------------------------+----------------+ 21 rows in set (0.09 sec)
4 세트 모든 상태 변수에 모든 카운터가 반영되는 것은 아닙니다. 이벤트 카운터 DataEventsRecvdCount
, NondataEventsRecvdCount
및 EventBytesRecvdCount
의 경우 _injector
와 mysqld 수준의 NDB API 상태 변수 만 사용할 수 있습니다.
mysql> SHOW STATUS LIKE 'ndb_api%event%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| Ndb_api_event_data_count_injector | 0 |
| Ndb_api_event_nondata_count_injector | 0 |
| Ndb_api_event_bytes_count_injector | 0 |
| Ndb_api_event_data_count | 0 |
| Ndb_api_event_nondata_count | 0 |
| Ndb_api_event_bytes_count | 0 |
+--------------------------------------+-------+
6 rows in set (0.00 sec)
다음과 같이 다른 NDB API 카운터는 _injector
상태 변수가 구현되어 있지 않습니다.
mysql> SHOW STATUS LIKE 'ndb_api%injector%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| Ndb_api_event_data_count_injector | 0 |
| Ndb_api_event_nondata_count_injector | 0 |
| Ndb_api_event_bytes_count_injector | 0 |
+--------------------------------------+-------+
3 rows in set (0.00 sec)
상태 변수의 이름은 해당 카운터의 이름에 쉽게 연결할 수 있습니다. 다음 표는 각 NDB API 통계 카운터를 설명 및이 카운터에 대응하는 MySQL 서버 상태 변수의 이름과 함께 나열되어 있습니다.
카운터 이름 | 설명 |
---|---|
Status Variables (by statistic type):
| |
WaitExecCompleteCount | 조작의 실행이 완료 될 때까지 대기하는 동안 스레드가 차단 된 횟수입니다. 모든 execute() 호출과 클라이언트에서 보이지 않는 BLOB 및 자동 증가 조작의 암시 적 실행이 포함됩니다. |
| |
WaitScanResultCount | 추가 결과와 검사가 닫힐 때까지 대기하는 등 검색 기반의 신호를 대기하는 동안 스레드가 차단 된 횟수입니다. |
| |
WaitMetaRequestCount | 메타베이스의 신호를 대기하는 동안 스레드가 차단 된 횟수입니다. 이것은 DDL 조작 또는 신기원이 시작되는 (또는 종료)까지 대기하고있을 때 발생할 수 있습니다. |
| |
WaitNanosCount | 데이터 노드에서 어떤 유형의 신호 대기에 걸린 총 시간 (나노초). |
| |
BytesSentCount | 데이터 노드에 전송 된 데이터 량 (바이트 단위). |
| |
BytesRecvdCount | 데이터 노드로부터 수신 된 데이터 량 (바이트 단위). |
| |
TransStartCount | 시작된 트랜잭션 수입니다. |
| |
TransCommitCount | 커밋 된 트랜잭션의 수입니다. |
| |
TransAbortCount | 중단 된 트랜잭션의 수입니다. |
| |
TransCloseCount | 중단 된 트랜잭션의 수입니다. (이 값은 TransCommitCount 과 TransAbortCount 에게 총보다 클 수 있습니다.) |
| |
PkOpCount | 기본 키에 따라 작업 또는 기본 키를 사용하여 작업의 수입니다. 이 카운트는 BLOB 부분 테이블 조작 암시 적 잠금 해제 조작 자동 증가 조작 및 일반적 MySQL 클라이언트에서 보이는 기본 키 조작이 포함됩니다. |
| |
UkOpCount | 고유 키에 따라 작업 또는 고유 키를 사용하여 작업의 수입니다. |
| |
TableScanCount | 시작 된 테이블 스캔의 수. 여기에는 내부 테이블 스캔이 포함됩니다. |
| |
RangeScanCount | 개시된 범위 스캔의 수. |
| |
PrunedScanCount | 단일 파티션에 정리 된 스캔의 수. |
| |
ScanBatchCount | 수신 된 행의 배치 수. (이 컨텍스트에서 일괄 처리는 단일 조각의 검사 결과 세트입니다.) |
| |
ReadRowCount | 읽은 행의 총 수입니다. 기본 키, 고유 키 또는 스캔 작업을 사용하여 읽은 행이 포함됩니다. |
| |
TransLocalReadRowCount | 트랜잭션이 실행 된 동일한 데이터 노드에서 읽은 행 수. |
| |
DataEventsRecvdCount | 수신 된 행 변경 이벤트의 수. |
| |
NondataEventsRecvdCount | 수신 된 행 변경 이벤트가 아닌 이벤트의 수. |
| |
EventBytesRecvdCount | 수신 된 이벤트의 바이트 수. |
|
커밋 된 트랜잭션의 모든 계산, 즉 TransCommitCount
카운터의 상태 변수를 확인하려면 다음과 같이 SHOW STATUS
의 결과를 부분 문자열 trans_commit_count
으로 필터링 할 수 있습니다.
mysql> SHOW STATUS LIKE '%trans_commit_count%';
+------------------------------------+-------+
| Variable_name | Value |
+------------------------------------+-------+
| Ndb_api_trans_commit_count_session | 1 |
| Ndb_api_trans_commit_count_slave | 0 |
| Ndb_api_trans_commit_count | 2 |
+------------------------------------+-------+
3 rows in set (0.00 sec)
여기에서 현재 mysql 클라이언트 세션에서 하나의 트랜잭션이 커밋 된이 mysqld는 그것이 마지막으로 다시 시작되고 나서 두 트랜잭션이 커밋 된 것을 확인할 수 있습니다.
문을 실행하기 직전과 직후에 해당 _session
상태 변수의 값을 비교하면 특정 SQL 문을 통해 다양한 NDB API 카운터가 얼마나 증가했는지를 확인할 수 있습니다. 이 예에서는 SHOW STATUS
에서 초기 값을 취득한 후, test
데이터베이스에 하나의 컬럼을 가지는 t
라는 NDB
테이블을 만듭니다.
mysql>SHOW STATUS LIKE 'ndb_api%session%';
+--------------------------------------------+--------+ | Variable_name | Value | +--------------------------------------------+--------+ | Ndb_api_wait_exec_complete_count_session | 2 | | Ndb_api_wait_scan_result_count_session | 0 | | Ndb_api_wait_meta_request_count_session | 3 | | Ndb_api_wait_nanos_count_session | 820705 | | Ndb_api_bytes_sent_count_session | 132 | | Ndb_api_bytes_received_count_session | 372 | | Ndb_api_trans_start_count_session | 1 | | Ndb_api_trans_commit_count_session | 1 | | Ndb_api_trans_abort_count_session | 0 | | Ndb_api_trans_close_count_session | 1 | | Ndb_api_pk_op_count_session | 1 | | Ndb_api_uk_op_count_session | 0 | | Ndb_api_table_scan_count_session | 0 | | Ndb_api_range_scan_count_session | 0 | | Ndb_api_pruned_scan_count_session | 0 | | Ndb_api_scan_batch_count_session | 0 | | Ndb_api_read_row_count_session | 1 | | Ndb_api_trans_local_read_row_count_session | 1 | +--------------------------------------------+--------+ 18 rows in set (0.00 sec) mysql>USE test;
Database changed mysql>CREATE TABLE t (c INT) ENGINE NDBCLUSTER;
Query OK, 0 rows affected (0.85 sec)
이 시점에서 다음 (출력에서 변경된 행을 강조 표시하고 있습니다)처럼 새로운 SHOW STATUS
명령문을 실행하고 변경을 확인할 수 있습니다.
mysql> SHOW STATUS LIKE 'ndb_api%session%'; +--------------------------------------------+-----------+ | Variable_name | Value | +--------------------------------------------+-----------+ | Ndb_api_wait_exec_complete_count_session | 8 | | Ndb_api_wait_scan_result_count_session | 0 | | Ndb_api_wait_meta_request_count_session | 17 | | Ndb_api_wait_nanos_count_session | 706871709 | | Ndb_api_bytes_sent_count_session | 2376 | | Ndb_api_bytes_received_count_session | 3844 | | Ndb_api_trans_start_count_session | 4 | | Ndb_api_trans_commit_count_session | 4 | | Ndb_api_trans_abort_count_session | 0 | | Ndb_api_trans_close_count_session | 4 | | Ndb_api_pk_op_count_session | 6 | | Ndb_api_uk_op_count_session | 0 | | Ndb_api_table_scan_count_session | 0 | | Ndb_api_range_scan_count_session | 0 | | Ndb_api_pruned_scan_count_session | 0 | | Ndb_api_scan_batch_count_session | 0 | | Ndb_api_read_row_count_session | 2 | | Ndb_api_trans_local_read_row_count_session | 1 | +--------------------------------------------+-----------+ 18 rows in set (0.00 sec)
마찬가지로 t
에 행을 삽입함으로써 발생한 NDB API 통계 카운터의 변경도 확인할 수 있습니다. 다음과 같이 행을 삽입 한 다음 앞의 예에서 사용 된 것과 동일한 SHOW STATUS
명령문을 실행합니다.
mysql>INSERT INTO t VALUES (100);
Query OK, 1 row affected (0.00 sec) mysql>INSERT INTO t VALUES (100);
Query OK, 1 row affected (0.00 sec) mysql>SHOW STATUS LIKE 'ndb_api%session%';
+--------------------------------------------+-----------+ | Variable_name | Value | +--------------------------------------------+-----------+ | Ndb_api_wait_exec_complete_count_session | 11 | | Ndb_api_wait_scan_result_count_session | 6 | | Ndb_api_wait_meta_request_count_session | 20 | | Ndb_api_wait_nanos_count_session | 707370418 | | Ndb_api_bytes_sent_count_session | 2724 | | Ndb_api_bytes_received_count_session | 4116 | | Ndb_api_trans_start_count_session | 7 | | Ndb_api_trans_commit_count_session | 6 | | Ndb_api_trans_abort_count_session | 0 | | Ndb_api_trans_close_count_session | 7 | | Ndb_api_pk_op_count_session | 8 | | Ndb_api_uk_op_count_session | 0 | | Ndb_api_table_scan_count_session | 1 | | Ndb_api_range_scan_count_session | 0 | | Ndb_api_pruned_scan_count_session | 0 | | Ndb_api_scan_batch_count_session | 0 | | Ndb_api_read_row_count_session | 3 | | Ndb_api_trans_local_read_row_count_session | 2 | +--------------------------------------------+-----------+ 18 rows in set (0.00 sec)
이러한 결과에서 몇 가지를 관찰 할 수 있습니다.
명시적인 기본 키없이
t
을 만들었는데 그 때 다섯 개의 기본 키 조작이 실행되었습니다 (Ndb_api_pk_op_count_session
의 "이전"과 "후"의 값의 차이, 즉 6에서 1을 빼는). 이것은NDB
스토리지 엔진을 사용하고있는 모든 테이블의 기능이다 숨겨진 기본 키의 생성을 반영하고 있습니다.Ndb_api_wait_nanos_count_session
연속적인 값을 비교하면CREATE TABLE
문을 구현하고있는 NDB API 조작이INSERT
에 의해 실행 된 작업 (707370418 - 706871709 = 498709 나노초, 즉 약 0.0005 초)보다 훨씬 긴 시간 (706871709 - 820705 = 706051004 나노초, 즉 약 0.7 초) 데이터 노드로부터 응답을 대기 한 것을 확인할 수 있습니다. mysql 클라이언트에서 이러한 진술에 대해보고 된 실행 시간은 이러한 수치에 느슨하게 관련이 있습니다.충분한 (나노초) 시간 분해능을 제공하지 않는 플랫폼에서는 SQL 문이 매우 빠르게 실행 된 위해
WaitNanosCount
NDB API 카운터 값의 작은 변화가Ndb_api_wait_nanos_count_session
,Ndb_api_wait_nanos_count_slave
또는Ndb_api_wait_nanos_count
값으로 나타나지 않는 것 수 있습니다.Ndb_api_read_row_count_session
과Ndb_api_trans_local_read_row_count_session
값이 증가한 것을 반영하여INSERT
문에 의해ReadRowCount
과TransLocalReadRowCount
모두 NDB API 통계 카운터가 증가되고 있습니다.