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. 建议在业务低峰期执行,避免影响线上服务
相关推荐
百结2142 小时前
Mysql数据库操作
数据库·mysql·oracle
keep one's resolveY3 小时前
时区问题解决
数据库
Leinwin3 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
qq_417695053 小时前
机器学习与人工智能
jvm·数据库·python
漫随流水3 小时前
旅游推荐系统(view.py)
前端·数据库·python·旅游
ego.iblacat3 小时前
MySQL 服务基础
数据库·mysql
Maverick065 小时前
Oracle Redo 日志操作手册
数据库·oracle
攒了一袋星辰5 小时前
高并发强一致性顺序号生成系统 -- SequenceGenerator
java·数据库·mysql
W.D.小糊涂5 小时前
gpu服务器安装windows+ubuntu24.04双系统
c语言·开发语言·数据库
云贝教育-郑老师5 小时前
【OceanBase 的多租户架构是怎样的?有什么优势?】
数据库·oceanbase