程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 優化Mysql數據表的shell腳本

優化Mysql數據表的shell腳本

編輯:MySQL綜合教程

由於公司數據庫中的數據量較大,定期對公司的mysql數據庫中的數據表進行優化操作(關於optimize的描述如下所示),數據庫中有300多張數據表,手工去操作顯然不太現實,用腳本來執行效率還是很不錯的,腳本如下: mysql手冊中關於 OPTIMIZE 的描述: OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] … 如果您已經刪除了表的一大部分,或者如果您已經對含有可變長度行的表(含有VARCHAR, BLOB或TEXT列的表)進行了很多更改,則應使用 OPTIMIZE TABLE。被刪除的記錄被保持在鏈接清單中,後續的INSERT操作會重新使用舊的記錄位置。您可以使用OPTIMIZE TABLE來重新 利用未使用的空間,並整理數據文件的碎片。 使用方法:sh optimize.sh word [root@shellec shell]# #!/bin/sh time_log=/opt/optimize_time   sum=$# if [ "$sum" -eq 0 ] then echo "Error: no parameter chosed" exit 1 fi   for i in $*;do echo "optimize database $i starting ..." tables=$(/usr/bin/mysql $i -udevuser -pdevuser -e "show tables" | grep -v "Tables" > /opt/$i) tablelist=$(cat /opt/$i)   echo "optimize database $i starting ................" >> $time_log echo "$i start at $(date +[%Y/%m/%d/%H:%M:%S])" >> $time_log   for list in $tablelist do echo $list /usr/bin/mysql $i -utaobao -padmin -e "optimize table $list" done   echo "$i end at $(date +[%Y/%m/%d/%H:%M:%S])" >> $time_log echo >> $time_log done

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved