2013-12-10 3 views

답변

1

예, 모든 색인은 새 표의 정의에 포함됩니다.

다음
mysql> create table test.sometable 
    (x int primary key, y int, z int, unique key (y), key (z,y)); 

하는 PT-온라인 스키마 변화에 테이블을 변경하려고 :

$ pt-online-schema-change D=test,t=sometable --alter "ENGINE=InnoDB" --execute 

는 지금은 여전히이 있는지 확인하기 위해 테이블을 검사

테스트 용이 인덱스는 다음으로 시작했습니다 :

mysql> SHOW CREATE TABLE test.sometable\G 

그러나 질문에 "워밍업"이라는 문구가 자주 포함됩니다 버퍼 풀에있는 테이블의 페이지를 가지고 있습니다. ALTER는 페이지를 변경하기 때문에 디스크로가는 도중에 버퍼 풀에 있어야합니다. ALTER가 끝날 때까지 버퍼 풀에 많은 페이지가 있습니다. 당신은 MySQL의 5.5 및 5.6에 존재 이노 측정에 대한 새로운 INFORMATION_SCHEMA 테이블과이를 테스트 할 수 있습니다

: 테이블 버퍼 풀의 용량보다 큰 경우

mysql> SELECT TABLE_NAME, SPACE, COUNT(*) AS num_pages 
    FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE_LRU 
    WHERE TABLE_NAME = '`mydatabase`.`mytable`' 
    GROUP BY TABLE_NAME, SPACE; 
-- Result shows a lot of pages loaded 

mysql> ALTER TABLE mydatabase.mytable ENGINE=INNODB; -- dummy table restucture 

mysql> SELECT TABLE_NAME, SPACE, COUNT(*) AS num_pages 
    FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE_LRU 
    WHERE TABLE_NAME = '`mydatabase`.`mytable`' 
    GROUP BY TABLE_NAME, SPACE; 
-- Result shows a lot of pages still loaded, but the space id has changed 

을하지만 경우에, 당신은 종료 이 서브 세트가 해당 테이블에 대한 예열 된 v 퍼 풀에 대해 최적인지 여부는 보장되지 않습니다.

pt-online-schema-change를 사용할 때도 같은 결과가 발생합니다. 테이블 공간 ID가 변경되지만, 변경된 후 버퍼 풀에 많은 페이지가 있습니다.