博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
优化mysql数据表的shell脚本
阅读量:7234 次
发布时间:2019-06-29

本文共 1112 字,大约阅读时间需要 3 分钟。

由于公司数据库中的数据量较大,定期对公司的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@youxia194 shell]# cat optimize.sh 

#!/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

本文转自 trt2008 51CTO博客,原文链接:http://blog.51cto.com/chlotte/544147,如需转载请自行联系原作者
你可能感兴趣的文章
MySQL优化经验和方法汇总
查看>>
JAVA获取CLASSPATH路径--转
查看>>
Linux 下测试网卡性能命令iperf 的用法
查看>>
Qt编写自定义控件大全
查看>>
.yml是什么文件
查看>>
工作总结 datatable 里的 数据 rows Columns
查看>>
006-生命周期和插件
查看>>
Geometry Imager Viewport Filter
查看>>
mysql 批量kill locked 进程
查看>>
Unix 环境高级编程
查看>>
WinForm(VB.NET)获取当前登录的用户名
查看>>
C语言 百炼成钢17
查看>>
分库分表总结
查看>>
正则表达式的优先级
查看>>
利用mvn进行多环境配置
查看>>
JMS发布/订阅消息传送例子
查看>>
Oracle 基础系列之1.2 oracle的基本使用
查看>>
POJ 1149 PIGS (最大流)
查看>>
fitnesse - 一个简单的例子(slim)
查看>>
小白也能懂的手写体识别
查看>>