我对执行重大删除后回收存储空间有疑问。 删除的记录不会释放存储空间。我们是否必须每次都执行
optimize table tablename
查询来释放已删除的存储空间?有什么配置可以帮助我们释放存储空间吗?
我们正在使用 InnoDB 表
优化查询:https://dev.mysql.com/doc/refman/5.7/en/optimize-table.html
这是
PARTITIONing
的案例。
PARTITION BY RANGE(TO_DAYS(...))
DROP PARTITION
和 REORGANIZE PARTITION
的脚本。注意:我建议每小时分区,这样表中一次最多可以保存 25 小时的数据。
更多讨论:分区
DELETE
在桌子上留下可用空间;空闲空间将被后续 INSERTs
重用。如果您坚持使用非分区方法,我建议您有一个连续运行的任务,重复执行
DELETE ...
WHERE .. < NOW() - 24 HOUR
LIMIT 1000`
和在该键上有一个索引。更多:大删除如果您需要扫描
PRIMARY KEY
而不是使用特殊索引,它还展示了一种技术。