Loading...
MySQL 9.5 Reference Manual 9.5의 29.12.5 Performance Schema Stage Event Tables의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
29.12.5.1 The events_stages_current Table 29.12.5.2 The events_stages_history Table 29.12.5.3 The events_stages_history_long Table
Performance Schema는 stage를 계측합니다. stage는 statement 실행 과정에서의 단계로, 예를 들어 statement를 파싱하거나, 테이블을 열거나, filesort 연산을 수행하는 것 등이 있습니다. stage는 SHOW PROCESSLIST에 표시되는 스레드 상태 또는 Information Schema PROCESSLIST 테이블에서 볼 수 있는 상태에 해당합니다. stage는 상태 값이 변경될 때 시작되고 종료됩니다.
event 계층 구조에서 wait event는 stage event 안에 중첩되고, stage event는 statement event 안에, statement event는 transaction event 안에 중첩됩니다.
다음 테이블들은 stage event를 저장합니다:
events_stages_current: 각 스레드에 대한 현재 stage event.
events_stages_history: 스레드별로 종료된 가장 최근 stage event.
events_stages_history_long: 모든 스레드에 걸쳐 종료된 가장 최근 stage event.
다음 섹션에서는 stage event 테이블을 설명합니다. 또한 stage event에 대한 정보를 집계하는 summary 테이블도 있습니다. 자세한 내용은
Section 29.12.20.2, “Stage Summary Tables”를 참조하십시오.
세 개의 stage event 테이블 간의 관계에 대한 추가 정보는
Section 29.9, “Performance Schema Tables for Current and Historical Events”를 참조하십시오.
stage event를 수집할지 여부를 제어하려면, 관련 인스트루먼트와 컨슈머의 상태를 설정합니다:
setup_instruments 테이블에는 이름이 stage로 시작하는 인스트루먼트가 포함되어 있습니다. 이러한 인스트루먼트를 사용하여 개별 stage event 클래스 수집을 활성화하거나 비활성화할 수 있습니다.
setup_consumers 테이블에는 현재 및 과거 stage event 테이블 이름에 해당하는 컨슈머 값이 포함되어 있습니다. 이러한 컨슈머를 사용하여 stage event 수집을 필터링할 수 있습니다.
statement 진행률 정보를 제공하는 인스트루먼트를 제외하고, stage 인스트루먼트는 기본적으로 비활성화되어 있습니다. 예:
1mysql> SELECT NAME, ENABLED, TIMED 2 FROM performance_schema.setup_instruments 3 WHERE NAME RLIKE 'stage/sql/[a-c]'; 4+----------------------------------------------------+---------+-------+ 5| NAME | ENABLED | TIMED | 6+----------------------------------------------------+---------+-------+ 7| stage/sql/After create | NO | NO | 8| stage/sql/allocating local table | NO | NO | 9| stage/sql/altering table | NO | NO | 10| stage/sql/committing alter table to storage engine | NO | NO | 11| stage/sql/Changing master | NO | NO | 12| stage/sql/Checking master version | NO | NO | 13| stage/sql/checking permissions | NO | NO | 14| stage/sql/cleaning up | NO | NO | 15| stage/sql/closing tables | NO | NO | 16| stage/sql/Connecting to master | NO | NO | 17| stage/sql/converting HEAP to MyISAM | NO | NO | 18| stage/sql/Copying to group table | NO | NO | 19| stage/sql/Copying to tmp table | NO | NO | 20| stage/sql/copy to tmp table | NO | NO | 21| stage/sql/Creating sort index | NO | NO | 22| stage/sql/creating table | NO | NO | 23| stage/sql/Creating tmp table | NO | NO | 24+----------------------------------------------------+---------+-------+
statement 진행률 정보를 제공하는 stage event 인스트루먼트는 기본적으로 ENABLED 및 TIMED 상태입니다:
1mysql> SELECT NAME, ENABLED, TIMED 2 FROM performance_schema.setup_instruments 3 WHERE ENABLED='YES' AND NAME LIKE "stage/%"; 4+------------------------------------------------------+---------+-------+ 5| NAME | ENABLED | TIMED | 6+------------------------------------------------------+---------+-------+ 7| stage/sql/copy to tmp table | YES | YES | 8| stage/sql/Applying batch of row changes (write) | YES | YES | 9| stage/sql/Applying batch of row changes (update) | YES | YES | 10| stage/sql/Applying batch of row changes (delete) | YES | YES | 11| stage/innodb/alter table (end) | YES | YES | 12| stage/innodb/alter table (flush) | YES | YES | 13| stage/innodb/alter table (insert) | YES | YES | 14| stage/innodb/alter table (log apply index) | YES | YES | 15| stage/innodb/alter table (log apply table) | YES | YES | 16| stage/innodb/alter table (merge sort) | YES | YES | 17| stage/innodb/alter table (read PK and internal sort) | YES | YES | 18| stage/innodb/buffer pool load | YES | YES | 19| stage/innodb/clone (file copy) | YES | YES | 20| stage/innodb/clone (redo copy) | YES | YES | 21| stage/innodb/clone (page copy) | YES | YES | 22+------------------------------------------------------+---------+-------+
stage 컨슈머는 기본적으로 비활성화되어 있습니다:
1mysql> SELECT * 2 FROM performance_schema.setup_consumers 3 WHERE NAME LIKE 'events_stages%'; 4+----------------------------+---------+ 5| NAME | ENABLED | 6+----------------------------+---------+ 7| events_stages_current | NO | 8| events_stages_history | NO | 9| events_stages_history_long | NO | 10+----------------------------+---------+
서버 시작 시 stage event 수집을 제어하려면, my.cnf 파일에 다음과 같은 줄을 사용합니다:
1[mysqld] 2performance-schema-instrument='stage/%=ON' 3performance-schema-consumer-events-stages-current=ON 4performance-schema-consumer-events-stages-history=ON 5performance-schema-consumer-events-stages-history-long=ON
1[mysqld] 2performance-schema-instrument='stage/%=OFF' 3performance-schema-consumer-events-stages-current=OFF 4performance-schema-consumer-events-stages-history=OFF 5performance-schema-consumer-events-stages-history-long=OFF
런타임에 stage event 수집을 제어하려면,
setup_instruments 및
setup_consumers 테이블을 업데이트합니다:
1UPDATE performance_schema.setup_instruments 2SET ENABLED = 'YES', TIMED = 'YES' 3WHERE NAME LIKE 'stage/%'; 4 5UPDATE performance_schema.setup_consumers 6SET ENABLED = 'YES' 7WHERE NAME LIKE 'events_stages%';
1UPDATE performance_schema.setup_instruments 2SET ENABLED = 'NO', TIMED = 'NO' 3WHERE NAME LIKE 'stage/%'; 4 5UPDATE performance_schema.setup_consumers 6SET ENABLED = 'NO' 7WHERE NAME LIKE 'events_stages%';
특정 stage event만 수집하려면, 해당 stage 인스트루먼트만 활성화하십시오. 특정 stage event 테이블에 대해서만 stage event를 수집하려면, stage 인스트루먼트는 활성화하되 원하는 테이블에 해당하는 stage 컨슈머만 활성화하십시오.
event 수집 구성에 대한 추가 정보는
Section 29.3, “Performance Schema Startup Configuration” 및
Section 29.4, “Performance Schema Runtime Configuration”를 참조하십시오.
Performance Schema stage event 테이블에는, 함께 사용될 때 각 행에 대한 stage 진행률 표시기를 제공하는 두 개의 컬럼이 포함됩니다:
WORK_COMPLETED: stage에 대해 완료된 작업 단위 수
WORK_ESTIMATED: stage에 대해 예상되는 작업 단위 수
어떤 인스트루먼트에 대해 진행률 정보가 제공되지 않으면 각 컬럼은 NULL입니다. 정보가 제공되는 경우 그 해석은 전적으로 인스트루먼트 구현에 따라 달라집니다. Performance Schema 테이블은 진행률 데이터를 저장하기 위한 컨테이너를 제공하지만, 메트릭 자체의 의미론에 대해서는 아무런 가정도 하지 않습니다:
“작업 단위”는 실행 중에 시간이 지남에 따라 증가하는 정수 메트릭으로, 처리된 바이트, 행, 파일 또는 테이블 수와 같은 것입니다. 특정 인스트루먼트에 대한 “작업 단위”의 정의는 데이터를 제공하는 인스트루멘테이션 코드에 맡겨집니다.
WORK_COMPLETED 값은 인스트루먼트된 코드에 따라 한 번에 하나 또는 여러 단위씩 증가할 수 있습니다.
WORK_ESTIMATED 값은 인스트루먼트된 코드에 따라 stage 동안 변경될 수 있습니다.
stage event 진행률 표시기에 대한 인스트루멘테이션은 다음 동작 중 하나를 구현할 수 있습니다:
이것이 가장 일반적인 경우로, 진행률 데이터가 제공되지 않습니다. WORK_COMPLETED 및
WORK_ESTIMATED 컬럼은 둘 다
NULL입니다.
WORK_COMPLETED 컬럼만 의미가 있습니다.
WORK_ESTIMATED 컬럼에 대해서는 데이터가 제공되지 않으며, 이 컬럼은 0을 표시합니다.
모니터링되는 세션에 대해
events_stages_current 테이블을 조회함으로써 모니터링 애플리케이션은 현재까지 수행된 작업의 양을 보고할 수 있지만, stage가 완료에 가까운지 여부는 보고할 수 없습니다. 현재 이 방식으로 인스트루먼트된 stage는 없습니다.
WORK_COMPLETED 및
WORK_ESTIMATED 컬럼이 둘 다 의미가 있습니다.
이 유형의 진행률 표시기는 나중에 설명되는 테이블 복사 인스트루먼트처럼, 정의된 완료 기준을 가진 연산에 적합합니다. 모니터링되는 세션에 대해
events_stages_current 테이블을 조회함으로써, 모니터링 애플리케이션은 현재까지 수행된 작업의 양을 보고할 수 있으며,
WORK_COMPLETED /
WORK_ESTIMATED 비율을 계산하여 stage의 전체 완료 비율을 보고할 수 있습니다.
stage/sql/copy to tmp table 인스트루먼트는 진행률 표시기가 어떻게 동작하는지 보여 줍니다. ALTER TABLE statement가 실행되는 동안
stage/sql/copy to tmp table stage가 사용되며, 이 stage는 복사할 데이터의 크기에 따라 잠재적으로 오랜 시간 동안 실행될 수 있습니다.
테이블 복사 작업은 (모든 행이 복사되는) 정의된 종료 조건을 가지며,
stage/sql/copy to tmp table stage는 한정 진행률 정보를 제공하도록 인스트루먼트되어 있습니다. 사용되는 작업 단위는 복사된 행 수이고,
WORK_COMPLETED 및
WORK_ESTIMATED는 둘 다 의미가 있으며, 그 비율은 작업의 완료 비율을 나타냅니다.
인스트루먼트와 관련 컨슈머를 활성화하려면 다음 statement를 실행합니다:
1UPDATE performance_schema.setup_instruments 2SET ENABLED='YES' 3WHERE NAME='stage/sql/copy to tmp table'; 4 5UPDATE performance_schema.setup_consumers 6SET ENABLED='YES' 7WHERE NAME LIKE 'events_stages_%';
진행 중인 ALTER TABLE statement의 진행률을 확인하려면,
events_stages_current 테이블을 조회합니다.
29.12.4 Performance Schema Wait Event Tables
29.12.6 Performance Schema Statement Event Tables