我一直在玩數據庫,我導入了超過百萬列,最後玩功能,我只選擇了一個值,刪除了其餘的和我的數據庫的大小超過200MB。我正在做sqlite3。如何減小它的大小?數據庫只有一個表,一列,一個值大於200mb
1
A
回答
1
您的數據庫可能仍然保留您之前記錄的空間。
這實質上是同一個問題:
Why does clearing an SQLite database not reduce its size?
接受的答案:
當一個對象(表,索引,觸發器或視圖)從數據庫中刪除,它留下空的空間。下一次將新信息添加到數據庫時,該空白空間將被重新使用。但與此同時,數據庫文件可能大於嚴格必要的。此外,頻繁的插入,更新和刪除操作可能會導致數據庫中的信息變得碎片化 - 在整個數據庫文件中都會出現碎片,而不是在一個地方聚集在一起。
VACUUM命令通過將其內容複製到臨時數據庫文件並從副本重新加載原始數據庫文件來清除主數據庫。這消除了空閒頁面,將表格數據對齊爲連續的,否則清理數據庫文件結構。
編輯:如果您希望定期執行此操作,您可能需要研究編譯指令'auto_vacuum'。它會保持您的文件大小,但有一些優點和缺點。在生產環境中,最好預留比需要的更多空間,因爲這可以降低服務器磁盤空間不足的風險。
相關問題
- 1. 嘗試後只有一個單一的列到數據庫
- 2. LINQ過濾一個數據庫列表與另一個數據庫列表
- 3. 如何約束一個數據庫表,使一列中只有一行可以有特定的值?
- 4. Mysql基於另一個表更新一個表列大量的數據
- 5. mysql複製:一個主站有很多數據庫,兩個從站 - 一個用於所有數據庫和一個 - 僅用於其中一個數據庫
- 6. 當單列中的另一個表的所有數據都等於某個值時,更改一個表數據
- 7. 創建一個每個值只有一行的新數據框
- 8. 只有幾列的數據複製到另一個數據表
- 9. 將一列數據從一個數據庫複製到另一個數據庫
- 10. PL/SQL - 一個人只有一個值
- 11. 用另一個數據庫替換一個數據庫的表
- 12. 如何將表值從一個數據庫插入另一個數據庫?
- 13. 是否可以約束一個表只有一組列中的一個值
- 14. WCF數據庫連接:只有一個數據庫連接
- 15. 將三列從一個數據庫表複製到另一個
- 16. 根據另一個列表的值創建一個列表c#
- 17. 將一個大型(30,000行)表從一個數據庫複製到另一個數據庫的最快方法?
- 18. 將數據從一個數據庫表複製到另一個數據庫表?
- 19. 插入從一個數據庫到另一個數據庫中的所有表
- 20. 我有一個數據表,其中我有一個十進制值的列
- 21. 值從一個表中插入到另一個在同一個數據庫中?
- 22. 在一個數據庫中所有表
- 23. 用NHibernate創建一個SQLite數據庫,但只有一次
- 24. 一次只能有一個MySQL數據庫工作
- 25. 查詢列表 - 只返回一個值
- 26. 從一個數據庫插入一列到另一個數據庫
- 27. 合併陣列輸出一個只有唯一值的數組
- 28. PYTHON:從一個列表基於指數的另一個列表
- 29. 選擇只有一個負值的列
- 30. 如何在同一個數據庫中將大量數據從一個表複製到另一個表中?