sqlite3 performance tuning

太久沒用sqlite, 外加之前使用的地方都是小資料的應用,沒啥必要做tuning,但是這次我的data有1,490,755 (約150萬筆),在這種scale下就發現之前的暴力法,即使有建Index, 還是不夠用了。

測試出來能夠增加效能的方法 (加上下面粗體的三行):

sqlite3_exec(db,』PRAGMA synchronous=OFF;』, NULL, 0, &msg);
sqlite3_exec(db, 『BEGIN TRANSACTION;』, NULL, 0, &msg);
sqlite3_exec(db, 『YOUR_STATEMENT』, NULL, 0, &msg);
剩下的1499998個statements
sqlite3_exec(db, 『YOUR_STATEMENT』, NULL, 0, &msg);
sqlite3_exec(db, 『COMMIT TRANSACTION;』, NULL, 0, &msg);

比較結果如下:

INSERT 1.5M筆 record

TUNE之前  每insert 10000筆約3分鐘
TUNE之後  做完1.5M筆record花費 1分13秒

UPDATE 1.5M筆 record

TUNE之前  超級久~~慢到我忍不住按Ctrl+C
TUNE之後  花費10分32秒

結論,INSERT變的超快,UPDATE速度也有顯著提升,不過UPDATE的速度還是不太理想,看到這篇文章的朋友不知道有沒有更好的方法可以分享呢?

0 Response to “sqlite3 performance tuning”


  • No Comments

Leave a Reply