mysql表优化、分析、检查和修复的方法详解

本文实例讲述了mysql表优化、分析、检查和修复的方法。分享给大家供大家参考,具体如下:

一、mysqlcheck简介

这里介绍对数据库的管理常规就是进行预防性的维护,以及修复那些出现问题的内容。

mysqlcheck客户端可以检查和修复MyISAM表。它还可以优化和分析表。

进行检查和修复通常具有四个主要的任务:

mysqlcheck的功能类似myisamchk,但其工作不同。主要差别是当mysqld服务器在运行时必须使用mysqlcheck,而myisamchk应用于服务器没有运行时。使用mysqlcheck的好处是不需要停止服务器来检查或修复表。使用myisamchk修复失败是不可逆的。

  1. 对表进行优化

  2. 对表进行分析

  3. 对表进行检查

  4. 对表进行修复

Mysqlcheck为用户提供了一种方便的使用SQL语句CHECK TABLE、REPAIR
TABLE、ANALYZE TABLE和OPTIMIZE
TABLE的方式。它确定在要执行的操作中使用使用哪个语句,然后将语句发送到要执行的服务器上。

一、对表进行优化

同其它客户端比较,mysqlcheck有一个特殊特性。重新命名二进制可以更改检查表的默认行为(–check)。如果你想要一个工具默认可以修复表的工具,只需要将mysqlcheck重新复制为mysqlrepair,或者使用一个符号链接mysqlrepair链接mysqlcheck。如果调用mysqlrepair,可按照命令修复表。

优化表有很多方式实现: OPTIMIZE TABLE语句、mysqlcheck工具或myisamchk

下面的名可用来更改mysqlcheck的默认行为:
mysqlrepair 
默认选项为–repair

为什么优化?随着MySQL的使用,包括BLOB和VARCHAR字节的表将变得比较繁冗,因为这些字段长度不同,对记录进行插入、更新或删除时,会占有不同大小的空间,记录就会变成碎片,且留下空闲的空间。像具有碎片的磁盘,会降低性能,需要整理,因此要优化。

mysqlanalyze 
默认选项为–analyze

  1. 利用OPTIMIZE语句对表进行优化

    # mysqlOPTIMIZE TABLE 表名

mysqloptimize 
默认选项为–optimize

这样就对表名进行了优化。

二、mysqlcheck的使用

  1. 利用mysqlcheck对表进行优化

1.有3种方式来调用mysqlcheck:

mysqlcheck可进行优化外,还可执行大量的检查和修复任务。

复制代码 代码如下:

# mysqlcheck -o 数据库名 表名 -uroot -p111111 # mysqlcheck -o 数据库名 表名1 表名2 -uroot -p111111 # mysqlcheck -o 数据库名 -uroot -p111111 

shell> mysqlcheck[options] db_name [tables]
shell> mysqlcheck[options] —database DB1 [DB2 DB3…]
shell> mysqlcheck[options] –all–database

  1. 利用myisamchk对表进行优化

    # myisamchk –quick –check-only-changed –sort-index –analyze 表名# myisamchk -r 表名 # myisamchk -r /usr/local/mysql/data/testblog/article

如果没有指定任何表或使用—database或–all–database选项,则检查整个数据库。

以上操作需在服务器关闭或没有与服务器互操作的时候,可以使用myisamchk命令行工具。myisamchk是最老的方法。必须在正确位置上运行myisamchk,或者指定表所在的路径。

2.修复所有的数据库

注意:在优化过程中,表会被锁住,因此不要在忙时进行优化操作。同样,需要有足够的空间才能进行OPTIMIZE
TABLE。如果没有磁盘空间,MySQL将不能进行优化,表也无法使用。

复制代码 代码如下:

优化是对包含MyISAM表的数据库的常规管理事务中一个重要环节,应该定期进行。

mysqlcheck -a -c -o -r -m –all-databases -uroot -p 

二、对表进行分析

使用上面的命令即可最佳化所有数据库

对表的定期分析可以改善性能,且应该成为常规维护工作的一部分。因为通过更新表的索引信息对表进行分析,可改善数据库性能。

参数含意:

有三种方法可以对表进行分析:

复制代码 代码如下:

  1. 连接到MySQL时,使用ANALYZE TABLE语句

  2. 利用mysqlcheck命令行工具

  3. 利用myisamchk命令行工具

    # ANALYZE TABLE 表名;# mysqlcheck -a 数据库名 表名 -uroot -p111111# mysqlcheck -a 数据库名 表名1 表名2 -uroot -p111111

澳门金沙vip,-a = Analyse given tables.
-c = Check table for errors
-o = Optimise table
-r = Can fix almost anything except unique keys that aren’t unique
-m = –medium-check

如果试图对不支持分析操作的表进行分析,那操作将无法进行

注:MYSQL版本为5.5时,命令中请删除-o

# myisamchk -a /usr/local/mysql/data/数据库/表名

3.修复指定的数据库

更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》、《MySQL数据库锁相关技巧汇总》及《MySQL常用函数大汇总》

复制代码 代码如下:

希望本文所述对大家MySQL数据库计有所帮助。

mysqlcheck -o -r -uroot -p888888 dataname
mysqlcheck -hlocalhost -auto-repair -uroot -p****** dataname

4.附带简单讲一下mysqlcheck使用详解
用法:

复制代码 代码如下:

mysqlcheck [OPTIONS] database [tables]
mysqlcheck [OPTIONS] –databases DB1 [DB2 DB3…]
mysqlcheck [OPTIONS] –all-databases

常用选项:
-A 所有数据库
-a 分析指定的表
-c 检查库或表
-r 修复库或表
-o 优化指定的表
-h mysql服务主机
-P 端口
-u 用户名
-p 密码
–auto-repair    修复已损坏表

三、获得mysqlcheck.exe

通过mysql.com下载你对应版本号的mysql安装包(noinstall
无需安装版本)。安装完mysql数据库即安装了此命令,在路径mysql\mysql
server 5.0\bin下。

四、mysqlcheck参数详解:

—help,-?

显示帮助消息并退出。

–all–database,-A

检查所有数据库中的所有表。与使用—database选项相同,在命令行中命名所有数据库。

–all-in-1,-1

不是为每个表发出一个语句,而是为命名数据库中待处理的所有表的每个数据库执行一个语句。

–analyze,-a

分析表。

–auto-repair

如果某个被检查的表破坏了,自动修复它。检查完所有表后自动进行所有需要的修复。

–character-sets-dir=path

字符集的安装目录。参见5.10.1节,“数据和排序用字符集”。

–check,-c

检查表的错误。

–check-only-changed,-C