博客
关于我
Mysql学习专栏之八(从删除操作分析Mysql中的表收缩)
阅读量:581 次
发布时间: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/

    你可能感兴趣的文章
    mysql 权限整理记录
    查看>>
    mysql 权限登录问题:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
    查看>>
    MYSQL 查看最大连接数和修改最大连接数
    查看>>
    MySQL 查看有哪些表
    查看>>
    mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
    查看>>
    MySql 查询以逗号分隔的字符串的方法(正则)
    查看>>
    MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
    查看>>
    mysql 查询数据库所有表的字段信息
    查看>>
    【Java基础】什么是面向对象?
    查看>>
    mysql 查询,正数降序排序,负数升序排序
    查看>>
    MySQL 树形结构 根据指定节点 获取其下属的所有子节点(包含路径上的枝干节点和叶子节点)...
    查看>>
    mysql 死锁 Deadlock found when trying to get lock; try restarting transaction
    查看>>
    mysql 死锁(先delete 后insert)日志分析
    查看>>
    MySQL 死锁了,怎么办?
    查看>>
    MySQL 深度分页性能急剧下降,该如何优化?
    查看>>
    MySQL 深度分页性能急剧下降,该如何优化?
    查看>>
    MySQL 添加列,修改列,删除列
    查看>>
    mysql 添加索引
    查看>>
    MySQL 添加索引,删除索引及其用法
    查看>>
    mysql 状态检查,备份,修复
    查看>>