Loading...
MySQL 9.5 Reference Manual 9.5의 17.16.1 Monitoring ALTER TABLE Progress for InnoDB Tables Using Performance Schema의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
InnoDB 테이블에 대해 ALTER TABLE 진행 상황은
Performance Schema를 사용하여 모니터링할 수 있습니다.
ALTER TABLE의 서로 다른 phase를 나타내는 stage event는 일곱 개가 있습니다.
각 stage event는 전체 ALTER TABLE 작업에 대해,
서로 다른 phase를 진행함에 따라 누적된 WORK_COMPLETED 및
WORK_ESTIMATED 의 running total을 보고합니다.
WORK_ESTIMATED 는 ALTER TABLE 이 수행하는 모든 작업을 고려하는
공식을 사용하여 계산되며, ALTER TABLE
처리 중에 수정될 수 있습니다.
WORK_COMPLETED 및 WORK_ESTIMATED 값은
ALTER TABLE 이 수행하는 모든 작업의 추상적 표현입니다.
발생 순서대로, ALTER TABLE
stage event는 다음을 포함합니다:
stage/innodb/alter table (read PK and internal sort): 이 stage는 ALTER TABLE 이
기본 키 읽기 phase에 있을 때 활성 상태입니다.
WORK_COMPLETED=0 으로 시작하고,
WORK_ESTIMATED 는 기본 키의 추정 페이지 수로 설정됩니다.
stage가 완료되면, WORK_ESTIMATED 는
기본 키의 실제 페이지 수로 업데이트됩니다.
stage/innodb/alter table (merge sort): 이
stage는 ALTER TABLE 작업에 의해 추가된 각 인덱스에 대해
반복됩니다.
stage/innodb/alter table (insert): 이
stage는 ALTER TABLE 작업에 의해 추가된 각 인덱스에 대해
반복됩니다.
stage/innodb/alter table (log apply index):
이 stage에는 ALTER TABLE 이 실행되는 동안 생성된
DML 로그를 적용하는 작업이 포함됩니다.
stage/innodb/alter table (flush): 이
stage가 시작되기 전에 WORK_ESTIMATED 는
플러시 리스트의 길이를 기반으로 보다 정확한 추정값으로
업데이트됩니다.
stage/innodb/alter table (log apply table):
이 stage에는 ALTER TABLE 가 실행되는 동안 생성된
동시 DML 로그를 적용하는 작업이 포함됩니다.
이 phase의 duration은 테이블 변경 정도에 따라 달라집니다.
테이블에서 동시 DML 이 실행되지 않은 경우 이 phase는 즉시 완료됩니다.
stage/innodb/alter table (end): 이 stage에는
플러시 phase 이후에 발생한, 테이블에서
ALTER TABLE 이 실행되는 동안 수행된
DML 재적용과 같은 남은 작업이 포함됩니다.
참고
InnoDB ALTER TABLE stage event는 현재로서는
공간 인덱스 추가를 반영하지 않습니다.
다음 예제는 ALTER TABLE 진행 상황을 모니터링하기 위해
stage/innodb/alter table% stage event instrument와
관련 consumer 테이블을 활성화하는 방법을 보여줍니다.
Performance Schema stage event instrument 및 관련 consumer에 대한
정보는
Section 29.12.5, “Performance Schema Stage Event Tables”를 참조하십시오.
stage/innodb/alter% instrument를 활성화합니다:1mysql> UPDATE performance_schema.setup_instruments 2 SET ENABLED = 'YES' 3 WHERE NAME LIKE 'stage/innodb/alter%'; 4Query OK, 7 rows affected (0.00 sec) 5Rows matched: 7 Changed: 7 Warnings: 0
events_stages_current,
events_stages_history,
events_stages_history_long.1mysql> UPDATE performance_schema.setup_consumers 2 SET ENABLED = 'YES' 3 WHERE NAME LIKE '%stages%'; 4Query OK, 3 rows affected (0.00 sec) 5Rows matched: 3 Changed: 3 Warnings: 0
ALTER TABLE 작업을 실행합니다.
이 예에서는 employees 샘플 데이터베이스의 employees 테이블에
middle_name 컬럼을 추가합니다.1mysql> ALTER TABLE employees.employees ADD COLUMN middle_name varchar(14) AFTER first_name; 2Query OK, 0 rows affected (9.27 sec) 3Records: 0 Duplicates: 0 Warnings: 0
events_stages_current 테이블을
쿼리하여 ALTER TABLE 작업의 진행 상황을 확인합니다.
표시되는 stage event는 현재 진행 중인
ALTER TABLE phase에 따라 달라집니다.
WORK_COMPLETED 컬럼은 완료된 작업을 보여줍니다.
WORK_ESTIMATED 컬럼은 남은 작업에 대한
추정치를 제공합니다.1mysql> SELECT EVENT_NAME, WORK_COMPLETED, WORK_ESTIMATED 2 FROM performance_schema.events_stages_current; 3+------------------------------------------------------+----------------+----------------+ 4| EVENT_NAME | WORK_COMPLETED | WORK_ESTIMATED | 5+------------------------------------------------------+----------------+----------------+ 6| stage/innodb/alter table (read PK and internal sort) | 280 | 1245 | 7+------------------------------------------------------+----------------+----------------+ 81 row in set (0.01 sec)
[`events_stages_current`](https://dev.mysql.com/doc/refman/9.5/en/performance-schema-events-stages-current-table.html "29.12.5.1 The events_stages_current Table") 테이블은
[`ALTER TABLE`](https://dev.mysql.com/doc/refman/9.5/en/alter-table.html "15.1.11 ALTER TABLE Statement") 작업이 완료된 경우 empty set을 반환합니다.
이 경우, 완료된 작업에 대한 event data를 보기 위해
[`events_stages_history`](https://dev.mysql.com/doc/refman/9.5/en/performance-schema-events-stages-history-table.html "29.12.5.2 The events_stages_history Table")
테이블을 확인할 수 있습니다. 예를 들면 다음과 같습니다:
1mysql> SELECT EVENT_NAME, WORK_COMPLETED, WORK_ESTIMATED 2 FROM performance_schema.events_stages_history; 3+------------------------------------------------------+----------------+----------------+ 4| EVENT_NAME | WORK_COMPLETED | WORK_ESTIMATED | 5+------------------------------------------------------+----------------+----------------+ 6| stage/innodb/alter table (read PK and internal sort) | 886 | 1213 | 7| stage/innodb/alter table (flush) | 1213 | 1213 | 8| stage/innodb/alter table (log apply table) | 1597 | 1597 | 9| stage/innodb/alter table (end) | 1597 | 1597 | 10| stage/innodb/alter table (log apply table) | 1981 | 1981 | 11+------------------------------------------------------+----------------+----------------+ 125 rows in set (0.00 sec)
위에서 볼 수 있듯이,
`ALTER TABLE` 처리 중에 `WORK_ESTIMATED` 값이 수정되었습니다.
초기 stage 완료 후의 estimated work는 1213입니다.
`ALTER TABLE` 처리가 완료되면,
`WORK_ESTIMATED` 는 실제 값인 1981로 설정됩니다.
17.16 InnoDB Integration with MySQL Performance Schema
17.16.2 Monitoring InnoDB Mutex Waits Using Performance Schema