mysql大表空间整理注意点

1.需求

订单表 j_trade_order有6000多万数据,需要迁移3000多万到另外一张表,迁移结束后需要整理表空间

2.OPTIMIZE

整理j_trade_order表空间(InnoDB/MyISAM引擎均支持)

复制代码
OPTIMIZE TABLE j_trade_order;

●注意事项:

  1. 执行期间会对表加 排他锁(阻塞所有读写操作),对于 114.79GB 的大表,锁表时间极长,不建议在生产业务高峰期执行;

  2. 执行后会生成临时表,需要预留至少 2 倍于表大小的磁盘空间(即至少 230GB 空闲磁盘),否则会执行失败。

3.ALTER TABLE

整理j_trade_order表空间,重建表结构和索引,释放碎片空间

ALTER TABLE j_trade_order ENGINE = InnoDB;

● 执行后,表的存储引擎不变(仍为 InnoDB),但表空间会被重新规整,查询性能和磁盘利用率都会提升;

● 对于 114.79GB 的大表,执行时间较长(视服务器 IO 性能而定),建议在业务低峰期执行。

4.验证表数据完整性

对比整理前后的表数据量,确认无丢失

SELECT COUNT() as count FROM j_trade_order;

5.小结

  1. 生产环境首选 ALTER TABLE j_trade_order ENGINE = InnoDB;(在线操作,影响小,效果好);
  2. 备选 OPTIMIZE TABLE j_trade_order;(兼容 MyISAM,但锁表时间长,需预留足够磁盘空间);
  3. 大表操作前必须备份数据、检查磁盘空间,执行后验证碎片率和数据完整性;
  4. 建议在业务低峰期执行,避免影响线上服务
相关推荐
standxy15 分钟前
即时库存同步实战:从旺店通拉取库存详情落库 MySQL 的完整策略
数据库·集成·电商
麦壳饼15 分钟前
SonnetDB:工业 IoT 中的 PID 历史分析与 PLC 协作
数据库·sonnetdb
吹什么轩21 分钟前
MySQL 事务管理:从 ACID 到 MVCC,一篇讲透
数据库·mysql
时间售卖铺1 小时前
Oracle DQL精髓:从基础到高级实战
运维·数据库·云原生·oracle
paopaokaka_luck1 小时前
基于springboot+vue的益暖微光公益服务平台(DeepSeek公益助手、善款信息追溯、志愿服务积分闭环、ECharts运营分析、活动状态自动流转)
java·前端·javascript·spring boot·mysql·架构·echarts
m0_639906941 小时前
MySQL 锁机制详解|表锁、行锁、意向锁,死锁成因与解决方案
数据库·mysql
进击的荆棘1 小时前
MySQL——在ubuntu环境下安装MySQL
数据库·mysql·ubuntu
hey you~2 小时前
云呼叫中心坐席自动分配实战:ACD 策略、Redis+Lua 实现与排查清单
数据库·redis·lua·云呼叫中心·acd·坐席分配·坐席状态机
夜雪一千2 小时前
MySQL 数据字典如何获得
数据库·mysql
系统集成-鹰翔2 小时前
ERP推单数据库怎么备份:SQLite WAL模式下只复制db文件为什么可能漏任务
javascript·数据库·经验分享·后端