+ -
当前位置:首页 → 问答吧 → 請協助看mysql指令作用~

請協助看mysql指令作用~

时间:2010-10-01

来源:互联网

来源:http://hi.baidu.com/brucelei/blog/item/db22b2cbcfa0411abf09e6b1.html


  1 ------------------analyze_table.sh---------------------------
  2 #!/bin/bash
  3 #
  4 #  mysql
  5 #  --batch              don't use history
  6 #  --skip-column-names  don't write colum name
  7 #  -e                   execute the statment and quit
  8 #
  9 MYSQL_DIR=/usr
 10 USERNAME=root
 11 PASSWORD=root
 12 SOCKET="/var/run/mysqld/mysqld.sock"
 13 DBNAMES="`$MYSQL_DIR/bin/mysql --user=$USERNAME --password=$PASSWORD \
 14                  --socket=$SOCKET --batch --skip-column-names -e "show databases"| sed 's/ /%/g'`"
 15
 16 for DB in $DBNAMES;do
 17         echo "start analyze database:"$DB"......"
 18         TABLENAMES="`$MYSQL_DIR/bin/mysql --user=$USERNAME --password=$PASSWORD  \
 19         --socket=$SOCKET --batch --skip-column-names --database=$DB -e "show tables"| sed 's/ /%/g'`"
 20
 21         for TABLE in $TABLENAMES; do
 22                 $MYSQL_DIR/bin/mysql --user=$USERNAME --password=$PASSWORD \
 23                          --socket=$SOCKET --batch --skip-column-names --database=$DB -e "analyze table $TABLE"
 24         done
 25 done
 26 exit 0
~

请问PM们,原作者是说mysql 执行一段时间就会变慢,然后使用上述语法定期执行,但不懂的地方,执行上面为什么就可以改善mysql  变慢的状况,是什么原理

作者: joe0120   发布时间: 2010-10-01

http://dev.mysql.com/doc/refman/5.1/en/analyze-table.html

http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html

简单的来说..那个 script 把所有的资料表都抓出来 analyze 了...

作者: Darkhero   发布时间: 2010-10-01

MySQL 在删除资料时, 并不会释放出磁碟空间, 当删除很多资料时, 可以用OPTIMIZE TABLE(analyze table) 来把资料defrag 一下, 并且会释放出磁碟空间
原本要重100个Sector捞出资料,经过defrag后,可能只要30个Sector
而由硬碟捞资料又是资料库最慢的动作,所以一段时间defrag

作者: kengkeng   发布时间: 2010-10-18