Mysql의 Alter Table의 종료 시간을 확인하는 SQL

최근 취급하는 데이터량이 늘어 1억 건을 넘어왔기 때문에 AlterTable을 기다리는 것이 힘들다.
그래서 언제 끝나는지 얼마나의 속도로 실행하고 있는지 조사하는 쿼리를 만들어 보았다.

데이터량이 너무 많으면 처리 시간 지나도 끝나지 않을 때가 있지만, 기준이라는 것.
※1억건이나 처리하면 몇 시간 지나도 끝나지 않았던 적이 있다.

performance_schema 사용


[mysqld]
performance_schema=on

Alter Table 모니터링 사용


UPDATE setup_instruments SET ENABLED = 'YES' WHERE NAME LIKE 'stage/innodb/alter%';
UPDATE setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE '%stages%';

Alter Table 실행


Alter Table ○○○○○○○○○○○○○○

Alter Table 실행 중에 다음 쿼리 실행


SELECT
    EVENT_NAME as "実行中プロセス",
    WORK_COMPLETED as "完了",
    WORK_ESTIMATED as "全体",
    CONCAT(@PROGRESS := WORK_COMPLETED/WORK_ESTIMATED * 100 , "%" ) as "進捗率",
    @ELAPSED :=  ( TIMER_END - TIMER_START ) / POWER(10, 12)  as "実行時間",
    WORK_COMPLETED / @ELAPSED as "処理量/秒",
    @REMAIN := FLOOR( @ELAPSED * ( 100 / @PROGRESS ) - @ELAPSED ) AS "残時間",
    DATE_FORMAT( NOW() + INTERVAL @REMAIN SECOND , "%m月%d日 %H:%i:%s" ) AS "終了予測時刻"
FROM
    `performance_schema`.events_stages_current;

샘플


예상 시간을 알면, 후에는 그때까지 자러 가면 좋기 때문에 편리!

참고



14.16.1 Monitoring ALTER TABLE Progress for InnoDB Tables Using Performance Schema
htps : //에서 v. mysql. 이 m/도 c/레 f만/5. 7/엔/모니와 r-아로 r-b-ぇ-ぺr 푹 r만세-s ぇ마. HTML
MySQL 5.7.6의 Performance Schema에서 InnoDB의 ALTER TABLE 진행 어떻습니까?
htps : // 잘 0825. bgs포 t. jp / 2015/03 / mysql - 576 페르 후르 만세 - 치마 마이 오 dba r. HTML

좋은 웹페이지 즐겨찾기