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. 建议在业务低峰期执行,避免影响线上服务
相关推荐
码农阿豪9 小时前
Python 操作金仓数据库的完全指南(上篇):连接管理与高可用
开发语言·数据库·python
计算机学姐9 小时前
基于微信小程序的校园失物招领管理系统【uniapp+springboot+vue】
java·vue.js·spring boot·mysql·信息可视化·微信小程序·uni-app
雾岛听风6919 小时前
Sql server
数据库·sql·sqlserver
落魄江湖行10 小时前
孤舟笔记 并发篇十一 行锁、间隙锁、临键锁傻傻分不清?MySQL InnoDB的锁其实就这三板斧
mysql·java并发·春招·孤舟笔记
X566110 小时前
SQL注入防御技术方案_基于正则表达式的输入清洗
jvm·数据库·python
爱学习 爱分享10 小时前
docker 本地装瀚高 4.5 数据库
数据库·docker·容器
zhoupenghui16810 小时前
Mysql插入数据时,怎么让自增的主键续接表当前最大ID+1
数据库·mysql·auto increment
LabVIEW开发10 小时前
LabVIEW数据库事务操作
数据库·labview·labview知识·labview功能·labview程序
技术钱10 小时前
Flask-SQLAIchemy和Flask-Migrate扩展的配置与使用
数据库·python·flask
song85460113410 小时前
MYSQL优化器的主要的优化策略及其示例
数据库·mysql