Database

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

컨텐츠 정보

본문

서버에 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 "====================================================================================";

관련자료

댓글 0
등록된 댓글이 없습니다.
Today's proverb
적절한 대답을 얻으려면 얼마쯤 시간이 지난 뒤에 생각해 봐야 한다.