在數據庫中插入一行可以爲其添加數據。在數據庫中刪除一行可用空間嗎?或者只是在不更改已用空間量的情況下刪除該行?刪除數據庫中的某行會使該數據庫釋放空間嗎?
回答
對於SQL,這取決於誰的立場。例如,如果您可以在磁盤空間不足之前插入一百萬行,如果刪除它們的一半,則可以再次插入五百萬行。 (忽略事務日誌記錄 - 想象一下日誌記錄是在其他地方完成的)
數據文件長大後不會縮小。因此數據文件使用的驅動器空間不可用於操作系統或任何其他應用程序。直到數據庫收縮操作完成。這將重新安排文件內的數據以釋放驅動器上的空間以供OS或其他應用程序使用。
Ask Tom說甲骨文:
當您從表中刪除該數據 - 塊會去到 空閒列表該表(假設塊 被釋放下跌的空間量低於pctused)。這些塊將用於 後續插入和更新到此表中。
當您從索引中刪除數據時 - 如果索引條目 打開的塊現在爲「空」 - 該塊將返回到索引結構中任何位置使用的freelist。否則,該塊保留在原來的位置,並且 自然會進入該塊的數據(因爲它在 b *樹中的位置)將會到達那裏。
刪除時有效地重用空間。您的數據庫不會 顯示dba_free_space中的任何新的可用空間 - 它將在更多的塊上有更多的塊,包括空閒列表中的 以及索引結構中的更多空洞。
只是爲了清楚起見:這適用於Oracle數據庫。 – 2012-02-24 21:19:31
你說得對,我沒有看清標籤。 – roymustang86 2012-02-24 21:25:39
當您使用Oracle時,可以使用specific commands立即回收已刪除行中的空間。否則它將保留爲新的行,如@ oymustang86提到的。
- 1. 從sqlite3數據庫刪除某些行
- 2. 根據mysql數據庫中列的數量刪除某些行
- 3. 無法刪除空間數據庫中的元數據條目
- 4. 從MySQL數據庫中刪除數據會使其運行速度更快嗎?
- 5. 數據庫過期後從數據庫中刪除會話?
- 6. 刪除數據後,有什麼工具可用於釋放MySQL數據庫中分配的空間?
- 7. 當我導出MySQL數據庫時,數據庫導出後會刪除數據庫中的所有內容嗎?
- 8. 刪除行會加快數據庫的性能嗎?
- 9. 刪除按鈕,刪除數據庫行
- 10. H2數據庫釋放鎖
- 11. 刪除數據庫
- 12. 刪除數據庫中的行
- 13. 刪除Informix數據庫中的行
- 14. 刪除數據庫中的特定行
- 15. 空間數據庫
- 16. 刪除/刪除Teradata中的數據庫
- 17. 使用OleDb從數據庫刪除行
- 18. 使用jsp從數據庫刪除行
- 19. 重置數據庫,從數據庫中刪除seeds.rb數據
- 20. Android:從數據庫中刪除數據
- 21. PHP從數據庫中刪除數據
- 22. 從數據庫中刪除
- 23. 爲什麼Firebase數據庫中的數據會自動刪除?
- 24. 刪除數據之間的空白行
- 25. 刪除空格從列在數據庫
- 26. 無法從數據庫中刪除行
- 27. 從MySQL數據庫中刪除一行
- 28. 從mysql數據庫中刪除行
- 29. 從android數據庫中刪除一行
- 30. C#Access數據庫中刪除行
這是關於MySQL或(微軟)sql服務器?你標記了兩個! – bfavaretto 2012-02-24 21:15:29
你爲什麼要標記'MySQL'和'SQL-Server'?兩者的具體情況會有所不同,所以這是兩個不同的問題。 – 2012-02-24 21:16:17
@MartinSmith這可能是一個很好的問題,就是不同的DB系統如何處理已刪除行的空間。 – 2012-02-24 21:21:16