MySQL速度变慢,怎么办?【转载】

MYSQL 在运行一段时间后,速度变慢,其中一个原因是一段时间后,随着数据表中内容的改变,表的素引的统计数据(statistics)过期,使得优化器 (Optimizer)在执行查询(query)操作时不能提供最优查询策略。为此需要定期对数据表,尤其是经常执行insert,update, delete等数据操纵语句的数据表要定期运行"ANALYZE TABLE"命令更新表的统计信息(statistics)。编辑了一个小的bash script,放在linux的crontab中定期执行。

下面是bash script 和sql analyze table 的script.


------------------analyze_table.sh---------------------------
#!/bin/bash
MYSQL_DIR=/usr/local/mysql
USERNAME=root
PASSWORD=root
SOCKET="/tmp/mysql.sock"
DBNAMES="`$MYSQL_DIR/bin/mysql --user=$USERNAME --password=$PASSWORD --socket=$SOCKET --batch --skip-column-names -e "show databases"| sed 's/ /%/g'`"
for DB in $DBNAMES;do
echo "start analyze database:"$DB"......"
TABLENAMES="`$MYSQL_DIR/bin/mysql --user=$USERNAME --password=$PASSWORD --socket=$SOCKET --batch --skip-column-names --database=$DB -e "show tables"| sed 's/ /%/g'`"
for TABLE in $TABLENAMES; do
$MYSQL_DIR/bin/mysql --user=$USERNAME --password=$PASSWORD --socket=$SOCKET --batch --skip-column-names --database=$DB -e "analyze table $TABLE"
done
done
exit 0

 

posted @ 2012-09-24 11:20  巴别塔  阅读(2435)  评论(0编辑  收藏  举报