SQLITE3 使用總結6 事務處理

2021-06-19 20:03:17 字數 556 閱讀 4332

事務處理

sqlite 是支援事務處理的。如果你知道你要同步刪除很多資料,不仿把它們做成乙個統一的事務。

通常一次 sqlite3_exec 就是一次事務,如果你要刪除1萬條資料,sqlite就做了1萬次:開始新事務->刪除一條資料->提交事務->開始新事務->… 的過程。這個操作是很慢的。因為時間都花在了開始事務、提交事務上。

你可以把這些同類操作做成乙個事務,這樣如果操作錯誤,還能夠回滾事務。

事務的操作沒有特別的介面函式,它就是乙個普通的 sql 語句而已:

分別如下:

int result;  

result = sqlite3_exec( db, "begin transaction", 0, 0, &zerrormsg ); //開始乙個事務

result = sqlite3_exec( db, "commit transaction", 0, 0, &zerrormsg ); //提交事務

result = sqlite3_exec( db, "rollback transaction", 0, 0, &zerrormsg ); //回滾事務

sqlite3使用事務處理 zz

在對 sqlite3 insert into 等操作時速度比較慢。原因 它以檔案的形式存在磁碟中,每次訪問時都要開啟一次檔案,如果對資料庫進行大量的操作,就很慢。解決辦法 用事物的形式提交,因為開始事務後,進行的大量操作語句都儲存在記憶體中,當提交時才全部寫入資料庫,此時,資料庫檔案也只用開啟一次。...

SQLITE3 使用總結 4

下面是編譯時提示缺少的函式 這個函式不需要做任何處理,獲取金鑰的部分在下面derivekey 函式裡實現 void sqlite3codecgetkey sqlite3 db,int ndb,void key,int nkey 被sqlite 和sqlite3 key interop 呼叫,附加金鑰...

SQLITE3 使用總結(十)

五 效能優化 很多人直接就使用了,並未注意到sqlite也有配置引數,可以對效能進行調整。有時候,產生的結果會有很大影響。主要通過pragma指令來實現。比如 空間釋放 磁碟同步 cache大小等。不要開啟。前文提高了,vacuum的效率非常低!1 auto vacuum pragma auto v...