我们即将部署一些代码来截断我们的 mysql 4 数据库中的表。我们这样做是为了解决我们在临时表中看到(并且广为人知)的一些复制“怪异”。当我在代码审查中看到这一点时,我的下意识反应是“不”,但我无法支持它。
所以,问题是:我只是反应过度了吗?你有没有在 mysql 中使用 truncate table 遇到任何我们应该尽量避免的陷阱?在复制环境中截断如何?
截断(至少在 Sybase 中,不是 100% 确定 mySql)
不写入日志。意思是,没有恢复也没有回滚。
不会自动重建索引统计信息,这意味着优化器在查看给定表时可能无法正常工作。
有关 mySQL 的具体细节/比较,请参阅本文