22.9.9.3 명령문 요약 테이블
MySQL 5.6.3 이후 성능 스키마는 현재 및 최근의 문 이벤트를 집계하는 테이블을 유지 보수하고 그 정보를 요약 테이블에 집계합니다. 섹션 22.9.6 "성능 스키마 문 이벤트 테이블" 에서 문 요약의 기반이되는 이벤트에 대해 설명하고 있습니다. 문 이벤트의 내용, 현재 및 최근의 문 이벤트 테이블 및 명령문 이벤트 모음 제어 방법에 대한 자세한 내용은 설명을 참조하십시오.
각 문 요약 테이블에는 테이블의 이벤트 집계 방법을 나타내는 하나 이상의 그룹화 열 수 있습니다. 이벤트 이름은 setup_instruments
테이블의 이벤트 instrument의 이름을 나타냅니다.
events_statements_summary_by_digest
에는SCHEMA_NAME
및DIGEST
열 수 있습니다. 각 행은 특정 스키마 / 다이제스트 값 이벤트를 요약합니다. (DIGEST_TEXT
컬럼은 해당 정규화 된 문 다이제스트 텍스트를 저장하지만 그룹화 컬럼에서 요약 컬럼도 없습니다.)이 테이블은 5.6.5에서 추가되었습니다. MySQL 5.6.9 이전에서는
SCHEMA_NAME
컬럼 값없이 그룹화DIGEST
값만을 기초로합니다.events_statements_summary_by_thread_by_event_name
에는THREAD_ID
및EVENT_NAME
열 수 있습니다. 각 행은 특정 스레드 및 이벤트 이름의 이벤트를 요약합니다.events_statements_summary_global_by_event_name
에는EVENT_NAME
열 수 있습니다. 각 행은 특정 이벤트 이름의 이벤트를 요약합니다.
모든 문 요약 테이블에 집계 된 값을 포함하는 이러한 요약 열 수 있습니다.
COUNT_STAR
,SUM_TIMER_WAIT
,MIN_TIMER_WAIT
,AVG_TIMER_WAIT
,MAX_TIMER_WAIT
문 요약 테이블은
events_waits_current
대신events_statements_current
에서 이벤트를 집계하는 것을 제외하고 이러한 열은 이벤트 대기 요약 테이블 ( 섹션 22.9.9.1 "이벤트 대기 요약 테이블" 을 참조)의 같은 이름의 컬럼과 비슷합니다.SUM_
xxx
events_statements_current
테이블에서 해당xxx
열 집계. 예를 들어, 문 요약 테이블의SUM_LOCK_TIME
및SUM_ERRORS
컬럼은events_statements_current
테이블LOCK_TIME
및ERRORS
컬럼의 집계입니다.
events_statements_summary_by_digest
테이블에는 이러한 추가 요약 컬럼이 있습니다.
FIRST_SEEN_TIMESTAMP
,LAST_SEEN_TIMESTAMP
특정 다이제스트 값을 가진 문이 처음 확인 된 시간과 마지막으로 확인 된 시간.
문 이벤트 요약 정보의 예 :
mysql> SELECT * FROM events_statements_summary_global_by_event_name\G
*************************** 1. row ***************************
EVENT_NAME: statement/sql/select
COUNT_STAR: 25
SUM_TIMER_WAIT: 1535983999000
MIN_TIMER_WAIT: 209823000
AVG_TIMER_WAIT: 61439359000
MAX_TIMER_WAIT: 1363397650000
SUM_LOCK_TIME: 20186000000
SUM_ERRORS: 0
SUM_WARNINGS: 0
SUM_ROWS_AFFECTED: 0
SUM_ROWS_SENT: 388
SUM_ROWS_EXAMINED: 370
SUM_CREATED_TMP_DISK_TABLES: 0
SUM_CREATED_TMP_TABLES: 0
SUM_SELECT_FULL_JOIN: 0
SUM_SELECT_FULL_RANGE_JOIN: 0
SUM_SELECT_RANGE: 0
SUM_SELECT_RANGE_CHECK: 0
SUM_SELECT_SCAN: 6
SUM_SORT_MERGE_PASSES: 0
SUM_SORT_RANGE: 0
SUM_SORT_ROWS: 0
SUM_SORT_SCAN: 0
SUM_NO_INDEX_USED: 6
SUM_NO_GOOD_INDEX_USED: 0
...
TRUNCATE TABLE
은 문 요약 테이블에 사용할 수 있습니다. events_statements_summary_by_digest
대해 그것은 테이블을 비 웁니다. 다른 문 요약 테이블에 대해 그것은 행을 삭제하는 것이 아니라 요약 컬럼을 0으로 재설정합니다.
Statement Digest Aggregation Rules
statement_digest
소비자를 활성화하면 문이 완료되면, events_statements_summary_by_digest
에 집계가 다음과 같이 이루어집니다. 집계는 문에 대해 계산 된 DIGEST
값에 근거합니다.
단지 완성 된 문장의 다이제스트 값이있는
events_statements_summary_by_digest
행이 이미 존재하는 경우, 문 통계는 행에 집계됩니다.LAST_SEEN
컬럼은 현재의 시간에 업데이트됩니다.단지 완성 된 문장의 다이제스트 값이있는 행이없이 테이블이 가득 않으면 그 문에 새로운 행이 만들어집니다.
FIRST_SEEN
및LAST_SEEN
컬럼은 현재의 시간으로 초기화됩니다.방금 완료 문 문 다이제스트 값이있는 행이없이 테이블이 가득이면 완료 방금 문 통계가 필요한 경우 생성되는 특별한 '다목적'행에
DIGEST
=NULL
로 추가됩니다. 이 행이 생성 된 경우FIRST_SEEN
및LAST_SEEN
컬럼은 현재의 시간으로 초기화됩니다. 그렇지 않은 경우LAST_SEEN
컬럼이 현재 시간으로 업데이트됩니다.
성능 스키마 테이블에는 메모리 제약에 의한 최대 크기가 있기 때문에 DIGEST
= NULL
행은 유지됩니다. DIGEST
= NULL
행은 다른 행에 일치하지 않는 다이제스트가 요약 테이블이 가득하다하더라도 일반적인 "다른"버킷을 사용하여 계산되는 것을 허용합니다. 이 행은 다이제스트 요약이 대표적이다 여부를 추정하는 데 도움이됩니다.
모든 다이제스트 중 5 %를 나타내는
COUNT_STAR
값이DIGEST
=NULL
행은 다이제스트 요약 테이블이 매우 대표적인임을 나타냅니다. 다른 행이 존재하는 문의 95 %를 차지합니다.모든 다이제스트 중 50 %를 나타내는
COUNT_STAR
값이DIGEST
=NULL
행은 다이제스트 요약 테이블이별로 대표적 않음을 나타냅니다. 다른 행은 존재하는 문의 절반 밖에 차지하지 않습니다. 대부분의 경우 DBA는DIGEST
=NULL
행에 포함되는 행의 대부분이 대신하여 구체적인 행을 사용하여 계산되도록 최대 테이블 크기를 확대해야합니다. 이렇게하려면 서버를 시작할 때,performance_schema_digests_size
시스템 변수를 큰 값으로 설정합니다. 기본 크기는 200입니다.