■ Stage Event 테이블
Performance Schema 계측기 도구중 단계(Stage)는 명령문 구문 분석, 테이블 열기 또는 파일 정렬 작업 수행과 같은 명령 실행 프로세스를 보여줍니다.
스테이지는 SHOW PROCESSLIST에 의해 표시되거나 INFORMATION_SCHEMA.PROCESSLIST 테이블에 표시되는 스레드 상태에 해당합니다. 상태 값이 변경되면 Stage가 시작되고 끝납니다.
이벤트 계층 구조 내에서 대기(Wait) 이벤트,트랜잭션(Transaction) 이벤트, 명령문(Statement) 이벤트와 같은 레벨에 존재합니다.
• 설정방법
다음과 같은 계측기들이 있습니다. 원하는 계측기에 ENABLED 컬럼을 YES, 타이머 정보까지 원한다면 TIMED컬럼을 YES로 변경합니다.
mysql> SELECT *
FROM performance_schema.setup_instruments
WHERE NAME LIKE 'stage/%';
+----------------------------------------------------+---------+-------+
| NAME | ENABLED | TIMED |
+----------------------------------------------------+---------+-------+
| stage/sql/After create | NO | NO |
| stage/sql/allocating local table | NO | NO |
| stage/sql/altering table | NO | NO |
| stage/sql/committing alter table to storage engine | NO | NO |
| stage/sql/Changing master | NO | NO |
| stage/sql/Checking master version | NO | NO |
| stage/sql/checking permissions | NO | NO |
| stage/sql/checking privileges on cached query | NO | NO |
| stage/sql/checking query cache for query | NO | NO |
| stage/sql/cleaning up | NO | NO |
| stage/sql/closing tables | NO | NO |
| stage/sql/Connecting to master | NO | NO |
| stage/sql/converting HEAP to MyISAM | NO | NO |
| stage/sql/Copying to group table | NO | NO |
| stage/sql/Copying to tmp table | NO | NO |
| stage/sql/copy to tmp table | NO | NO |
| stage/sql/Creating sort index | NO | NO |
| stage/sql/creating table | NO | NO |
| stage/sql/Creating tmp table | NO | NO |
.......
+----------------------------------------------------+---------+-------+
컨슈머 테이블에서 해당 statement 이벤트를 YES로 변경합니다.
mysql> SELECT *
FROM performance_schema.setup_consumers
WHERE NAME LIKE 'events_stages%';
+----------------------------+---------+
| NAME | ENABLED |
+----------------------------+---------+
| events_stages_current | NO |
| events_stages_history | NO |
| events_stages_history_long | NO |
+----------------------------+---------+
stage 타이머에 대해 TIMER_NAME을 원하는 시간단위로 변경합니다.
mysql> SELECT *
FROM performance_schema.setup_timers
WHERE NAME = 'stage';
+-------+------------+
| NAME | TIMER_NAME |
+-------+------------+
| stage | NANOSECOND |
+-------+------------+
- Stage Event 진행정보
Performance Schema 단계 이벤트 테이블에는 각 행에 대한 단계 진행률 표시기를 함께 제공하는 두 개의 컬럼이 있습니다.
1. WORK_COMPLETED : 단계에 대해 완료된 작업 단위 수
2. WORK_ESTIMATED : 단계에 대해 예상되는 작업 단위 수
기기에 대한 진행 정보가 제공되지 않으면 각 컬럼은 NULL입니다. 가능한 경우 정보의 해석은 전적으로 기기 구현에 달려 있습니다. 성능 스키마 테이블은 진행률 데이터를 저장하는 컨테이너를 제공하지만 메트릭 자체의 의미에 대해서는 가정하지 않습니다.
1. 작업 단위는 처리 된 바이트, 행, 파일 또는 테이블수와 같이 실행 중에 시간이 지남에 따라 증가하는 정수 메트릭입니다. 특정 기기에 대한 작업 단위의 정의는 데이터를 제공하는 기기 코드에 맡겨집니다.
2. WORK_COMPLETED 값은 계측 된 코드에 따라 한 번에 하나 또는 여러 단위를 늘릴 수 있습니다.
3. WORK_ESTIMATED 값은 계측 된 코드에 따라 단계 중에 변경 될 수 있습니다.
스테이지 이벤트 진행률 표시기에 대한 계측은 다음 동작중 하나를 구현할 수 있습니다.
1. 진행 도구 없음
진행 데이터가 제공되지 않는 가장 일반적인 경우입니다. WORK_COMPLETED 및 WORK_ESTIMATED 컬럼은 모두 NULL입니다.
2. 무제한 진행 도구
WORK_COMPLETED 컬럼만 의미가 있습니다. 0을 표시하는 WORK_ESTIMATED 컬럼에는 데이터가 제공되지 않습니다.
모니터링 된 세션에 대한 events_stages_current 테이블을 쿼리하여 모니터링 애플리케이션은 지금까지 수행 된 작업량을보고 할 수 있지만 단계가 거의 완료되었는지 여부는보고 할 수 없습니다.
현재는 이와 같이 계측된 스테이지가 없습니다.
3. 제한된 진행 도구
WORK_COMPLETED 및 WORK_ESTIMATED 컬럼은 모두 의미가 있습니다.
이러한 유형의 진행률 표시기는 나중에 설명하는 테이블 복사 도구와 같이 정의된 완료 기준이 있는 작업에 적합합니다. 모니터링된 세션에 대한 events_stages_current 테이블을 쿼리하여 모니터링 애플리케이션은 지금까지 수행된 작업의 양을보고 할 수 있으며 WORK_COMPLETED/WORK_ESTIMATED 비율을 계산하여 단계의 전체 완료 백분율을 보고할 수 있습니다.
stage/sql/copy to tmp 테이블 기기는 진행률 표시기가 작동하는 방식을 보여줍니다.
ALTER TABLE 문을 실행하는 동안 stage/sql/copy to tmp table stage가 사용되며 이 단계는 복사 할 데이터의 크기에 따라 잠재적으로 오랫동안 실행될 수 있습니다.
테이블 복사 태스크에는 정의된 종료(모든 행이 복사 됨)가 있고 stage/sql/copy to tmp 테이블 스테이지는 제한된 진행 정보를 제공하도록 계측됩니다.
사용된 작업 단위는 복사된 행 수이며 WORK_COMPLETED 및 WORK_ESTIMATED는 모두 의미가 있으며 해당 비율은 작업 완료율을 나타냅니다.
▶︎ events_stages_current : 각 스레드에 대한 현재 스테이지 이벤트.
events_stages_current 테이블에는 현재 단계 이벤트가 포함됩니다. 테이블은 스레드의 가장 최근 모니터링된 스테이지 이벤트의 현재 상태를 보여주는 스레드당 하나의 행을 저장하므로 테이블 크기를 구성하기위한 시스템 변수가 없습니다.
스테이지 이벤트 행을 포함하는 테이블 중에서 events_stages_current가 가장 기본입니다. 스테이지 이벤트 행을 포함하는 다른 테이블은 현재 이벤트에서 논리적으로 파생됩니다.
예를 들어 events_stages_history 및 events_stages_history_long 테이블은 각각 스레드당 최대 행 수까지 그리고 모든 스레드에 걸쳐 전역적으로 종료된 가장 최근의 스테이지 이벤트 모음입니다.
주요 컬럼 :
- THREAD_ID, EVENT_ID
이벤트와 연관된 스레드 및 이벤트가 시작될 때 스레드 현재 이벤트 번호. 함께 취해진 THREAD_ID 및 EVENT_ID 값은 행을 고유하게 식별합니다. 두 행에 동일한 값 쌍이 없습니다.
- END_EVENT_ID
이 컬럼은 이벤트가 시작될 때 NULL로 설정되고 이벤트가 종료 될 때 스레드 현재 이벤트 번호로 업데이트됩니다.
- EVENT_NAME
이벤트를 생성 한 계측기의 이름입니다. 이것은 setup_instruments 테이블의 NAME 값입니다.
- SOURCE
이벤트를 생성한 계측된 코드가 포함 된 소스 파일의 이름과 계측이 발생한 파일의 줄 번호입니다. 이를 통해 소스를 확인하여 관련된 코드를 정확히 확인할 수 있습니다.
- TIMER_START, TIMER_END, TIMER_WAIT
이벤트 타이밍 정보. 이 값의 단위는 피코 초 (1 조분의 1 초)입니다. TIMER_START 및 TIMER_END 값은 이벤트 타이밍이 시작되고 종료 된시기를 나타냅니다. TIMER_WAIT는 이벤트 경과 시간 (기간)입니다.
이벤트가 완료되지 않은 경우 TIMER_END는 현재 타이머 값이고 TIMER_WAIT는 지금까지 경과한 시간입니다(TIMER_END-TIMER_START).
TIMED=NO 인 계측기에서 이벤트가 생성되면 타이밍 정보가 수집되지 않고 TIMER_START, TIMER_END 및 TIMER_WAIT는 모두 NULL입니다.
- WORK_COMPLETED, WORK_ESTIMATED
이러한 컬럼은 이러한 정보를 생성하기 위해 구현된 기기에 대한 단계 진행 정보를 제공합니다.
WORK_COMPLETED는 단계에 대해 완료된 작업 단위 수를 나타내고 WORK_ESTIMATED는 단계에 대해 예상되는 작업 단위 수를 나타냅니다.
- NESTING_EVENT_ID
이 이벤트가 중첩되는 이벤트의 EVENT_ID 값입니다. 스테이지 이벤트의 중첩 이벤트는 일반적으로 명령문 이벤트입니다.
- NESTING_EVENT_TYPE
중첩 이벤트 유형입니다. 값은 TRANSACTION, STATEMENT, STAGE 또는 WAIT입니다.
계측기(setup_instruments 테이블)에서 설정한 계측기와 관련이 있습니다.
EVENT_NAME 컬럼에 계측기 이름이 나타납니다.
events_stages_current 테이블에는 TRUNCATE TABLE이 허용됩니다. 행을 제거합니다.
▶︎ events_stages_history 테이블 : 스레드별로 종료 된 가장 최근의 스테이지 이벤트.
events_stages_history 테이블에는 스레드별로 종료된 N개의 가장 최근 스테이지 이벤트가 포함됩니다. 스테이지 이벤트는 종료될 때까지 테이블에 추가되지 않습니다.
테이블에 주어진 스레드에 대한 최대 행 수가 포함된 경우 해당 스레드에 대한 새 행이 추가될 때 가장 오래된 스레드 행이 삭제됩니다. 스레드가 종료되면 모든 행이 삭제됩니다.
성능 스키마는 서버 시작 중에 N값을 자동으로 조정합니다. 스레드당 행 수를 명시적으로 설정하려면 서버 시작시 performance_schema_events_stages_history_size 시스템 변수를 설정합니다.
▶︎ events_stages_history_long 테이블 : 전역 적으로 (모든 스레드에서) 종료 된 가장 최근의 스테이지 이벤트.
events_stages_history_long 테이블에는 모든 스레드에서 전역적으로 종료된 N개의 가장 최근 스테이지 이벤트가 포함됩니다.
스테이지 이벤트는 종료될 때까지 테이블에 추가되지 않습니다. 테이블이 가득차면 어느 스레드가 어느 행을 생성했는지에 관계없이 새 행이 추가될 때 가장 오래된 행이 삭제됩니다.
성능 스키마는 서버 시작 중에 N값을 자동으로 조정합니다. 테이블 크기를 명시적으로 설정하려면 서버 시작시 performance_schema_events_stages_history_long_size 시스템 변수를 설정합니다.
▶︎ Stage Summary 테이블
성능 스키마는 현재 및 최근 단계 이벤트를 수집하기위한 테이블을 유지하고 해당 정보를 요약 테이블에 집계합니다.
단계 이벤트 요약 정보의 예 :
mysql> SELECT *
FROM performance_schema.events_stages_summary_global_by_event_name\G
...
*************************** 5. row ***************************
EVENT_NAME: stage/sql/checking permissions
COUNT_STAR: 57
SUM_TIMER_WAIT: 26501888880
MIN_TIMER_WAIT: 7317456
AVG_TIMER_WAIT: 464945295
MAX_TIMER_WAIT: 12858936792
...
*************************** 9. row ***************************
EVENT_NAME: stage/sql/closing tables
COUNT_STAR: 37
SUM_TIMER_WAIT: 662606568
MIN_TIMER_WAIT: 1593864
AVG_TIMER_WAIT: 17907891
MAX_TIMER_WAIT: 437977248
...
각 단계 요약 테이블에는 테이블이 이벤트를 집계하는 방법을 나타내는 하나 이상의 그룹화 컬럼이 있습니다. 이벤트 이름은 setup_instruments 테이블의 이벤트 장비 이름을 참조합니다.
+ events_stages_summary_by_account_by_event_name에는 EVENT_NAME, USER 및 HOST 열이 있습니다. 각 행은 지정된 계정 (사용자 및 호스트 조합) 및 이벤트 이름에 대한 이벤트를 요약합니다.
+ events_stages_summary_by_host_by_event_name에는 EVENT_NAME 및 HOST 컬럼이 있습니다. 각 행은 지정된 호스트 및 이벤트 이름에 대한 이벤트를 요약합니다.
+ events_stages_summary_by_thread_by_event_name에는 THREAD_ID 및 EVENT_NAME 열이 있습니다. 각 행은 주어진 스레드 및 이벤트 이름에 대한 이벤트를 요약합니다.
+ events_stages_summary_by_user_by_event_name에는 EVENT_NAME 및 USER 컬럼이 있습니다. 각 행은 주어진 사용자 및 이벤트 이름에 대한 이벤트를 요약합니다.
+ events_stages_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_stages_current에서 이벤트를 집계한다는 점을 제외하고는 대기 이벤트 요약 테이블에 있는 동일한 이름의 컬럼과 유사합니다.
• Tuncate Table 허용 여부.
TRUNCATE TABLE은 스테이지 요약 테이블에 허용됩니다. 다음과 같은 효과가 있습니다.
1. 계정, 호스트 또는 사용자별로 집계되지 않은 요약 테이블의 경우 잘림은 행을 제거하지 않고 요약 열을 0으로 재설정합니다.
2. 계정, 호스트 또는 사용자별로 집계 된 요약 테이블의 경우 잘림은 연결이없는 계정, 호스트 또는 사용자에 대한 행을 제거하고 나머지 행에 대해 요약 열을 0으로 재설정합니다.
또한 계정, 호스트, 사용자 또는 스레드별로 집계 된 각 단계 요약 테이블은 종속 된 연결 테이블의 절단 또는 events_stages_summary_global_by_event_name의 절단에 의해 내재적으로 절단됩니다.
▣ Performance Schema 목차.
[MySQL] Performance Schema 소개 및 사용방법
[MySQL] Performance Schema 상태 모니터링
[MySQL] Performance Schema 설정 테이블 - Setup 및 Instance 테이블
[MySQL] Performance Schema 모니터링 테이블 - Wait Event 및 Lock 테이블
[MySQL] Performance Schema 모니터링 테이블 - Stage Event 테이블
[MySQL] Performance Schema 모니터링 테이블 - Statement Event 테이블
[MySQL] Performance Schema 모니터링 테이블 - Transaction 테이블
[MySQL] Performance Schema 모니터링 테이블 - Connection 및 Connection Attribute 테이블
[MySQL] Performance Schema 모니터링 테이블 - User, 시스템, 상태 및 기타 테이블
[MySQL] Performance Schema 모니터링 테이블 - Summary(요약) 테이블
[MySQL] Performance Schema 모니터링 테이블 - Replication 테이블
'Databases > MySQL' 카테고리의 다른 글
[MySQL] Performance Schema 모니터링 테이블 - Transaction 테이블 (0) | 2021.01.24 |
---|---|
[MySQL] Performance Schema 모니터링 테이블 - Statement Event 테이블 (0) | 2021.01.24 |
[MySQL] Performance Schema 모니터링 테이블 - Wait Event 및 Lock 테이블 (0) | 2021.01.24 |
[MySQL] Performance Schema 설정 테이블 - Setup 및 Instance 테이블 (0) | 2021.01.24 |
[MySQL] Performance Schema 상태 모니터링 (0) | 2021.01.24 |