본문 바로가기
DataBase/MySQL

[본문스크랩] optimize table 관련..

by 백룡화검 2010. 4. 24.
개발자의 경우 MySQL을 쓰는데 과연 optimize 명령어를 아시는 분은 얼마나 될까 생각을 해봤습니다. 최소한 50%는 모른다고 봅니다.
사실 DB를 사용한다... 혹은 안다고 하시는 정도면 기본 쿼리 명령어라고 할 수 있는 select, insert, update, delete를 비롯하여 create, drop, alter 정도일 겁니다.

웹 프로그래밍을 한다면 이 정도만 알아도 충분히 사이트를 구축할 수 있습니다. 하지만 조금 더 생각하면 DB에서도 잦은 엑세스로 인해 불필요한 공간을 그대로 유지하는 경우도 있습니다.
예를 들어 윈도에서 디스크 정리를 하는 것도 마찬가지입니다.

그렇다고 매일 Optimize를 할 필요는 없습니다. 테이블 내용을 매번 바꾸는 것도 아니고 성능이 눈에 띄게 향상되는 것도 아니기 때문입니다. 하지만 가끔씩은 해주는 것이 좋습니다.

MySQL의 문서를 보면 다음과 같이 설명되어 있습니다.
OPTIMIZE TABLE은 테이블의 대부분을 삭제하거나 가변 길이 레코드를 가지는 테이블(VARCHAR 컬럼,BLOB 컬럼, 또는 TEXT 컬럼을 가지는 테이블)에 많은 변경을 했을 경우에 사용합니다. 삭제된 레코드는 링크된 리스트에 보관 유지되어 원래 레코드 위치는 후속 INSERT 조작에 의해 재이용됩니다. OPTIMIZE TABLE 를 사용해 미사용 영역을 정리해 데이터 파일을 최적화할 수가 있습니다.

대부분의 경우,OPTIMIZE TABLE을 실행할 필요는 없습니다.가변 길이 레코드에 갱신을 많이 실시하는 경우에서도, 주 또는 달에 한 번, 특정의 테이블에만 실행하는 것으로 충분합니다.

http://dev.mysql.com/doc/mysql/en/OPTIMIZE_TABLE.html