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
는 빈 결과를 반환합니다.