mysql Database 테이블 모두 최적화하기

정찬호
http://www.rootman.co.kr/
http://www.rootman.co.kr/bbs/view.php?id=linux&page=1&sn1=&divpage=1&category=9&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=1243

서버에 Mysql 데이터 양이 많이 쌓이고, 쿼리 작업이 활발히 일어날경우,
이에 따른 db 의 공간 부담율도 커지게 됩니다.

이에 따라, 양이 많을 경우 하나하나 최적화를 해줄수도 없고,
아래와 같이 간략하게 쉘을 돌려봤습니다.
전엔 php 쉘로 돌렸는데 다소 느린것 같더군요.
bash 로 변경해 봤습니다.

혹, 필요하신분들 있으시면 가져다가, 쓰세요.
화일명으로 저장후 실행권한 주시고, /etc/cron.daily 에 넣어 주세요.
하루에 한번씩 돌리면 좋을듯 하네요.

조금이라도 도움이 되었으면 하는 바램으로….

—————————————————————–

#!/bin/sh
# 2004/03/20
# http://www.rootman.co.kr
# 제목 : mysql Database 테이블 모두 최적화하기
# 변경사항 : mysql root 변경
# ————————————————–
#
DB_cnt=0;
DB_pass=”루트패스워드”
Total_Table=0;
DB_str=`mysql -u root -p${DB_pass} -e”show databases”`;
for DB_for in ${DB_str}
do
if [ ${DB_for} != “Database” ]; then
TABLE_cnt=0;
Table_str=`mysql -u root -p${DB_pass} -e”show tables” ${DB_for}`;
for TABLE_for in ${Table_str}
do
Op_Str=`mysql -u root -p${DB_pass} -e”optimize table $TABLE_for” ${DB_for}`;
echo ” – DB명 : ${DB_for} –> ${TABLE_for} “;
let TABLE_cnt=TABLE_cnt+1;
done
echo “——————————————> 테이블명 : ${TABLE_cnt} 최적화완료.”;
let Total_Table=Total_Table+${TABLE_cnt};
sleep 1;
let DB_cnt=DB_cnt+1;
fi;
done
echo “====================================================================================”;
echo “- 호스트명 : `hostname` 에 대한 DB ${DB_cnt}개, 토탈테이블 ${Total_Table} 최적화 완료.”;
echo “====================================================================================”;