• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 1. Performance Schema 빠른 시작
    2. Performance Schema 구성
    3. Performance Schema 쿼리
    4. Performance Schema Instrument Naming Conventions
    5. Performance Schema Status Monitoring
    6. Performance Schema Atom and Molecule Events
    7. Performance Schema Statement Digests
    8. Performance Schema의 일반적인 테이블 특성
    9. Performance Schema 테이블 설명
    10. Performance Schema Option and Variable Reference
    11. Performance Schema Command Options
    12. Performance Schema System Variables
    13. Performance Schema Status Variables
    14. Performance Schema and Plugins
    15. 문제를 진단하기위한 Performance Schema 사용
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

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_lost 은 종류 xxx 의로드 할 수 없었던 instrument의 수를 나타냅니다.

  • Performance_schema_xxx_instances_lost 는 개체 유형 xxx 생성 할 수 없었던 instrument의 수를 나타냅니다.

  • Performance_schema_xxx_handles_lost 는 개체 유형 xxx 의 열 수없는 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= N 을 사용하여 명시 적으로 많이 할당하지 않은 경우,이 플러그인을로드하면 instrument가 부족 합니다.

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 구문" 을 참조하십시오.

서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved