博客
关于我
Mysql学习专栏之八(从删除操作分析Mysql中的表收缩)
阅读量:572 次
发布时间:2019-03-11

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

数据库文件大小没有变化的原因主要在于数据页分裂导致的空洞。以下是详细的分步解释和解决方案:

  • 数据页分裂与空洞形成

    • InnoDB引擎使用B+树存储数据,删除记录后仅标记为删除,不释放空间。
    • 插入数据时,如果数据分布不均衡,会导致索引分裂,形成空洞。
    • 空洞的存在使得文件大小未减少。
  • 重建表的方法

    • 使用临时表导入数据:新建表B,将表A的数据逐行导入,替换表A。
    • 使用alter命令重建表:即刻重建表,需确保在操作期间无数据写入。
    • 使用Online DDL重建表:允许在重建期间继续进行增删改查,减少性能影响。
    • 使用gh-ost工具:通过读取binlog日志,创建虚拟表来重建数据,避免业务中断。
  • 优点分析

    • gh-ost工具利于异步执行,不影响性能;支持中断和快速测试。
  • 总结

    • 数据页分裂造成空洞,重建表可填补这些空洞,释放空间。
    • 使用Online DDL或gh-ost是高效且安全的方法。
  • 转载地址:http://auhvz.baihongyu.com/

    你可能感兴趣的文章
    hadoop 分布式文件系统的计算和高可用
    查看>>
    【Linux】VMware Workstation 不可恢复错误: (vcpu-0)
    查看>>
    VS中 fatal error LNK1123: 转换到 COFF 期间失败 的解决方法
    查看>>
    关于Img标签在固定宽高的容器内部以图片比例缩放存在
    查看>>
    pyhton---异常处理的终极语法、网页访问基本读取、网页访问异常处理
    查看>>
    linux下编程出现 对'sem_wait'未定义的引用解决方案
    查看>>
    前端框架(react+umi+dva+ant design pro )攻克: 二、react 父子组件通信(二)
    查看>>
    ant design pro v5去掉右边content区域的水印
    查看>>
    web_求和(练习)
    查看>>
    JavaScript——使用iterator遍历迭代map,set集合元素
    查看>>
    IAR调试卡顿的解决办法
    查看>>
    应用程序无法启动,应用程序的并行配置不正确完美解决方法
    查看>>
    【IntelliJ IDEA 2019.2】idea如何开启自动编译
    查看>>
    强大的文字处理器——Nisus Writer Pro
    查看>>
    如何轻松适应从Windows到MacOS的过渡!Mac新手入门指南
    查看>>
    fcpx插件:25个假日主题专业设计
    查看>>
    fcpx插件:Block Party for Mac(53个视频转场插件)
    查看>>
    代码绘制五角形
    查看>>
    Course Schedule II
    查看>>
    线程总结
    查看>>