• 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.7 Performance Schema Statement Digests

MySQL 5.6.5 현재 성능 스키마는 문 다이제스트 정보를 유지합니다. 다이제스트는 SQL 문을 표준화 형식으로 변환하고 결과의 해시 값을 계산합니다. 정규화하여 유사한 문이 그룹화되어 요약 된 서버가 실행중인 명령문의 종류와 그 발생 빈도에 대한 정보가 공개됩니다. 이 섹션에서는 어떻게 문 정상화가 이루어 어떻게 도움이 될 수 있는지에 대해 설명합니다.

문 다이제스트는 이러한 성능 스키마 구성 요소가 포함됩니다.

  • setup_consumers 테이블의 statement_digest 소비자는 성능 스키마가 요약 정보를 유지할지 여부를 제어합니다.

  • 문 이벤트 테이블 ( events_statements_current , events_statements_history 및 events_statements_history_long )에는 다이제스트 MD5 값과 해당 정규화 된 문 텍스트 문자열을 포함하는 DIGEST 및 DIGEST_TEXT 열 수 있습니다.

  • events_statements_summary_by_digest 테이블은 집계 된 문 다이제스트 정보를 제공합니다.

문 정규화하여 문 텍스트는 일반 문 구조를 유지하면서 구조에 필요하지 않은 정보를 삭제하는 더 표준화 된 문자열 표현으로 변환됩니다. 데이터베이스 또는 테이블 이름 등의 객체 식별자는 유지됩니다. 값과 댓글은 삭제되고 공백이 조정됩니다. 성능 스키마는 이름, 암호, 날짜 등의 정보를 유지하지 않습니다.

이러한 진술을 고려하십시오.

SELECT * FROM orders WHERE customer_id=10 AND quantity>20
SELECT * FROM orders WHERE customer_id = 20 AND quantity > 100

이 문을 정상화하기 위해 성능 스키마는 데이터 값을 ? 로 대체하고 공백을 조정합니다. 중 하나도 같은 정규화 형식이되기 때문에 "같은"로 간주됩니다.

SELECT * FROM orders WHERE customer_id = ? AND quantity > ?

정규화 된 문은 저장되는 정보는 적지 만 계속 원래의 문을 대표하고 있습니다. 다양한 비교 값을 가지는 기타 유사한 문은 같은 정규화 형식입니다.

여기에서이 문을 고려하십시오.

SELECT * FROM customers WHERE customer_id = 1000
SELECT * FROM orders WHERE customer_id = 1000

이 경우 문은 "같은"은 없습니다. 객체 식별자가 다르기 때문에 문은 다른 정규화 형식입니다.

SELECT * FROM customers WHERE customer_id = ?
SELECT * FROM orders WHERE customer_id = ?

정규화 된 문은 고정 길이입니다. DIGEST_TEXT 값의 최대 길이는 1024 바이트입니다. 이 최대를 변경하는 옵션은 없습니다. 정규화에 의해이 길이를 초과 문이 생성 된 경우, 텍스트는 "..."로 끝납니다. "..."뒤의 부분 만 다른 긴 문은 동일한 것으로 간주됩니다. 이러한 진술을 고려하십시오.

SELECT * FROM mytable WHERE cola = 10 AND colb = 20
SELECT * FROM mytable WHERE cola = 10 AND colc = 20

AND 직후 컷오프가 발생하면 모두 문이 정규화 형식입니다.

SELECT * FROM mytable WHERE cola = ? AND ...

이 경우 두 번째 컬럼 이름의 차이가 없어져 두 문장이 동일한 것으로 간주됩니다.

정규화 된 각 문에 대해 성능 스키마는 해시 다이제스트 값을 계산하고 그 값과 문을 문 이벤트 테이블 ( events_statements_current , events_statements_history 및 events_statements_history_long )의 DIGEST 및 DIGEST_TEXT 컬럼에 저장합니다. 또한 동일한 SCHEMA_NAME 및 DIGEST 값을 가진 문 정보가 events_statements_summary_by_digest 요약 테이블에 집계됩니다. 성능 스키마는 MD5 해시 값을 사용합니다. 그들은 계산이 빠르고 경쟁을 최소화하는 바람직한 통계적 분포를 가지는 것입니다.

events_statements_summary_by_digest 요약 테이블은 고정 크기이기 때문에 그것이 가득 차면 테이블의 기존 값과 일치하지 않는 SCHEMA_NAME 및 DIGEST 값이있는 문은 SCHEMA_NAME 및 DIGEST 가 NULL 로 설정 된 특별한 행으로 그룹화 된 합니다. 그러면 모든 문이 계산됩니다. 그러나 특별한 행이 실행되는 명령문의 큰 비중을 차지하는 경우 요약 테이블의 크기를 늘리는 것이 바람직 수 있습니다. 이렇게하려면 서버를 시작할 때, performance_schema_digests_size 시스템 변수를 큰 값으로 설정합니다. performance_schema_digests_size 값이 지정되어 있지 않은 경우, 서버는 시작할 때 사용하는 값을 추정합니다. (MySQL 5.6.9 이전에서는 SCHEMA_NAME 컬럼 값이없이 특별한 행 DIGEST 는 NULL 로 설정됩니다.)

문 다이제스트 요약 테이블은 서버에서 실행되는 명령문의 프로필을 제공합니다. 그것은 응용 프로그램이 실행중인 명령문의 종류와 빈도를 나타냅니다. 응용 프로그램 개발자는이 정보를 테이블에있는 다른 정보와 결합하여 사용하여 응용 프로그램의 성능 특성을 평가 할 수 있습니다. 예를 들어, 대기 시간 잠금 시간 또는 인덱스의 사용을 나타내는 테이블 컬럼은 불충분 한 쿼리 유형을 강조 표시 할 수 있습니다. 그러면 개발자가주의가 필요한 응용 프로그램의 부분을 파악할 수 있습니다.

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