首頁>>前端開發
最的做的項目中要有到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瀏覽器將接棒
- 搜索
-
- 2023-09-07 優化師過了30歲,還能找到好工作嗎?
- 2023-09-05 看完就能用,SEM推廣方法論!
- 2023-08-28 又又又升級了!百度搜索新增“AI穩投”
- 2023-08-25 “抄”爆同行素材,這樣搞!
- 2023-08-25 如何利用A/B測試,優化廣告素材?
- 2023-08-18 一鍵起量,百度搜索又一重磅升級!
- 2023-08-17 小紅書,再不做就晚了!
- 2023-08-10 廣告素材這樣設計,點擊率翻5倍!
- 2023-08-03 百度競價太卷了,怎么辦?
- 2023-08-02 信息流渠道如何選擇?4大渠道優劣對比
- 2023-07-28 14個技巧,讓你的頁面轉化提高一倍!
- 2023-07-27 推廣必用8個Excel函數,你用過幾個?
- 2019-11-01 Origin DNS error:使用百···
- 2020-06-20 “401 - 未授權: 由于憑據無效,訪···
- 2020-12-01 一級域名好還是二級域名好?
- 2020-10-13 百度抓取診斷工具一直抓取失敗怎么辦?
- 2019-12-09 域名解析后,網站返回狀態碼511應對方法
- 2019-08-12 網站出現“403,服務器上文件或目錄拒絕···
- 2021-04-13 html/txt文件中文用瀏覽器打開有亂···
- 2020-09-03 element.style樣式的修改
- 2021-01-06 百度移動端的搜索結果上線“踩頂”功能,對···
- 2019-11-06 正確打開.db數據庫文件的兩種方式,避免···
- 2020-10-20 UC神馬搜索怎么做快速排名優化
- 2020-04-10 百度下拉框怎么刷?刷百度下拉框軟件原理及···
- 2019-03-01 手機端做seo與PC端的異同點
- 2019-10-22 9102年,發外鏈還有用嗎?
- 2019-09-19 實至名歸?最偉大編程語言javascri···
- 2020-07-19 什么叫做網絡蜘蛛爬蟲?
- 2020-07-31 新網站為什么一直0收錄,新網站收錄窘境迅···
- 2020-04-02 phpcms V9修復后臺友情鏈接分類管···
- 2020-01-08 百度快排技術泛濫成災,白帽SEO還有出路···
- 2019-12-22 2019冬至:聊一聊seo市場的前景
- 2019-12-09 域名解析后,網站返回狀態碼511應對方法
- 2019-08-29 網站url尾部的/index.html等···
- 2021-10-24 究竟該如何著手建設手機網站呢?
- 2020-12-09 獨立服務器對搜索引擎優化有什么影響?
- 熱門標簽
-
- Error 1016
- Origin DNS error
- 源DNS服務器錯誤
- element.style
- css
- .db文件
- 域名解析
- 別名解析
- CNME解析
- A記錄
- asp.net
- php
- jsp
- 開發語言對比
- 寶塔
- 白名單
- 香港主機
- 主機白名單
- 301
- 301重定向
- 301永久重定向
- 個人備案
- 企業備案
- 網站備案
- 錨點跳轉
- 500錯誤
- 字體大小
- 用戶體驗
- 虛擬主機
- 網站搭建
- 自適應網站
- web前端
- 移動端
- 響應式網站
- 網站被黑
- 后臺入侵
- 源碼安全
- 備案駁回
- 阿里云備案
- ftp
- flashfxp
- js空鏈接
- 阿里云服務器
- 實例類型
- 織夢cms
- 開源CMS
- 百度轉碼
- 禁止轉碼
- 偽元素選擇器
- 偽類選擇器
- CSS3
- 網站建設
- 低成本網站
- 域名備案
- win10連接遠程服務器
- 谷歌插件
- Chrome
- 服務器流量
- 網站流量耗盡
- 蜘蛛
- 屏蔽蜘蛛
- 網站體驗設計
- 老年用戶
- html標簽
- seo標簽
- 網站安全
- X-Powered-By
- robots.txt
- 服務器空間
- 網站空間選擇
- 網站設計
- seo要點
- seo建站方案
- 0收錄
- 新域名收錄
- 網站收錄
- 獨立ip主機
- seo服務器
- 服務器穩定性
- 網站續費
- dede
- 分頁樣式代碼
- 網站標簽
- 標簽優化
- pbootcms
- 權限設置
- javascript
- 編程語言
- 營銷型網站
- 定制網站
- filter
- 濾鏡
- PbootCMS
- sqlite
- mysql
- 數據庫
- SQL
- Sqlite
- css3