有沒有辦法預先分配我的SQLite數據庫到一定大小?目前我正在添加和刪除一些記錄,並希望在創建時避免這種情況。SQLite - 預分配數據庫大小
回答
存在一種破解 - 將一堆數據插入數據庫,直到數據庫大小達到您想要的數值,然後刪除數據。這樣做是因爲:
「當一個對象(表,索引,或 觸發)從數據庫中刪除, 會留下空白空間,這 空的空間將在下 一次新的信息被重複使用。添加到 數據庫,但與此同時, 數據庫文件可能大於 嚴格必要。「
當然,這不是最可靠的方法。 (另外,您需要確保auto_vacuum已被禁用才能使用)。你可以在這裏瞭解更多 - http://www.sqlite.org/lang_vacuum.html
正如我在我的問題中所說,這是我目前正在做的。但是,感謝auto_vacuum提示! – paul 2009-05-05 22:39:41
要做到這一點,最快的方式是與zero_blob功能:
例子:
Y:>sqlite3的large.sqlite
SQLite的3.7版。 4
輸入「.help」作爲指令
輸入以「;」結尾的SQL語句
sqlite>創建表大(a);
sqlite>插入大數值(zeroblob(1024 * 1024));
sqlite>drop table large;
sqlite的>.Q
Y:>DIR large.sqlite
驅動器風量y是個人
卷序列號是365D-6110
的Y目錄:\
01/27/2011 12:10 PM 1,054,720 large.sqlite
注意:由於Kyle在他的評論中正確地指出:
每個blob的大小都有限制,所以如果您希望數據庫大於〜1GB,您可能需要插入多個blob。
- 1. 分配給SQLite內存數據庫的內存大小
- 2. SQLite數據庫大小太大
- 3. 在SQLite中查詢數據庫大小
- 4. 返回不區分大小寫的sqlite數據庫
- 5. 數據庫文件大小或表大小? SQLite
- 6. 在Julia中預分配已知大小的數據幀
- 7. 最小化SQLite庫大小
- 8. 分配預裝的iOS TouchDB數據庫
- 9. 的Postgres + EJB3預分配大小錯誤
- 10. SQLite數據庫適配器
- 11. 爲什麼清理SQLite數據庫不會減小其大小?
- 12. Android應用程序中的最大SQLite數據庫大小
- 13. UIWebView內的WebSQL/SQLite數據庫的最大大小(phonegap)
- 14. sqlite中的大型數據庫 - 文件大小的考慮?
- 15. 訪問2010數據庫分解大小
- 16. 數據庫分區的最佳大小
- 17. Sqlite fts4區分大小寫
- 18. 帶Appcelerator Mobile的大量預填充SQLite數據庫
- 19. 預先填充的Sqlite數據庫
- 20. sqlite的預定義的數據庫空
- 21. 如何預先填充sqlite數據庫?
- 22. Android SQLite數據庫 - 沒有讀取數據庫中float的小數部分
- 23. SQLite數據庫文件大小在刪除大表後沒有縮小
- 24. 如何根據數據庫增長預測服務器大小?
- 25. 數據庫分配
- 26. 簡單的數組內存分配與大小動態分配和預定的大小
- 27. R的預留內存是分配數組大小的兩倍
- 28. SQLite的數據類型字段大小
- 29. SQlite NUMERIC數據類型大小
- 30. KMALLOC大小分配
爲什麼你認爲有一個你可以避免的開銷。如果可以的話,它對你的應用程序甚至有影響嗎?我認爲你正在試圖做「不成熟的優化」http://en.wikipedia.org/wiki/Optimization_(computer_science),我們從Donald Knuth那裏瞭解到「我們應該忘記小效率,大約97%的時間:過早優化是萬惡之源。「 – lothar 2009-05-05 22:06:12
有一個合理的需要做到這一點,不與效率掛鉤。 [某些文件系統](http://blogs.technet.com/b/mikelag/archive/2011/02/09/how-fragmentation-on-incorrectly-formatted-ntfs-volumes-affects-exchange。aspx)對文件可以有多少片段有限制。如果你知道你的數據庫有多大,你可以通過預先分配文件來避免這個問題。 – 2011-06-23 15:16:14