网站制作学习网Database→正文:mysql释放空间
字体:

mysql释放空间

Database 2025/10/21 10:34:51  点击:不统计

http://%77%77%77%2E%66%6F%72%61%73%70%2E%63%6E

 mysql在存储大量数据后,进行删除数据,mysql 占用了大量的存储空间,不释放空间,怎么让mysql 释放空间。
这里以8.0.33 版本为例
 
1. 首先确定表是独立的配置,在my.conf 中配置,确保开启单表独立表空间:
innodb_file_per_table = 1
 
2. 查看表有多少空间可以释放
   SELECT
table_schema,
table_name,
ROUND((data_length + index_length) / 1024 / 1024, 2) AS total_mb,
ROUND(data_free / 1024 / 1024, 2) AS free_mb
FROM information_schema.tables
WHERE table_schema = '[DbName]' AND table_name = '[TableName]';
   
 
3. 优化mysql释放空间 的两种方式:
(1)优化表:间会生成临时文件,确保有足够磁盘空间(至少等于原表大小)
OPTIMIZE TABLE [TableName];
这个会直接优化表,不会重建。目前测试不一定立即释放,第三天查看释放的空间。
 
 
(2)重建表:通过 强制复制重建表结构 的方式完全释放空间
ALTER TABLE amazon_advertised_product_reports_sd ENGINE=InnoDB, ALGORITHM=COPY;
会有表阻塞,效果立刻显示。
 
4. 对比:
对比项目OPTIMIZE TABLEALTER TABLE ... ENGINE=InnoDB, ALGORITHM=COPY
主要目的优化表、回收空间、更新统计信息重建表,释放空间
实际行为可能使用 INPLACE 或 COPY 方式强制使用 COPY 方式
锁类型 多数情况下仅轻微锁表,支持在线全程读锁,最后阶段短暂写锁
磁盘空间需求约等于表大小略大于表大小
释放空间效果 有时不彻底(尤其 INPLACE 模式)彻底释放 .ibd 空间
对统计信息的影响自动更新统计信息重建后需要手动 ANALYZE
可控性 自动判断优化算法明确指定 COPY,重建最彻底
转www.载for网站制作学习asp必.cn究

网站制作学习网Foasp.cn

·上一篇:mysql 同步检查错误常用sql >>    ·下一篇:网站制作学习网
推荐文章
最新文章