2010-03-30 98 views
14

我有一個SQLite數據庫。爲什麼清理SQLite數據庫不會減小其大小?

我創建了表格並填充了大量的數據。

然後我通過刪除並重新創建表格來清除數據庫。我確認所有的數據都已被刪除,並且通過使用SQLite Administrator查看這些表是空的。

問題是數據庫文件(* .db3)的大小在清除後保持不變。

這當然是不可取的,因爲我希望重新獲得數據所佔用的空間,一旦我清除它。

有沒有人有類似的觀察和/或知道發生了什麼?

可以做些什麼呢?

+1

'end transaction; 真空;' – PHPst 2016-07-30 04:43:29

回答

24

here

當一個對象(表,索引,觸發器或視圖)從數據庫中刪除,但留下空的空間。下一次將新信息添加到數據庫時,該空白空間將被重新使用。但與此同時,數據庫文件可能大於嚴格必要的。此外,頻繁的插入,更新和刪除操作可能會導致數據庫中的信息變得碎片化 - 在整個數據庫文件中出現碎片,而不是集中在一起。

VACUUM命令通過將主數據庫的內容複製到臨時數據庫文件並從副本重新加載原始數據庫文件來清除主數據庫。這消除了空閒頁面,將表格數據對齊爲連續的,否則清理數據庫文件結構。

3

數據庫大小像水印一樣工作,例如,如果水位上升,水位上升,當水位下降時,水位停留在原來的位置

您應該考慮收縮數據庫

相關問題