优化Mysql数据表的shell脚本

由于公司数据库中的数据量较大,定期对公司的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

时间: 2024-12-30 21:49:01

优化Mysql数据表的shell脚本的相关文章

linux下mysql如何自动备份shell脚本_linux shell

Linux 服务器上的程序每天都在更新 MySQL 数据库,于是就想起写一个 shell 脚本,结合 crontab,定时备份数据库.其实非常简单,主要就是使用 MySQL 自带的 mysqldump 命令. #!/bin/bash # Shell script to backup MySql database # To backup Nysql databases file to /backup dir and later pick up by your # script. You can s

Mysql数据表一直显示使用中的修复方法

打开phpmyadmin选择数据库查看,果然有3个表显示为"使用中".勾选之后进行"修复表",出现错误提示不能被修复. 于是接着从"分析表"."优化表"开始,均告失败.失败信息第一条:can't create new temp file 1.表损坏的原因分析 以下原因是导致mysql 表毁坏的常见原因: 1. 服务器突然断电导致数据文件损坏. 2. 强制关机,没有先关闭mysql 服务. 3. mysqld 进程在写表时被杀掉

MySQL数据表在phpmyadmin中的强制修复

是数据库就难免出错,出了错就肯定需要修复. phpmyadmin是很好的mysql管理工具,他里面就有针对某个数据库中某个表的修复功能.但是当这个表已经无法打开的时候就根本看不到这个操作(实际上是web连接). 其实随便找一个正常的数据库中正常的数据表,我们看看这个修复连接:http://localhost/phpmyadmin/sql.php?lang=zh-gb2312&server=1&db=mydb&table=mytable&goto=tbl_properties

如何把Excel导入mysql数据表的方法详解

方法一 把Excel导入mysql数据表,首先新建数据表,新建字段,字段数量和excel的表格列数量保持一致.然后把Excel文件另存为csv或者txt文本文件放在桌面上面然后执行如下命令: 一:保存为csv导入方法 load data local infile 'C:\\Users\\xwidea\\Desktop\\areaid_v.csv' into table 数据表名称 fields terminated by ',' 二:保存为txt文本文件导入方法 load data local

详解:MySQL数据表损坏的正确修复方案

修复以损坏的MySQL数据表的实际操作在实际中是我们经常用到的,以下的文章主要是介绍正确修复以损坏的MySQL数据表的实际操作步骤,以下就是正文的介绍,希望会给你带来一些帮助在此方面. 于断电或非正常关机而导致MySQL(和PHP搭配之最佳组合)数据库出 现错误是非常常见的问题.有两种方法,一种方法使用MySQL(和PHP搭配之最佳组合)的check table和repair table 的sql语句,另一种方法是使用MySQL(和PHP搭配之最佳组合)提供的多个myisamchk, isamc

将jsp页面的mysql数据表导出为excel文档

问题描述 将jsp页面的mysql数据表导出为excel文档 请问如何将jsp页面上的数据导出为文档,该数据表中的数据来自mysql数据库中的数据表,通过一个导出按钮导出,哪位大神可以给出示例代码,急求!! 解决方案 循环遍历你的数据,然后调用poi生成excel 例子http://blog.csdn.net/ptzrbin/article/details/8751293 解决方案二: 如何将MySQL数据表的结构导出到excel文件如何把JSP页面导出到Excel中?

如何修复超过1G的MYSQL 数据表 数据表在MYSQL中显示状态是“使用中”.

问题描述 如何修复超过1G的MYSQL 数据表 数据表在MYSQL中显示状态是"使用中". 如何修复超过1G的MYSQL 数据表 数据表在MYSQL中显示状态是"使用中",但是无法查看数据表中的数据,用REPAIR无法修复数据表 解决方案 先停止mysql服务,然后再尝试修复看看.

备份MYSQL数据表结构与数据库结构教程

备份MYSQL数据表结构 [root@Mysql ~]# /usr/local/mysql/bin/mysqldump -uroot -p'admin' -d mysql servers>/backup/mysql-structure-tables-$(date +%F).sql [root@Mysql ~]# egrep -v "^$|^--|*" /backup/mysql-structure-tables-2014-06-05.sql DROP TABLE IF EXIST

[小白技巧]如何在Linux上检查MySQL数据表的存储引擎类型

[小白技巧]如何在Linux上检查MySQL数据表的存储引擎类型 数据库表的类型? MySQl主要使用两种存储引擎:MyISAM 和 Innodb.MyISAM是非事务的,因此拥有读取更快,然而InnoDB完全支持细颗粒度的事务锁定(比如:commit/rollback).当你创建一张新的MySQL表时,你要选择它的类型(也就是存储引擎).如果没有选择,你就会使用与预设置的默认引擎. 如果你想要知道已经存在的MySQL数据表的类型,这里有几种方法达到. 方法一 如果你可以访问phpMyAdmin