TRUNCATE 在 10gig 以上的大表上需要很长时间吗

TRUNCATE 在 10gig 以上的大表上需要很长时间吗

我想知道在生产服务器上大约 12gb 的表上使用 phpMyAdmin 的empty功能是否是个好主意。我不想造成太多延迟,但需要释放一些磁盘空间。

这需要在基于 Debian 的 DELL 服务器上完成:

MySQL 5.1.49 Intel Xeon X3430 @ 2.40Ghz 4GB 内存

假设 phpMyAdmin 用于TRUNCATE清空表。我是否需要几分钟甚至几小时来截断表,或者这是一个类似于删除表的相当快的过程?

答案1

如果有事务锁定表架构,TRUNCATE TABLE命令将几乎立即完成。到目前为止,我等待的最长时间是 0.1 秒,用于截断 25GB 的表。

无论如何,TRUNCATE TABLE命令不会对其他维护操作以外的任何操作产生不良副作用。如果服务器无法获取必要的独占锁,它将被阻塞 - 但不是因为它需要大量的 IO 或处理 - 它只是在等待轮到它。

相关内容