mysql check 长度_详解MYSQL 分析表、检查表和优化表

概述

今天分享下之前整理的关于mysql方面内容,主要包括下面三方面内容:

1. 对表进行优化 ( 优化表主要作用是消除删除或者更新造成的空间浪费)

2. 对表进行分析(分析关键字的分布, 分析并存储MyISAM和BDB表中键的分布)

3. 对表进行检查(检查表的错误,并且为MyISAM更新键的统计内容)


定期分析表

语法:ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name]

本语句用于分析和存储表的关键字分布。在分析期间,使用一个读取锁定对表进行锁定。这对于MyISAM, BDB和InnoDB表有作用。对于MyISAM表,本语句与使用myisamchk -a相当。

MySQL使用已存储的关键字分布来决定,当您对除常数以外的对象执行联合时,表按什么顺序进行联合。

6a82313199eb0cd7f3e964d34779412f.png

定期检查表

语法:CHECK TABLE tbl_name [, tbl_name] [option]

option = {QUICK | FAST | MEDIUM | EXTENDED | CHANGED}

检查一个或多个表是否有错误。CHECK TABLE对MyISAM和InnoDB表有作用。对于MyISAM表,关键字统计数据被更新。

bd79d44ca8cf1b5b9d8b59fee69c3d64.png

CHECK TABLE也可以检查视图是否有错误,比如在视图定义中被引用的表已不存在。

我们为上面的表a创建一个视图

b879da19ec9f3466155cccee2ff72278.png

然后CHECK一下该视图,发现没有问题

33dfadc88be916ee0770861fa4c8d063.png

删掉视图依赖的表

ffd7dcc424b0c09f861bfe80a97ba056.png

再CHECK一下刚才的视图,发现报错了

aa78f153d1a9b94c11614bc96b58f4e9.png

定期优化表

语法:OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name]

如果已经删除了表的一大部分,或者如果已经对含有可变长度行的表(含有VARCHAR, BLOB或TEXT列的表)进行了很多更改,则应使用OPTIMIZE TABLE。被删除的记录被保持在链接清单中,后续的INSERT操作会重新使用旧的记录位置。

可以使用OPTIMIZE TABLE来重新利用未使用的空间,并整理数据文件的碎片。

在多数的设置中根本不需要运行OPTIMIZE TABLE。即使对可变长度的行进行了大量的更新,也不需要经常运行,每周一次或每月一次即可,只对特定的表运行。

OPTIMIZE TABLE只对MyISAM, BDB和InnoDB表起作用。

对于MyISAM表,OPTIMIZE TABLE按如下方式操作:

如果表已经删除或分解了行,则修复表。

如果未对索引页进行分类,则进行分类。

如果表的统计数据没有更新(并且通过对索引进行分类不能实现修复),则进行更新。

ad4e4b031c840716e819969caf3bae7a.png

注意:无论是ANALYZE,CHECK还是OPTIMIZE在执行期间将对表进行锁定,因此这些操作要在数据库不繁忙的时候执行。


篇幅有限,关于ANALYZE,CHECK还是OPTIMIZE表方面的内容就介绍到这,大家有空的话也可以去做下实验。

后面会分享更多关于DBA方面的内容,感兴趣的朋友可以关注下!!

74acc65196423c12563661146b20529b.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值