2009년 9월 14일 월요일

테이블관리3- 관리SQL

OPTIMIZE TABLE

OPTIMIZE TABLE은 테이블 최적화를 수행한다.

OPTIMIZE [LOCAL|NO_WRITE_TO_BINLOG] TABLE 테이블명 [,테이블명] ..

동작테이블: MyISAM, InnoDB
실행에 필요한 권한: SELECT && INSERT

OPTIMIZE를 InnoDB에 실행하면 OPTIMIZE TABLE은 ALTER TABLE에 맵된다.
MyISAM의 경우는 분산되어 기록된 레코드를 정리해 인덱스페이지를 소트하고 테이블의 통계정보를 갱신한다.
NO_WRITE_TO_BINLOG키워드나 LOCAL키워드가 지정되지 않는한 OPTIMIZE TABLE은 바이너리 로그에 기록된다.
또, mysqld명령어 옵션으로 --skip-new나 --safe-mode가 지정된 경우 OPTIMIZE TABLE은 ALTER TABLE을 실행한다. 이때 모든 테이블형에 대해서 동작하게 된다.

REPAIR TABLE
REPAIR TABLE은 테이블 복구를 수행한다.

REPAIR [LOCAL|NO_WRITE_TO_BINLOG] TABLE 테이블명 [,테이블명] .. [QUICK] [EXTENDED] [USE_FRM]

동작테이블: MyISAM, ARCHIVE, CSV(5.1.9-beta이후)

실행에 필요한 권한: SELECT && INSERT
myisamchk옵션: --recover

옵션 QUICK: MYD파일을 변경하지 않는다. myisamchk명령어를 사용한 경우 myisamchk --recover --quick과 같은 결과를 얻을 수 있다.

옵션 EXTENDED: 레코드별로 인덱스를 생성한다. myisamchk --safe-recover와 같은 결과를 얻을 수 있다.

옵션 USE_FRM: MYI파일이 없는 경우에도 사용할 수 있는 옵션이다. .frm파일과 .MYD파일에서 .MYI파일을 작성한다.