2011-12-28 3 views
3

약 600k 행을 포함하는 MySQL에 InnoDB 테이블이 있습니다. 400k + 행을 삭제 한 후에는 OPTIMIZE를 실행해야합니다.테이블 복사시 최적화 실행 중입니까?

그러나이 작업 중에 테이블이 잠길 것이므로 해당 시간에 사이트를 사용할 수 없게됩니다. 그래서, 내 질문은 : 라이브 데이터베이스 테이블에 최적화를 실행해야합니까 (200k 미만의 행이 약간 있음)? 또는 해당 테이블의 복사본을 만들 수 있으며 OPTIMIZE를 해당 복사본에 실행 한 다음 두 테이블의 이름을 변경하면 데이터가 다시 라이브 테이블에 복사됩니다.

+0

200k 행은 그다지 그리 많지 않습니다. 당신은 상당히 빨리 완료되어야하지만, @ gbn이 어떻게 진행되는지 말해야합니다. –

답변

6

복사본을 만드는 경우 CREATE TABLE..AS SELECT..을 수행하면 이미 최적화되어 있어야합니다. 별도로 실행하지 않아도됩니다.

그러나 200KB 행을 복사하여 새 테이블로 유지 한 다음 테이블 이름을 바꾸는 것이 좋습니다. 이 방법은 단계가 적고 모든 라운드 작업이 적습니다.

CREATE TABLE MyTableCopy AS 
SELECT * 
FROM myTable 
WHERE (insert Keep condition here); 

RENAME TABLE 
    myTable TO myTable_DeleteMelater, 
    MyTableCopy TO myTable; 
+0

완벽하게 일했습니다! 감사! – libeco