MySQL数据库入门:表的Optimize 优化
沉沙 2018-05-14 来源 : 阅读 1277 评论 0

摘要:optimize可以把分散(fragmented)存储的数据重新挪到一起(defragmentation),清除碎片,回收闲置的数据库空间。希望本文可以帮助读者MySql数据库入门。

一、optimize优化原理  

     对mysql进行大量增删改操作,磁盘上的空间没有被立即收回(数据空间、索引位),而是等待新的数据来填充空缺

    -- 这些空间可以被后续的insert操作利用,但如果记录是变长的,那么不是所有的空间都能被充分利用

    -- 形成碎片,影响磁盘IO

    optimize可以把分散(fragmented)存储的数据重新挪到一起(defragmentation),清除碎片,回收闲置的数据库空间

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

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

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

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

    对于BDB表,OPTIMIZE TABLE目前被映射到ANALYZE TABLE上

    对于InnoDB表,OPTIMIZE TABLE被映射到ALTER TABLE上,这会重建表。重建操作能更新索引统计数据并释放成簇索引中的未使用的空间。请参见13.5.2.1节,“ANALYZE TABLE语法”。使用?skip-new或?safe-mode选项可以启动mysqld。

二、限制

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

    这个操作会使MySql锁定表

    InnoDB引擎的表分为共享表空间和独享表空间表,可以通过show variables like 'innodb_file_per_table'来查看是否开启独享表空间。 独享表空间的表是无法进行optimize操作的, 因为独享表空间的表当数据删除时会重组索引并释放对应的空间

三、实践

    不需要经常运行,删除大量数据、更新大量变长数据时也仅仅需要每周后者一月运行一次


本文由职坐标整理发布,更多相关知识,请关注职坐标数据库MySQL频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 1
看完这篇文章有何感觉?已经有2人表态,50%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程