删除大表时预期的性能影响是什么

sre*_*mer 7 performance mysql-5.1

我有一个 100G+ 的 innodb 表,需要在生产环境中删除。我正在尝试在不中断服务的情况下执行此操作。

该表不再被写入,需要删除以释放空间。我的 MySQL 版本是 5.1.52。

删除此表时对性能的预期影响是什么?我正在考虑通过删除行然后优化来慢慢缩小它。但是,优化会复制表,因此它与磁盘 IO 密集型一样,甚至更多。

atx*_*dba 2

批量删除然后优化确实是最糟糕的事情。每次删除都将作为事务执行,每次优化将有效地重新复制巨型表的剩余内容。

这样想吧。您有一个 5 gig 表,删除 0.5 gig,优化(复制 4.5 gig 文件),删除 0.5 gig(复制 4.0 gig 文件)等。

实际上,与每个优化相关的开销不仅仅是在文件系统上复制那么多数据,因为它相当于将所有这些行插入到新表中以及随之而来的所有事务开销。

删除表应该是最有效的方法

编辑:这里有一些彻底的基准测试

http://www.mysqlperformanceblog.com/2011/04/20/drop-table-performance/