2

iOS デバイスの読み取り専用モードで使用される SQLite DB から最大のパフォーマンスを得ようとしています。これまでのところ、次のことがパフォーマンスにプラスの影響を与えることがわかりました。

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% 向上しています。

パフォーマンスに役立つものは他にありますか? 私が懸念していることの 1 つは、読み取り専用アクセスであっても、DB からデータを読み取ることができる複数のスレッドがあることです。マルチスレッドのシナリオで上記のプラグマを使用しても安全ですか?

4

1 に答える 1