13.7.5.16 SHOW ENGINE 구문
SHOW ENGINE engine_name {STATUS | MUTEX} SHOW ENGINE 스토리지 엔진에 관한 동작 정보를 표시합니다. 여기에는 PROCESS 권한이 필요합니다. 이 문은 다음의 변형이 있습니다.
SHOW ENGINE INNODB STATUS SHOW ENGINE INNODB MUTEX SHOW ENGINE {NDB | NDBCLUSTER} STATUS SHOW ENGINE PERFORMANCE_SCHEMA STATUS
SHOW ENGINE INNODB STATUS 는 InnoDB 스토리지 엔진의 상태에 대한 InnoDB 표준 모니터에서 광범위한 정보를 표시합니다. InnoDB 의 처리에 관한 정보를 제공하는 표준 모니터 및 기타 InnoDB 모니터 내용은 섹션 14.15 "InnoDB 모니터" 를 참조하십시오.
SHOW ENGINE INNODB MUTEX 은 InnoDB 상호 배타적 잠금 및 읽고 쓰기 잠금 통계를 표시합니다. 문 출력에는 다음과 같은 열이 있습니다.
대부분의 SHOW ENGINE INNODB MUTEX 출력은 5.6.14에서 삭제됩니다. SHOW ENGINE INNODB MUTEX 출력은 MySQL 5.7.2에서 완전히 삭제됩니다. 성능 스키마 테이블에 뷰를 작성하여 비교 가능한 정보를 생성 할 수 있습니다.
Type항상
InnoDB입니다.Name상호 배타적 잠금이 구현되어있는 소스 파일과 그 파일의 상호 배타적 잠금이 생성되는 행 번호. 이 행 번호는 사용하는 MySQL 버전에 따라 다릅니다.
Status상호 배타적 잠금 상태입니다. MySQL의 컴파일시에
WITH_DEBUG가 정의 된 경우이 필드에는 어떤 값이 표시됩니다.WITH_DEBUG가 정의되지 않은 경우,이 문은os_waits값만 표시합니다. 후자의 (WITH_DEBUG없는) 경우,이 출력의 기본으로되어있는 정보가 일반 상호 배타 락과 읽기, 쓰기 잠금을 보호하기 (다중 판독기 또는 단일 쓰기 허용) 상호 배타 락을 구별 는 부족합니다. 그 결과, 출력이 동일한 상호 배타 락에 여러 행을 포함하도록 보일 수 있습니다.count는 상호 배타적 잠금이 요청 된 횟수를 나타냅니다.spin_waits스핀 록의 실행이 필요하게 된 횟수를 나타냅니다.spin_rounds스핀 록 라운드의 수를 나타냅니다. (spin_rounds을spin_waits로 나누면 평균 발사 속도를 얻을 수 있습니다.)os_waits은 운영 체제의 대기의 수를 나타냅니다. 이것은 스핀 잠금이 작동하지 않았다 (스핀 잠금 중 상호 배타적 잠금이 잠기지 않고 운영 체제에 양보 기다릴 필요가 있었다) 경우에 발생합니다.os_yields은 상호 배타적 잠금을 잠그려고하고있는 thread가 그 타임 슬라이스를 포기 운영 체제에 양보 횟수를 나타냅니다 (다른 thread의 실행을 허용하면 상호 배타적 잠금이 해제되고 잠금 수있게된다 것을 전제로하고 있습니다).os_wait_times은 운영 체제의 대기에 소요 된 시간 (밀리 초)을 나타냅니다. MySQL 5.6에서는 타이밍이 해제되기 때문에이 값은 항상 0입니다.
큰 버퍼 풀에서 출력 양이 시스템에서 방대하게되는 경우가 있기 때문에 SHOW ENGINE INNODB MUTEX 는 버퍼 풀 블록의 상호 배타 락 과 읽고 쓰기 잠금 을 건너 뜁니다. (각 16K 버퍼 풀 블록에 1 개의 상호 배타적 잠금과 하나의 읽고 쓰기 잠금이 존재하고 1G 바이트 당 65,536 개의 블록이 존재합니다.) SHOW ENGINE INNODB MUTEX 또한 대기되지 않았다 ( os_waits=0 ) 상호 배타 락 또는 읽기 - 쓰기 잠금도 표시하지 않습니다. 따라서 SHOW ENGINE INNODB MUTEX OS 수준의 대기 를 한 번 이상 발생시킨 버퍼 풀의 외부 상호 배타 락과 읽고 쓰기 잠금에 대한 정보 만 표시합니다.
SHOW ENGINE INNODB MUTEX 정보를 사용하면 시스템의 문제를 진단 할 수 있습니다. 예를 들어, spin_waits 과 spin_rounds 값이 큰 경우, 확장 성 문제를 나타낼 수 있습니다.
SHOW ENGINE PERFORMANCE_SCHEMA STATUS 를 사용하여 성능 스키마 코드의 내부 작업을 검사합니다.
mysql> SHOW ENGINE PERFORMANCE_SCHEMA STATUS\G
...
*************************** 3. row ******************** *******
Type : performance_schema
Name : events_waits_history.row_size
Status : 76
*************************** 4. row ******************** *******
Type : performance_schema
Name : events_waits_history.row_count
Status : 10000
*************************** 5. row ******************** *******
Type : performance_schema
Name : events_waits_history.memory
Status : 760000
...
*************************** 57. row ******************** *******
Type : performance_schema
Name : performance_schema.memory
Status : 26459600
...
이 문은 다양한 성능 스키마 옵션이 메모리 요구 사항에 미치는 영향에 대해 DBA가 이해할 수 있도록하는 것을 목적으로하고 있습니다.
Name 값은 각각 내부 버퍼와 버퍼 속성을 지정하는 두 부분으로 구성됩니다. 버퍼 이름은 다음과 같이 해석합니다.
테이블로 공개되지 않은 내부 버퍼는 괄호 안에 지정됩니다. 예 :
(pfs_cond_class).row_size((pfs_mutex_class).memory.performance_schema데이터베이스의 테이블로 공개되는 내부 버퍼는 테이블 이름 (괄호없이) 지정됩니다. 예 :events_waits_history.row_size,mutex_instances.row_count.전체적으로 성능 스키마에 적용되는 값은
performance_schema에서 시작됩니다. 예 :performance_schema.memory.
버퍼 속성에는 다음과 같은 의미가 있습니다.
row_size는 구현에 사용되는 내부 레코드의 크기 (테이블의 행 크기 등)입니다.row_size값은 변경할 수 없습니다.row_count은 내부 레코드 수 (테이블 내의 행수)입니다.row_count값은 성능 스키마 구성 옵션을 사용하여 변경할 수 있습니다.테이블의 경우
는tbl_name.memoryrow_size과row_count의 곱입니다. 전체적으로 성능 스키마의 경우performance_schema.memory사용되는 모든 메모리의 총 (다른 모든memory값의 합계)입니다.
경우에 따라 성능 스키마 구성 매개 변수와 SHOW ENGINE 값 사이에 직접적인 관계가 존재합니다. 예를 들어, events_waits_history_long.row_count 는 performance_schema_events_waits_history_long_size 에 대응합니다. 그렇지 않으면,이 관계는 더 복잡합니다. 예를 들어, events_waits_history.row_count 은 performance_schema_events_waits_history_size (스레드 당 행)에 performance_schema_max_thread_instances (스레드 수)를 곱한 값에 대응합니다.
SHOW ENGINE NDB STATUS 서버에 NDB 스토리지 엔진이 활성화되어있는 경우, SHOW ENGINE NDB STATUS
는 연결되어있는 데이터 노드의 숫자 클러스터의 연결 문자열 클러스터 바이너리 로그의 신기원 나 클러스터에 연결했을 때 에
MySQL Server에 의해 생성 된 다양한 클러스터 API 객체의 수와 같은 클러스터 상태 정보를 표시합니다. 이 문에서 샘플 출력을 보여줍니다.
mysql> SHOW ENGINE NDB STATUS;
+------------+-----------------------+--------------------------------------------------+
| Type | Name | Status |
+------------+-----------------------+--------------------------------------------------+
| ndbcluster | connection | cluster_node_id=7,
connected_host=192.168.0.103, connected_port=1186, number_of_data_nodes=4,
number_of_ready_data_nodes=3, connect_count=0 |
| ndbcluster | NdbTransaction | created=6, free=0, sizeof=212 |
| ndbcluster | NdbOperation | created=8, free=8, sizeof=660 |
| ndbcluster | NdbIndexScanOperation | created=1, free=1, sizeof=744 |
| ndbcluster | NdbIndexOperation | created=0, free=0, sizeof=664 |
| ndbcluster | NdbRecAttr | created=1285, free=1285, sizeof=60 |
| ndbcluster | NdbApiSignal | created=16, free=16, sizeof=136 |
| ndbcluster | NdbLabel | created=0, free=0, sizeof=196 |
| ndbcluster | NdbBranch | created=0, free=0, sizeof=24 |
| ndbcluster | NdbSubroutine | created=0, free=0, sizeof=68 |
| ndbcluster | NdbCall | created=0, free=0, sizeof=16 |
| ndbcluster | NdbBlob | created=1, free=1, sizeof=264 |
| ndbcluster | NdbReceiver | created=4, free=0, sizeof=68 |
| ndbcluster | binlog | latest_epoch=155467, latest_trans_epoch=148126,
latest_received_binlog_epoch=0, latest_handled_binlog_epoch=0,
latest_applied_binlog_epoch=0 |
+------------+-----------------------+--------------------------------------------------+
Name 컬럼에 connection 과 binlog 를 포함하는 행은 MySQL 5.1에서이 문 출력에 추가되었습니다. 이러한 각 행의 Status 컬럼은 각각 MySQL 서버 클러스터 연결에 대한 정보와 클러스터 바이너리 로그의 상태에 대한 정보를 제공합니다. Status 정보는 쉼표로 구분 된 일련의 이름과 값 쌍의 형식을하고 있습니다.
connection 줄의 Status 열에는 다음 표에 설명되어있는 이름과 값의 쌍을 포함하고 있습니다.
| 이름 | 값 |
|---|---|
cluster_node_id | 클러스터의 MySQL 서버 노드 ID |
connected_host | MySQL 서버가 연결되어있는 클러스터 관리 서버의 호스트 이름 또는 IP 주소 |
connected_port | MySQL 서버가 관리 서버 ( connected_host )에 연결하는 데 사용하는 포트 |
number_of_data_nodes | 클러스터를 위해 구성되어있는 데이터 노드의 수 (즉, 클러스터의 config.ini 파일의 [ndbd] 섹션의 수) |
number_of_ready_data_nodes | 실제로 실행되는 클러스터의 데이터 노드의 수 |
connect_count | 이 mysqld가 클러스터 데이터 노드에 연결하거나 다시 연결 한 횟수 |
binlog 줄의 Status 컬럼은 MySQL Cluster 복제와 관련된 정보가 포함되어 있습니다. 거기에 포함되어있는 이름 - 값 쌍에 대해 다음 표에서 설명합니다.
| 이름 | 값 |
|---|---|
latest_epoch | 이 MySQL 서버에서 최근에 실행 된 최신 신기원 (즉,이 서버에서 실행 된 최신 트랜잭션 시퀀스 번호) |
latest_trans_epoch | 클러스터의 데이터 노드에 의해 처리 된 최신의 신기원 |
latest_received_binlog_epoch | 바이너리 로그 스레드에 의해 수신 된 최신 신기원 |
latest_handled_binlog_epoch | (바이너리 로그에 기록하기 위해) 바이너리 로그 스레드에 의해 처리 된 최신의 신기원 |
latest_applied_binlog_epoch | 실제로 바이너리 로그에 기록 된 최신 신기원 |
자세한 내용은 섹션 18.6 "MySQL Cluster 복제" 를 참조하십시오.
클러스터 모니터링에 가장 도움이 될 수있는 SHOW ENGINE NDB STATUS 출력의 나머지 행을 다음 Name 으로 나열합니다.
NdbTransaction: 작성된NdbTransaction객체의 수와 크기.NdbTransaction는NDB테이블에서 (CREATE TABLE또는ALTER TABLE등) 테이블 스키마 작업이 수행 될 때마다 생성됩니다.NdbOperation: 작성된NdbOperation객체의 수와 크기.NdbIndexScanOperation: 작성된NdbIndexScanOperation객체의 수와 크기.NdbIndexOperation: 작성된NdbIndexOperation객체의 수와 크기.NdbRecAttr: 작성된NdbRecAttr객체의 수와 크기. 일반적으로이 중 하나는 SQL 노드가 데이터 조작 문이 실행될 때마다 생성됩니다.NdbBlob: 작성된NdbBlob객체의 수와 크기.NdbBlob은NDB테이블에BLOB컬럼에 대한 새로운 작업이 수행 될 때마다 생성됩니다.NdbReceiver: 작성된 모든NdbReceiver객체의 수와 크기.created컬럼의 수는 MySQL 서버가 연결되는 클러스터의 데이터 노드 수와 동일합니다.
현재 세션 동안이 명령문이 실행되는 SQL 노드에 액세스하는 MySQL 클라이언트에 의해 NDB 테이블 관련 작업을 수행하지 않은 경우 SHOW ENGINE NDB STATUS 는 빈 결과를 반환합니다.