sqlite 啟用事務

2021-07-03 22:25:59 字數 780 閱讀 8319

插入3000條資料,兩分鐘沒插完。。然後去網上找辦法,才知道大批量資料插入需要用事物,否則效率會很低。原文如下:

insert時,沒有使用事務的sqlite速度的確很慢

啟用事務後,速度大大的提高了。

**1(啟用事務):

[php]

$link = sqlite_open('c:\\test.db')

sqlite_query($link,"begin");//開啟事務

for ($i=0;$i<10000;$i++)

sqlite_query($link,"commit");//提交事務

[/php]

**2(沒有事務):

[php]

$link = sqlite_open('c:\\test.db')

for ($i=0;$i<10000;$i++)

[/php]

測試一下,就會發現兩者速度相差很大

2.資料庫中delete 了資料,但是資料庫的大小並不減少,裡邊的那些資料也都在,怎麼才能讓這些資料從資料庫中真正刪除?

sqlite_query($link,"vacuum");//刪除後,釋放空間

sqlite3 在不執行行事務處理的情況下不是很理想, 但select速度相當快。

mssql/access無論是否執行事務處理的效能都相當不錯

mysql的bytefx與myodbc在insert/delete的速度上差異略為明顯。

sqlite在不開事務的情況下就是一種悲劇,因為它的多訪問支援是建立在對檔案的獨佔和共享基礎上的。

在程式中啟用事務

在專案中很多時候都要用到事務,比如新增一條商品,要把這麼商品的關鍵字插入到關鍵字表裡去 首先執行一和sql,如果執行失敗則馬上返回。否則開始事務執行下面的語句.int i new command executenonquery 如果執行失敗則直接返回 if i 0 return false.開啟事務...

在SQLite中使用事務

用乙個事務轉賬來實現sqlite的事務處理 下面的person類是已經建立好了的表,在 建立資料庫與完成資料添刪改查 一 中可以看到 1 update person set amount amount 10 where personid 1 2 update person set amount am...

使用事務操作SQLite資料庫

使用sqlitedatabase的begintransaction 方法可以開啟乙個事務,程式執行到endtransaction 方法時會檢查事務的標誌是否為成功,如果程式執行到endtransaction 之前呼叫了settransactionsuccessful 方法設定事務的標誌為成功則提交事...