sqlite效能提公升

2022-10-09 21:00:17 字數 674 閱讀 8795

常規連線sqlite字串為 data source=db.db;version=3;

用上述字串連線sqlite,然後用 system.data.sqlite 訪問資料庫時發現有下述幾個問題:

往表中插入一條資料時大約耗時100ms(無論表中資料是否很多),這在插入大量資料時會等待很長時間

多執行緒訪問資料庫時,會有占用鎖的報錯

sqlite是已檔案的形式存在磁碟中,每次訪問時都要開啟一次檔案,如果對資料進行大量的操作,那會很慢。建議以事務的形式執行同時的多個操作,儘量減少執行的次數。

可以修改連線字串:data source=db.db;version=3;synchronous=off;journal mode=wal;

synchronous=off

關閉同步

添刪改操作時不必同步等待寫入磁碟,作業系統會延遲若干毫秒批量寫入

journal mode=wal

減少鎖定

入向前日誌模式,避免多執行緒訪問時鎖定資料庫,寫入時不必使用排它鎖影響其它執行緒讀取,而是把事務操作寫入到wal檔案中,延遲合併

cache size=5000

加大快取

作業系統通過檔案對映mapfile把整個資料庫檔案對映進入記憶體,實際查詢時會把用到資料所在附近頁預先載入進入快取,極大提公升查詢效能

sqlite提公升效率

前言 sqlite資料庫由於其簡單 靈活 輕量 開源,已經被越來越多的被應用到中小型應用中。甚至有人說,sqlite完全可以用來取代c語言中的檔案讀寫操作。因此我最近編寫有關遙感資料處理的程式的時候,也將sqlite引入進來,以提高資料的結構化程度,並且提高大資料的處理能力 sqlite最高支援2p...

提公升sqlite效能以及事務的簡單理解

sqlite事務處理的問題,在sqlite插入資料的時候預設一條語句就是乙個事務,有多少條資料就有多少次磁碟操作 比如5000條記錄也就是要5000次讀寫磁碟操作。解決方法 新增事務處理,把5000條插入作為乙個事務 database.begintransaction 手動設定開始事務 資料插入操作...

SQLite效能優化

最近做了乙個專案,在系統啟動時會更新幾千條資料,剛開始就使用最簡單的寫法,直接的insert,delete,導致這個更新過程進行了300多秒,後來經查得知在處理大量資料的時候新增上事務管理,會大大的提高效能,隨後就查閱資料如何來新增事務管理。這ios的sqlite和android上面的語法真是相差很...