據說我們應該在丟棄之前總是截斷一個大表,它會提高性能。這是真的嗎?我們是否需要在刪除之前截斷大表?
回答
這完全取決於您是否想要在出現問題時能夠回滾。
刪除數據會記錄對數據庫事務日誌的刪除,直到您提交更改。
截斷從表中刪除所有數據而不記錄這些日誌,因此可以在此過程中顯着提高性能。只要確定你知道你在做什麼,因爲沒有回頭路。
'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. 在發佈之前,我是否需要在android中刪除AdView的testDevice代碼?
- 7. PHP:在截斷表之前檢查文件是否存在
- 8. 在刪除它們所連接的元素之前,是否需要刪除javascript事件偵聽器?
- 9. OpenCV:我們是否需要刪除CvPoint以及如何去做?
- 10. 我是否需要刪除此對象?
- 11. 我是否需要刪除對象?
- 12. 我們是否需要ezpublish_legacy?
- 13. mysql截斷表vs刪除
- 14. 在刪除套接字之前是否需要解除綁定回調?
- 15. 刪除文件之前需要fsync嗎?
- 16. 我們是否需要在UIScrollView iOS 6+
- 17. 在Google表格中刪除之前需要使用構象框
- 18. ORA刪除/截斷
- 19. 我在使用它們之前是否需要初始化結構的值?
- 20. 判斷是否要刪除contentText
- 21. 您是否需要在設置新鬧鐘之前刪除鬧鐘
- 22. 我是否需要刪除臨時表上的索引?
- 23. 我應該更喜歡「截斷」還是「刪除」來刪除表格的內容?
- 24. element.parentNode.removeChild(element)之前是否需要element.removeEventListener()?
- 25. 我應該在刪除之前檢查一行是否存在?
- 26. 在調用popToRootViewController之前是否需要使我的NSTimer無效?
- 27. 我是否需要在合併之前進行排序
- 28. 我在安裝react-bootstrap之前是否需要安裝React
- 29. Python,在獲取它們之前刪除\\
- 30. 需要使用plpgsql函數截斷表
「是說」誰? – 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