我有一个需要在生产环境中删除的100G+无害数据库表。我正在努力做到这一点,不间断地服务。
该表不再被写入,需要丢弃以释放空间。我的MySQL版本是5.1.52。
当这个表被删除时,对性能的预期影响是什么?我正在考虑通过删除行然后进行优化来慢慢缩小它。但是,如果不是更多的话,优化会使表成为磁盘IO密集型的副本。
发布于 2012-02-10 16:17:01
批量删除,然后进行优化,这确实是最糟糕的事情了。每个删除都将作为事务执行,每个优化都将有效地重新记录巨型表的剩余内容。
把它想成这样。你有一个5G表,删除0.5G,优化(复制4.5gig文件),删除0.5gigs(复制4.0gig文件)等等。
实际上,与每个优化相关的开销不仅仅是在文件系统上复制那么多数据,因为这相当于将所有这些行插入到一个新的表中,以及随之而来的所有事务开销。
删除表应该是最有效的方法。
编辑:下面是一些彻底的基准测试
http://www.mysqlperformanceblog.com/2011/04/20/drop-table-performance/
https://dba.stackexchange.com/questions/12641
复制相似问题