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