据说我们应该在丢弃之前总是截断一个大表,它会提高性能。这是真的吗?我们是否需要在删除之前截断大表?
回答
这完全取决于您是否想要在出现问题时能够回滚。
删除数据会记录对数据库事务日志的删除,直到您提交更改。
截断从表中删除所有数据而不记录这些日志,因此可以在此过程中显着提高性能。只要确定你知道你在做什么,因为没有回头路。
'drop table'不记录日志,是吗? OP没有提及“删除”。 – skaffman 2010-11-22 09:55:03
好点。我假设他在谈论截断本身的性能。你现在可以继续嘲笑我,把石头扔在我家里。 :) – Jason 2010-11-22 09:59:59
删除表可以记录日志 - 例如“闪回”可以恢复删除的表,如果已配置/启用。 – rogerdpack 2014-07-17 16:03:38
这可能是一个好主意,以重置高位标记。
好吧,不是真的 - 一旦桌子掉在那里*是*没有HWM。 – 2010-11-22 11:49:22
国际海事组织一般如果你只是想删除一个表,然后DROP
是适当的。它将以与TRUNCATE
相同的方式释放空间,并且它将具有原子化的优势(没有查询将有机会看到表“空”)。
从10g +开始,删除的表格不会立即被删除,但是:如果有足够的空间,它将被放入recycle bin。如果您先截断一个表,则不会有数据留在回收站中。这可能就是为什么你被告知首先截断(?)。
在任何情况下,如果你想绕过回收站,你可以发出DROP TABLE your_table PURGE
,这个声明将是原子的。
- 1. 在删除表之前,我们是否真的需要删除外键?
- 2. 为什么要在删除临时表之前立即截断?
- 3. 我是否需要在.Update()之前调用.AcceptChanges()之后删除操作
- 4. 我们可以在删除,删除和截断中回滚吗?
- 5. 在删除元素之前是否需要删除事件侦听器?
- 6. PHP:在截断表之前检查文件是否存在
- 7. 在删除它们所连接的元素之前,是否需要删除javascript事件侦听器?
- 8. OpenCV:我们是否需要删除CvPoint以及如何去做?
- 9. 我是否需要删除此对象?
- 10. mysql截断表vs删除
- 11. 在删除套接字之前是否需要解除绑定回调?
- 12. 在Google表格中删除之前需要使用构象框
- 13. ORA删除/截断
- 14. 您是否需要在设置新闹钟之前删除闹钟
- 15. 判断是否要删除contentText
- 16. 我在使用它们之前是否需要初始化结构的值?
- 17. 我是否需要删除临时表上的索引?
- 18. 我应该在删除之前检查一行是否存在?
- 19. element.parentNode.removeChild(element)之前是否需要element.removeEventListener()?
- 20. Python,在获取它们之前删除\\
- 21. 运行量角器之前,我们是否真的需要运行webdriver-manager start?
- 22. 是否需要删除静态向量?
- 23. 需要截断数据
- 24. 我们是否需要更新Orbeon?
- 25. 如果我们在推动之前通过所有测试,我们是否真的需要持续集成?
- 26. 在尝试删除eventHandler之前是否需要/建议检查它是否存在?
- 27. 截断或删除并创建表
- 28. 我们是否需要前端和后端的SSL证书?
- 29. 用户注销后我们是否需要删除会话变量?
- 30. 在MyISAM中删除之前,我应该检查表中是否存在行吗?
“是说”谁? – skaffman 2010-11-22 09:48:12
“提高性能” - 以什么方式?你是指整个数据库的性能,还是你的意思是删除该表会更快? – darioo 2010-11-22 09:50:01
另请参阅http://dba.stackexchange.com/questions/4163/why-use-both-truncate-and-drop – rogerdpack 2014-07-17 17:30:38