【mysql】MYISAM表一括圧縮

992 ワード

MYISAM表の圧縮については、myisampackとmyisamchkを使って完成できます.(mysisampackが終わったら、mysisamchkをしなければならないので、圧縮されたテーブルを使うことができません.読み取り専用です.).その詳細な使い方は公式文書を参照してください. http://dev.mysql.com/doc/refman/5.1/zh/client-side-scripts.html.
この二つの操作は慎重に使う必要があります.圧縮する前に、mysqldが閉じているか、或いは圧縮したいテーブルは他のsql操作がないことを確認します.また、圧縮プロセスはcpuリソースを占有しますので、サーバの空き状態で行うことをお勧めします.
下記はあるデータベースの下の表圧縮を実現するためのshellプロセスです.
#!/bin/bash
data_dir="/data/mysql/my_dbname/"
filelist=`ls $data_dir`
echo "MYISAMPACK BEGIN."
for filename in $filelist
do
    idx=`expr match "$filename" ".*.MYI"`
    if [[ $idx>0 ]]
    then
        /usr/bin/myisampack $data_dir$filename
    fi
done

echo "MYISAMPACK End. MYISAMCHK BEGIN."

for filename in $filelist
do
    idx=`expr match "$filename" ".*.MYI"`
    if [[ $idx>0 ]]
    then
        /usr/bin/myisamchk -r -o -f --sort-index --analyze $data_dir$filename
    fi
done
echo "MYISAMCHK END."