22.5 Performance Schema Status Monitoring
성능 스키마와 관련된 몇 가지 상태 변수가 있습니다.
mysql> SHOW STATUS LIKE 'perf%';
+-----------------------------------------------+-------+
| Variable_name | Value |
+-----------------------------------------------+-------+
| Performance_schema_accounts_lost | 0 |
| Performance_schema_cond_classes_lost | 0 |
| Performance_schema_cond_instances_lost | 0 |
| Performance_schema_digest_lost | 0 |
| Performance_schema_file_classes_lost | 0 |
| Performance_schema_file_handles_lost | 0 |
| Performance_schema_file_instances_lost | 0 |
| Performance_schema_hosts_lost | 0 |
| Performance_schema_locker_lost | 0 |
| Performance_schema_mutex_classes_lost | 0 |
| Performance_schema_mutex_instances_lost | 0 |
| Performance_schema_rwlock_classes_lost | 0 |
| Performance_schema_rwlock_instances_lost | 0 |
| Performance_schema_session_connect_attrs_lost | 0 |
| Performance_schema_socket_classes_lost | 0 |
| Performance_schema_socket_instances_lost | 0 |
| Performance_schema_stage_classes_lost | 0 |
| Performance_schema_statement_classes_lost | 0 |
| Performance_schema_table_handles_lost | 0 |
| Performance_schema_table_instances_lost | 0 |
| Performance_schema_thread_classes_lost | 0 |
| Performance_schema_thread_instances_lost | 0 |
| Performance_schema_users_lost | 0 |
+-----------------------------------------------+-------+
성능 스키마 상태 변수는 메모리 제약 때문에로드하거나 작성할 수 없었던 계측에 관한 정보를 제공합니다. 이러한 변수의 이름에는 여러 형태가 있습니다.
은 종류Performance_schema_
xxx
_classes_lostxxx
의로드 할 수 없었던 instrument의 수를 나타냅니다.
는 개체 유형Performance_schema_
xxx
_instances_lostxxx
생성 할 수 없었던 instrument의 수를 나타냅니다.
는 개체 유형Performance_schema_
xxx
_handles_lostxxx
의 열 수없는 instrument의 수를 나타냅니다.Performance_schema_locker_lost
은 '잃어버린'거나 기록되지 않은 이벤트 수를 나타냅니다.
예를 들어, 상호 배타적 잠금이 서버 소스에 인스트르먼트되어 있지만 서버가 실행시에 계측 용 메모리를 할당 할 수없는 경우, 그것은 Performance_schema_mutex_classes_lost
을 증가시킵니다. 상호 배타 락은 아직 동기화 객체로 사용합니다 (즉, 서버는 정상적으로 계속 작동합니다)이 그 성능 데이터가 수집되지 않습니다. instrument를 할당 할 수 있다면 그것은 instrument 된 상호 배타 락 인스턴스의 초기화에 사용할 수 있습니다. 글로벌 상호 배타 락 등의 단일 상호 배타 락의 경우 하나의 인스턴스 만 존재합니다. 기타 상호 배타 락은 연결 기준 또는 각종 캐시 및 데이터 버퍼의 페이지 당 하나의 인스턴스를 가지고 있기 때문에 인스턴스의 수는 시간이 지남에 따라 달라집니다. 최대 연결 수 또는 일부 버퍼의 최대 크기를 늘리면 한 번에 할당 할 수있는 인스턴스의 최대 개수가 늘어납니다. 서버가 특정 instrument 된 상호 배타 락 인스턴스를 작성할 수없는 경우, 그것은 Performance_schema_mutex_instances_lost
을 증가시킵니다.
다음 조건이 유지되고 있다고합니다.
서버는
--performance_schema_max_mutex_classes=200
옵션을 사용하여 시작되고 있기 때문에 200 상호 배타 락 instrument를위한 공간이 있습니다.150 상호 배타 락 instrument는 이미로드되어 있습니다.
plugin_a
라는 플러그인에는 40 상호 배타 락 instrument가 포함되어 있습니다.plugin_b
라는 플러그인에는 20 상호 배타 락 instrument가 포함되어 있습니다.
서버는 다음의 일련의 명령문과 같이 플러그인에 그들이 필요로하는 수와 사용 가능한 수에 따라 상호 배타 락 instrument를 할당합니다.
INSTALL PLUGIN plugin_a
현재 서버는 150 + 40 = 190 상호 배타 락 instrument가 있습니다.
UNINSTALL PLUGIN plugin_a;
서버에는 아직 190 인스트르먼트가 있습니다. 플러그인 코드에 의해 생성 된 모든 기록 데이터는 여전히 사용할 수 있지만 instrument의 새로운 이벤트가 수집되지 않습니다.
INSTALL PLUGIN plugin_a;
서버는 40 인스트르먼트가 이미 정의되어 있음을 감지했기 때문에 새로운 instrument가 생성되지 않고 이전에 할당 된 내부 메모리 버퍼가 재사용됩니다. 서버에는 아직 190 인스트르먼트가 있습니다.
INSTALL PLUGIN plugin_b;
서버는 200-190 = 10 instrument (이 예에서는 상호 배타 락 클래스)의 가능성이 큼 플러그인에 20 개의 새로운 instrument가 포함되어 있는지를 인식합니다. 10 개의 instrument가로드 된 10 개는 삭제되거나 "없어집니다." Performance_schema_mutex_classes_lost
잃어버린 instrument (상호 배타 락 클래스)의 수를 나타냅니다.
mysql> SHOW STATUS LIKE "perf%mutex_classes_lost";
+---------------------------------------+-------+
| Variable_name | Value |
+---------------------------------------+-------+
| Performance_schema_mutex_classes_lost | 10 |
+---------------------------------------+-------+
1 row in set (0.10 sec)
계측 아직 기능하고 plugin_b
의 (부분) 데이터를 수집합니다.
서버가 상호 배타 락 instrument를 만들 수없는 다음과 같은 결과가 발생합니다.
instrument의 줄이
setup_instruments
테이블에 삽입되지 않습니다.Performance_schema_mutex_classes_lost
가 1 증가합니다.Performance_schema_mutex_instances_lost
은 변경되지 않습니다. (상호 배타 락 instrument가 만들어지지 않으면 나중에 instrument 된 상호 배타 락 인스턴스의 생성에 그것을 사용할 수 없습니다.)
앞서의 패턴은 상호 배타적 잠금뿐만 아니라 모든 종류의 instrument에 적용됩니다.
0보다 큰 Performance_schema_mutex_classes_lost
값은 2 가지 경우에 발생할 수 있습니다.
몇 바이트의 메모리를 절약하려면 서버를
--performance_schema_max_mutex_classes=
으로 시작합니다. 여기서N
N
은 기본값 미만입니다. 기본값을 선택하면 MySQL 배포판에서 제공되는 모든 플러그인을로드하는 데 충분하지만 일부 플러그인을로드하지 않는 경우에이를 줄일 수 있습니다. 예를 들어 메일의 일부 스토리지 엔진을로드하지 않도록 선택할 수 있습니다.성능 스키마의 instrument 된 타사 플러그인을로드되지만 서버 시작시 플러그인 계측 메모리 요구 사항을 고려하지 않습니다. 그것은 타사이기 때문에이 엔진의 instrument 메모리 소비는
performance_schema_max_mutex_classes
에서 선택된 기본값으로 고려되어 있지 않습니다.서버에 플러그인 instrument에 대한 충분한 자원이없고 사용자가
--performance_schema_max_mutex_classes=
을 사용하여 명시 적으로 많이 할당하지 않은 경우,이 플러그인을로드하면 instrument가 부족 합니다.N
performance_schema_max_mutex_classes
에 선택되어있는 값이 너무 작 으면 오류 로그에 오류가보고되지 않고 런타임 오류가 발생하지 않습니다. 그러나 performance_schema
데이터베이스 테이블의 내용에 이벤트가 포함되지 않습니다. Performance_schema_mutex_classes_lost
상태 변수는 instrument 만들기 실패에 대한 일부 이벤트가 내부에서 제거 된 것을 나타내는 유일한 보이는 표시입니다.
instrument가 손실되지 않은 경우, 그것은 성능 스키마에 인식 된 인스턴스의 instrument시 사용됩니다. 예를 들어, wait/synch/mutex/sql/LOCK_delete
는 setup_instruments
테이블의 상호 배타 락 instrument의 이름입니다. 서버가 실행될 때 상호 배타 락의 여러 인스턴스가 필요하더라도 코드 ( THD::LOCK_delete
내)에서 상호 배타 락을 만들 때이 하나의 instrument가 사용됩니다. 이 경우 LOCK_delete
연결 ( THD
) 당 상호 배타 락이기 때문에 서버 1000 연결이있는 경우, 1000 스레드와 1000 개의 instrument 된 LOCK_delete
상호 배타 락 인스턴스 ( THD::LOCK_delete
)가 존재 합니다.
서버에 이러한 1000 개의 instrument 된 상호 배타 락 (인스턴스) 모두를위한 여유가없는 경우 일부 상호 배타 락은 계측 함께 만들어 일부는 계측 없이 작성됩니다. 서버가 800 인스턴스 만 작성할 수없는 경우, 200 인스턴스가 손실됩니다. 서버는 계속 실행되지만 Performance_schema_mutex_instances_lost
을 200 증가하고 인스턴스를 생성하지 못했음을 나타냅니다.
0보다 큰 Performance_schema_mutex_instances_lost
은 --performance_schema_max_mutex_instances=
으로 할당 된 것보다 많은 상호 배타 락을 코드에서 실행시에 초기화 한 경우에 발생할 수 있습니다. N
결론적으로, SHOW STATUS LIKE 'perf%'
아무것도 잃지 않은 것이 표시된 (모든 값이 제로) 경우 성능 스키마 데이터는 정확하고 신뢰할 수 있습니다. 뭔가 잃어버린 경우 데이터는 불완전하고 사용하도록 주어진 메모리의 양이 불충분하면 성능 스키마는 모두 기록되어 있지 않습니다. 이 경우 특정 Performance_schema_
변수에 문제 영역이 표시됩니다. xxx
_lost
때로는 의도적으로 instrument의 부족을 발생시킬 적절한 수 있습니다. 예를 들어, 파일 I / O 성능 데이터에 관심이없는 경우는 파일 I / O에 관련된 모든 성능 스키마의 매개 변수를 0으로 설정하여 서버를 시작할 수 있습니다. 파일 관련 클래스, 인스턴스 또는 핸들에 메모리를 할당하지 않고 모든 파일 이벤트가 손실됩니다.
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가 이해할 수 있도록하는 것을 목적으로하고 있습니다. 필드의 의미에 대한 설명은 섹션 13.7.5.16 "SHOW ENGINE 구문" 을 참조하십시오.