![TRUNCATE 在 10gig 以上的大表上需要很长时间吗](https://linux22.com/image/726196/TRUNCATE%20%E5%9C%A8%2010gig%20%E4%BB%A5%E4%B8%8A%E7%9A%84%E5%A4%A7%E8%A1%A8%E4%B8%8A%E9%9C%80%E8%A6%81%E5%BE%88%E9%95%BF%E6%97%B6%E9%97%B4%E5%90%97.png)
我想知道在生产服务器上大约 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 或处理 - 它只是在等待轮到它。