首頁>>前端開發
最的做的項目中要有到sqlite數據存儲,寫了測試程序進行測試,存入300萬條記錄,占用flash大小為 86.1M,當把表中的記錄全部刪除后發后數據庫文件大小依然是 86.1M;
原因是:
sqlite采用的是變長紀錄存儲,當你從Sqlite刪除數據后,未使用的磁盤空間被添加到一個內在的”空閑列表”中用于存儲你下次插入的數據,用于提高效率,磁盤空間并沒有丟失,但也不向操作系統返回磁盤空間,這就導致刪除數據乃至清空整個數據庫后,數據文件大小還是沒有任何變化,還是很大
解決方法:兩種
一,在數據刪除后,手動執行VACUUM命令,執行方式很簡單
sqlite> vacuum;
VACUUM命令會清空“空閑列表”,把數據庫尺寸壓縮到最小。但是要耗費一些時間。
FQA里面說,在Linux的環境下,大約0.5秒/M。并且要使用兩倍于數據庫文件的空間。
我憎恨此FQA,他只說系統環境,不說機器硬件環境。我在測試手機上執行用了將近13秒時間壓縮了將近3M的空間。至于它所占用的另一部分空間,是生成了一個.db-journal后綴名的臨時文件。(這個問題對我現在來說是無所謂的。)
使用navicat連接sqlite db庫
假如需要進行sqlite文件磁盤空間的釋放,可以在命令界面,執行一下命令:
VACUUM
VACUUM命令會清空“空閑列表”,把數據庫尺寸壓縮到最小。
二,在數據庫文件建成中,將auto_vacuum設置成“1”。
注意:只有在數據庫中未建任何表時才能改變auto-vacuum標記。試圖在已有表的情況下修改不會導致報錯。
cmd.CommandText = "PRAGMA auto_vacuum = 1;"
cmd.ExecuteNonQuery()
當開啟auto-vacuum,當提交一個從數據庫中刪除除數據的事物時,數據庫文件自動收縮。
數據庫會在內部存儲一些信息以便支持這一功能,這使得數據庫文件比不開啟該選項時稍微大一些。
我的表結構,不含任何數據是,數據庫文件大小是25K左右,開了auto_vacuum之后是26K。
插入運行基礎數據后,文件變成35K,開了auto_vacuum之后是36K。
變化不大,無所謂。
但是第二個方法同樣有缺點,只會從數據庫文件中截斷空閑列表中的頁, 而不會回收數據庫中的碎片,也不會像VACUUM 命令那樣重新整理數據庫內容。實際上,由于需要在數據庫文件中移動頁, auto-vacuum 會產生更多的碎片。而且,在執行刪除操作的時候,也有那個.db-journal文件產生。
要使用auto-vacuum,需要一些前題條件。 數據庫中需要存儲一些額外的信息以記錄它所跟蹤的每個數據庫頁都找回其指針位置。 所以,auto-vacumm 必須在建表之前就開啟。在一個表創建之后, 就不能再開啟或關閉 auto-vacumm。
其實按照運行時間上的比較,兩個在做了大刪除操作后,從3M變到35K的時間其實差不多,執行VACUUM命令稍微長一點,但是也長不了多少,相對而言,這種一點點的長可以忽略不計。
加上AUTO的方式對碎片的造成情況,如果數據交換次數多的話,這種方式很不合適。
猜你喜歡
- 2022-11-10 【官方文檔】百度搜索網站被黑防范指南
- 2022-11-03 【干貨必備】百度搜索優質內容指南
- 2022-08-01 百度隱藏“快照”功能:原因未知-百度快照沒了?
- 2022-06-20 淺析“百度搜索基礎信息設置規范”!
- 2022-06-15 SEO尷尬,有排名,沒流量,沒咨詢,怎么辦?
- 2022-05-16 IE瀏覽器宣布6月16日退役 Edge瀏覽器將接棒
- 搜索
-
- 2022-12-01 網站頁面黑白色濾鏡效果實現技巧
- 2022-11-26 優化 CSS 代碼的12個小技巧
- 2022-11-22 百度競價,簡單的創意也能收獲滿滿的點擊量···
- 2022-11-17 全中國一共有多少IP地址?
- 2022-11-10 【官方文檔】百度搜索網站被黑防范指南
- 2022-11-10 PbootCMS 默認Sqlite數據庫···
- 2022-11-03 【干貨必備】百度搜索優質內容指南
- 2022-11-03 SEM投放前,需要做哪些準備?
- 2022-11-02 淺談代運營服務的商業模式
- 2022-11-01 SQlite刪除數據后DB大小無改變解決···
- 2022-11-01 在寶塔面板通過偽靜態屏蔽垃圾蜘蛛的方法
- 2022-10-31 制造業SEO,怎么做是正確的,高性價比!
- 2019-11-01 Origin DNS error:使用百···
- 2020-12-01 一級域名好還是二級域名好?
- 2020-10-13 百度抓取診斷工具一直抓取失敗怎么辦?
- 2020-06-20 “401 - 未授權: 由于憑據無效,訪···
- 2019-12-09 域名解析后,網站返回狀態碼511應對方法
- 2021-01-06 百度移動端的搜索結果上線“踩頂”功能,對···
- 2020-09-03 element.style樣式的修改
- 2019-08-12 網站出現“403,服務器上文件或目錄拒絕···
- 2019-11-06 正確打開.db數據庫文件的兩種方式,避免···
- 2020-04-10 百度下拉框怎么刷?刷百度下拉框軟件原理及···
- 2020-10-20 UC神馬搜索怎么做快速排名優化
- 2020-09-27 css3實現一個div設置多張背景圖片
- 2019-02-18 做網站時應注意seo的幾個要點
- 2020-08-06 移動瀏覽器變了心?
- 2019-10-22 9102年,發外鏈還有用嗎?
- 2019-03-14 升級版「烽火算法」來襲!持續打擊網絡劫持···
- 2020-02-01 落地在家辦公,如何推進工作效率?
- 2019-05-30 前端HTML代碼與搜索引擎優化有多大關系···
- 2021-07-05 sublime text3編輯器出現“p···
- 2020-12-11 你總說SEO不行,但我想說你不懂SEO!···
- 2019-03-20 網站個別關鍵詞排名消失是什么原因,怎么解···
- 2020-06-17 利用分詞算法布局關鍵詞告別堆砌快速排名!
- 2019-11-25 IIS本地測試中,全站報錯404頁面的問···
- 2022-09-24 word-break和 word-wra···
- 熱門標簽
-
- Error 1016
- Origin DNS error
- 源DNS服務器錯誤
- element.style
- css
- .db文件
- 域名解析
- 別名解析
- CNME解析
- A記錄
- asp.net
- php
- jsp
- 開發語言對比
- 白名單
- 香港主機
- 主機白名單
- 寶塔
- 個人備案
- 企業備案
- 網站備案
- 字體大小
- 用戶體驗
- 錨點跳轉
- 500錯誤
- 301
- 301重定向
- 301永久重定向
- 虛擬主機
- 網站搭建
- 自適應網站
- web前端
- 移動端
- 響應式網站
- 網站被黑
- 后臺入侵
- 源碼安全
- 開源CMS
- 阿里云服務器
- 實例類型
- ftp
- flashfxp
- 織夢cms
- 偽元素選擇器
- 偽類選擇器
- CSS3
- js空鏈接
- 備案駁回
- 阿里云備案
- 域名備案
- 谷歌插件
- Chrome
- 百度轉碼
- 禁止轉碼
- 服務器流量
- 網站流量耗盡
- win10連接遠程服務器
- 網站建設
- 低成本網站
- 服務器空間
- 網站空間選擇
- 網站設計
- seo要點
- seo建站方案
- html標簽
- seo標簽
- 網站安全
- 網站標簽
- 標簽優化
- 獨立ip主機
- seo服務器
- 網站體驗設計
- 老年用戶
- dede
- 分頁樣式代碼
- 0收錄
- 新域名收錄
- 網站收錄
- X-Powered-By
- 營銷型網站
- 定制網站
- robots.txt
- javascript
- 編程語言
- 服務器穩定性
- 網站續費
- 蜘蛛
- 屏蔽蜘蛛
- PbootCMS
- sqlite
- mysql
- 數據庫
- filter
- 濾鏡