[MySQL] SHOW ENGINE과 SHOW ENGINES 명령
- Databases/MySQL
- 2020. 10. 17.
■ SHOW ENGINE 명령어 사용법
SHOW ENGINE engine_name {STATUS | MUTEX}
SHOW ENGINE은 스토리지 엔진에 대한 운영 정보를 표시합니다. PROCESS 권한이 필요합니다. 이 문장에는 다음과 같은 다양한 방법이 있습니다.
SHOW ENGINE INNODB STATUS
SHOW ENGINE INNODB MUTEX
SHOW ENGINE PERFORMANCE_SCHEMA STATUS
SHOW ENGINE INNODB STATUS 표시는 InnoDB 스토리지 엔진의 상태에 대한 표준 InnoDB 모니터의 광범위한 정보를 표시합니다.
SHOW ENGINE INNODB MUTEX는 InnoDB 뮤텍스 및 rw-lock 통계를 표시합니다.
SHOW ENGINE INNODB MUTEX 출력은 MySQL 5.7.2에서 제거되었습니다. MySQL 5.7.8에서 개정되고 다시 도입되었습니다.
MySQL 5.7.8에서 뮤텍스 통계 수집은 다음 옵션을 사용하여 동적으로 구성됩니다.
+ 뮤텍스 통계 수집을 활성화하려면 다음을 실행합니다.
SET GLOBAL innodb_monitor_enable='latch';
+ 뮤텍스 통계를 재설정하려면 다음을 실행합니다.
SET GLOBAL innodb_monitor_reset='latch';
+ 뮤텍스 통계 수집을 비활성화하려면 다음을 실행합니다.
SET GLOBAL innodb_monitor_disable='latch';
SHOW ENGINE INNODB MUTEX에 대한 뮤텍스 통계 수집은 innodb_monitor_enable = 'all'을 설정하여 활성화하거나 innodb_monitor_disable = 'all'을 설정하여 비활성화 할 수도 있습니다.
SHOW ENGINE INNODB MUTEX 출력에는 다음과 같은 컬럼이 있습니다.
+ Type
항상 InnoDB가 표시됩니다.
+ Name
MySQL 5.7.8 이전의 이름 필드는 뮤텍스가 구현된 소스 파일과 뮤텍스가 생성된 파일의 줄 번호를 보고합니다. 줄 번호는 MySQL 버전에 따라 다릅니다. MySQL 5.7.8부터는 뮤텍스 이름만 보고됩니다. 파일 이름과 줄 번호는 여전히 rwlocks에 대해 보고됩니다.
+ Status
뮤텍스 상태.
MySQL 5.7.8 이전에는 WITH_DEBUG가 MySQL 컴파일 타임에 정의된 경우 상태 필드에 여러 값이 표시됩니다. WITH_DEBUG가 정의되지 않은 경우 명령문은 os_waits 값만 표시합니다. 후자의 경우 (With_DEBUG가없는 경우), 출력을 기반으로하는 정보는 rwlock을 보호하는 정규(regular) 뮤텍스와 뮤텍스를 구별하기에 충분하지 않습니다 (여러 리더 또는 단일 라이터를 허용 함). 결과적으로 출력은 동일한 뮤텍스에 대해 여러 행을 포함하는 것처럼 보일 수 있습니다. Pre-MySQL 5.7.8 상태 필드 값은 다음과 같습니다.
- count는 뮤텍스가 요청된 횟수를 나타냅니다.
- spin_waits는 spinlock을 몇 번이나 실행했는지 나타냅니다.
- spin_rounds는 스핀록 라운드수를 나타냅니다. (spin_rounds를 spin_waits로 나눈 값은 평균 라운드 수를 제공합니다.)
- os_waits는 운영 체제 대기 수를 나타냅니다. 이것은 스핀락이 작동하지 않을 때 발생합니다 (스핀 록 동안 뮤텍스가 잠기지 않았으며 운영 체제에 양보하고 기다려야했습니다).
- os_yields는 뮤텍스를 잠그려고 시도하는 스레드가 타임 슬라이스를 포기하고 운영 체제에 양보한 횟수를 나타냅니다 (다른 스레드를 실행하도록 허용하면 뮤텍스가 해제되어 잠금 될 수 있음).
- os_wait_times는 운영 체제 대기에 소요 된 시간 (밀리 초)을 나타냅니다. MySQL 5.7에서는 타이밍이 비활성화되어 있으며 이 값은 항상 0입니다.
MySQL 5.7.8부터 상태 필드는 회전, 대기 및 호출 수를 보고합니다. InnoDB 외부에서 구현되는 저수준 운영 체제 뮤텍스에 대한 통계는 보고되지 않습니다.
+ 스핀은 스핀 수를 나타냅니다.
+ 대기는 뮤텍스 대기 수를 나타냅니다.
+ 호출은 뮤텍스가 요청 된 횟수를 나타냅니다.
SHOW ENGINE INNODB MUTEX는 큰 버퍼 풀이있는 시스템에서 출력량이 너무 많기 때문에 각 버퍼 풀 블록에 대한 뮤텍스 및 rw-lock을 나열하지 않습니다. 그러나 SHOW ENGINE INNODB MUTEX는 버퍼 풀 블록 뮤텍스 및 rw-lock에 대한 집계 BUF_BLOCK_MUTEX 스핀, 대기 및 호출 값을 인쇄합니다. SHOW ENGINE INNODB MUTEX는 또한 대기한 적이 없는 뮤텍스 또는 rw-lock을 나열하지 않습니다 (os_waits = 0). 따라서 SHOW ENGINE INNODB MUTEX는 하나 이상의 OS 레벨 대기를 유발한 버퍼 풀 외부의 뮤텍스 및 rw-lock에 대한 정보만 표시합니다.
SHOW ENGINE PERFORMANCE_SCHEMA STATUS를 사용하여 성능 스키마 코드의 내부 작동을 검사합니다.
mysql> SHOW ENGINE PERFORMANCE_SCHEMA STATUS\G
...
*************************** 3. row ***************************
Type: performance_schema
Name: events_waits_history.size
Status: 76
*************************** 4. row ***************************
Type: performance_schema
Name: events_waits_history.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가 다양한 성능 스키마 옵션이 메모리 요구 사항에 미치는 영향을 이해하도록 돕기위한 것입니다.
이름 값은 각각 내부 버퍼와 버퍼 속성의 이름을 갖는 두 부분으로 구성됩니다. 다음과 같이 버퍼 이름을 표시합니다.
+ 테이블로 노출되지 않은 내부 버퍼는 괄호 안에 표시됩니다. 예 : (pfs_cond_class) .size, (pfs_mutex_class) .memory.
+ performance_schema 데이터베이스에서 테이블로 노출되는 내부 버퍼는 괄호없이 테이블 이름을 따서 명명됩니다. 예 : events_waits_history.size, mutex_instances.count.
+ 성능 스키마에 전체적으로 적용되는 값은 performance_schema로 시작합니다. 예 : performance_schema.memory
버퍼 속성에는 다음과 같은 의미가 있습니다.
+ size는 테이블의 행 크기와 같이 구현에 사용된 내부 레코드의 크기입니다. 크기 값은 변경할 수 없습니다.
+ count는 테이블의 행 수와 같은 내부 레코드 수입니다. 성능 스키마 구성 옵션을 사용하여 카운트 값을 변경할 수 있습니다.
+ 테이블의 경우 tbl_name.memory는 크기와 개수의 곱입니다. 전체적으로 성능 스키마의 경우 performance_schema.memory는 사용된 모든 메모리의 합계 (다른 모든 메모리 값의 합계)입니다.
어떤 경우에는 성능 스키마 구성 매개 변수와 SHOW ENGINE값 사이에 직접적인 관계가 있습니다. 예를 들어 events_waits_history_long.count는 performance_schema_events_waits_history_long_size에 해당합니다. 다른 경우에는 관계가 더 복잡합니다. 예를 들어 events_waits_history.count는 performance_schema_events_waits_history_size (스레드 당 행 수)에 performance_schema_max_thread_instances (스레드 수)를 곱한 값에 해당합니다.
좀더 자세한 메트릭들에 대한 설명은 아래 페이지에서 더 자세히 정리했습니다.
https://myinfrabox.tistory.com/258
▶︎ 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=198.51.100.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 |
+------------+-----------------------+--------------------------------------------------+
이러한 각 행의 상태 컬럼은 MySQL 서버와 클러스터의 연결 및 클러스터 바이너리 로그의 상태에 대한 정보를 각각 제공합니다. 상태 정보는 쉼표로 구분된 이름/값 쌍의 형식입니다.
연결 행의 상태 컬럼에는 다음 표에 설명된 이름/값 쌍이 포함됩니다.
Name | Value |
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 행의 상태 컬럼에는 NDB 클러스터 복제와 관련된 정보가 포함됩니다. 포함 된 이름/값 쌍은 다음 표에 설명되어 있습니다.
Name | Value |
latest_epoch | 이 MySQL 서버에서 가장 최근에 실행 된 가장 최근 에포크 (즉, 서버에서 실행 된 가장 최근 트랜잭션의 시퀀스 번호) |
latest_trans_epoch | 클러스터의 데이터 노드에서 처리 한 가장 최근 에포크 |
latest_received_binlog_epoch | 이진 로그 스레드에서받은 가장 최근 에포크 |
latest_handled_binlog_epoch | 이진 로그 스레드에서 처리 한 가장 최근 에포크 (이진 로그에 쓰기 위해) |
latest_applied_binlog_epoch | 실제로 바이너리 로그에 기록 된 가장 최근 에포크 |
클러스터 모니터링에 가장 유용할 것으로 보이는 SHOW ENGINE NDB STATUS 출력의 나머지 행은 다음과 같이 이름으로 나열됩니다.
+ NdbTransaction : 생성된 NdbTransaction 개체의 수와 크기. NDBTransaction은 NDB 테이블에서 테이블 스키마 작업 (예 : CREATE TABLE 또는 ALTER TABLE)이 수행될 때마다 생성됩니다.
+ NdbOperation : 생성 된 NdbOperation 개체의 수와 크기.
+ NdbIndexScanOperation : 생성된 NdbIndexScanOperation 객체의 수와 크기.
+ NdbIndexOperation : 생성 된 NdbIndexOperation 객체의 수와 크기.
+ NdbRecAttr : 생성된 NdbRecAttr 개체의 수와 크기. 일반적으로 이들중 하나는 SQL노드에서 데이터 조작 명령문을 수행할 때마다 작성됩니다.
+ NdbBlob : 생성된 NdbBlob 개체의 수와 크기. NDBBlob은 NDB테이블의 BLOB열과 관련된 새 작업마다 생성됩니다.
+ NdbReceiver : 생성된 NdbReceiver 개체의 수와 크기. 생성 된 컬럼의 수는 MySQL 서버가 연결된 클러스터의 데이터 노드 수와 동일합니다.
참고사항
SHOW ENGINE NDB STATUS는 현재 세션 동안, 이 명령문이 실행되는 SQL 노드에 액세스하는 MySQL 클라이언트가 NDB 테이블 관련 작업을 수행하지 않은 경우 빈 결과를 반환합니다.
■ SHOW ENGINES 명령어 사용법
SHOW [STORAGE] ENGINES
SHOW ENGINES는 서버의 스토리지 엔진에 대한 상태 정보를 표시합니다. 이는 스토리지 엔진이 지원되는지 확인하거나 기본 엔진이 무엇인지 확인하는 데 특히 유용합니다.
mysql> SHOW ENGINES\G
*************************** 1. row ***************************
Engine: InnoDB
Support: DEFAULT
Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
XA: YES
Savepoints: YES
*************************** 2. row ***************************
Engine: MRG_MYISAM
Support: YES
Comment: Collection of identical MyISAM tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 3. row ***************************
Engine: MEMORY
Support: YES
Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 4. row ***************************
Engine: BLACKHOLE
Support: YES
Comment: /dev/null storage engine (anything you write to it disappears)
Transactions: NO
XA: NO
Savepoints: NO
*************************** 5. row ***************************
Engine: MyISAM
Support: YES
Comment: MyISAM storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 6. row ***************************
Engine: CSV
Support: YES
Comment: CSV storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 7. row ***************************
Engine: ARCHIVE
Support: YES
Comment: Archive storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 8. row ***************************
Engine: PERFORMANCE_SCHEMA
Support: YES
Comment: Performance Schema
Transactions: NO
XA: NO
Savepoints: NO
*************************** 9. row ***************************
Engine: FEDERATED
Support: YES
Comment: Federated MySQL storage engine
Transactions: NO
XA: NO
Savepoints: NO
SHOW ENGINES의 출력은 사용된 MySQL 버전 및 기타 요인에 따라 달라질 수 있습니다.
SHOW ENGINES 출력에는 다음과 같은 컬럼이 있습니다.
+ Engine
스토리지 엔진의 이름입니다.
+ Support
다음 표에 표시된 것처럼 스토리지 엔진에 대한 서버의 지원 수준입니다.
Value Meaning
YES The engine is supported and is active
DEFAULT Like YES, plus this is the default engine
NO The engine is not supported
DISABLED The engine is supported but has been disabled
NO 값은 서버가 엔진을 지원하지 않고 컴파일되었으므로 런타임에 사용할 수 없음을 의미합니다.
DISABLED 값은 서버가 엔진을 비활성화하는 옵션으로 시작되었거나 이를 활성화하는데 필요한 모든 옵션이 제공되지 않았기 때문에 발생합니다. 후자의 경우 오류 로그에 옵션이 비활성화된 원인를 나타내는 내용이 포함되어야 합니다.
서버가 이를 지원하도록 컴파일되었지만 --skip-engine_name 옵션으로 시작된 경우 스토리지 엔진에 대해 DISABLED가 표시될 수도 있습니다. NDB 스토리지 엔진의 경우 DISABLED는 서버가 NDB 클러스터 지원으로 컴파일되었지만 --ndbcluster 옵션으로 시작되지 않았 음을 의미합니다.
모든 MySQL 서버는 MyISAM 테이블을 지원합니다. MyISAM은 비활성화 할 수 없습니다.
+ Comment
스토리지 엔진에 대한 간단한 설명합니다.
+ Transactions
스토리지 엔진이 트랜잭션을 지원하는지 여부를 나타냅니다.
+ XA
스토리지 엔진이 XA 트랜잭션을 지원하는지 여부를 나타냅니다.
+ Savepoints
스토리지 엔진이 저장 점을 지원하는지 여부를 나타냅니다.
스토리지 엔진 정보는 INFORMATION_SCHEMA ENGINES 테이블에서도 사용할 수 있습니다.
'Databases > MySQL' 카테고리의 다른 글
[MySQL] 테이블 정보와 컬럼정보 그리고 테이블 상태 명령 (0) | 2020.10.21 |
---|---|
[MySQL] 양방향 암호화기법-AES_ENCRYPT n AES_DECRPYT (0) | 2020.10.19 |
[MySQL] Prepared 명령 (0) | 2020.10.15 |
[MySQL] KILL 명령 (0) | 2020.10.13 |
[MySQL] Flush 명령 (0) | 2020.10.07 |