插入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 方法設定事務的標誌為成功則提交事...