2
我想從iOS設備上只讀模式下使用的SQLite DB獲得最大性能。到目前爲止,我發現這些東西會對性能產生積極的影響:SQLite在多線程環境中的只讀優化
sqlite3_exec(ret, "BEGIN TRANSACTION", NULL, NULL, NULL); // open transaction after open DB and close transaction before close DB
sqlite3_exec(ret, "PRAGMA journal_mode = OFF", NULL, NULL, NULL);
sqlite3_exec(ret, "PRAGMA cache_size = 20000;", NULL, NULL, NULL);
sqlite3_exec(ret, "PRAGMA locking_mode = EXCLUSIVE", NULL, NULL, NULL);
我有20-25%的性能提升比較原始的版本,而上述編譯指示。
還有什麼可以幫助提升性能嗎?我擔心的一件事是即使它只是只讀訪問我有多個線程可以從數據庫讀取數據,使用以上多線程場景的編譯指示安全嗎?
謝謝,我有適當的索引,會嘗試VACUUM。你知道與你的表現有什麼不同嗎?只閱讀需要的列與所有列?什麼參數可以影響交易? – iKiR 2013-05-01 00:09:26