본문 바로가기
DataBase/MySQL

[본문스크랩] MySQL 튜닝을 위한 지침 - 5 -

by 백룡화검 2010. 4. 24.

5. PROCEDURE analyse() 사용은 언제?

 

이건 어느 정도 데이터가 쌓인 후에 테이블의 데이터 타입이 잘 정의되었는지 확인해 볼때 사용하면 좋을 내용이다. 사용법은? select * from 테이블명 PROCEDURE analyse(); 뭐 이런식으로 쓴단다. 이거 설명구지 않해도 될거 같다. 돌려보니까 대충 보인다. 참고로 맨 마지막 열에  MySQL 에서 진단하고 추천하는 데이터 타입이 나온다. 보면 꼭 딱 맞다고 하긴 뭐하지만 그래도 참고할만 한거 같다.

 

6. OPTIMIZE TABLE은 언제?
 
OPTIMIZE TABLE 이 놈도 역시 여러가지로 쓸모가 많은 명령어다.
일반적으로 데이터베이스라는 넘이 한번 데이터가 들어가면 변경 없이 쭈욱 가는 경우는 거의 드물다.
INSERT, UPDATE, DELETE 등의 다양한 변형이 가해지게 되고, 이때마다 대부분은 인덱스도 새로 생성이된다.
그런데, 결국 이런 데이터들이 저장되는 최종 목적지는 보통 하드 드라이브인거다.
따라서, 이런 다양한 변형으로 인해 defragment되게 되는거다.
윈도우에서 조각모음 한번 안해 본 사람은 별로 없을거 같다. 이 OPTIMIZE TABLE 이라는 넘이 결국은 이 조각모음하고 비슷한 넘이라는거다.
이해가 간단하게 되었나?
그럼 MySQL에서 예를 든 내용을 가지고 그 효과를 알아보자.
100만 개의 Row를 갖는 테이블이 있고 이때의 테이블 사이즈는 215.8M, 인덱스가 차지하는 용량은 37.6M 인 테이블이 있다고 한다.
여기에서 매 5개의 Row 당 한개씩 데이터를 지운 후에, 다시 250,000 Row를 추가했다. 이렇게 됐을때 사이즈는 테이블이 218.8M, 인덱스가 35.6M 이었다고 한다.
이제 이걸 OPTIMIZE TABLE 했단다. 그랬더니 테이블 사이즈가 175.7M, 인덱스가 33.6M 이 됐다고 한다. 놀랍다.
아무튼 이 명령어는 정기점검때마다 한번씩 돌려주는게 좋다. 단, 운영중에는 조심하는게 좋다.