アプリのライフサイクル全体で一連のクエリを実行します。
現在、FMDB (Sqlite C API の Objective-C ラッパー) を使用しており、すべてのクエリの前に開いたり閉じたりしています。
FMDatabase * db = [FMDatabase databaseWithPath:pathToMyDB];
[db open]
FMResultSet * s = [db executeQuery:@"SELECT * FROM myTable"];
// Use FMResultSet
[db close];
トリガーを開閉fopen()
してfclose()
下に下げるので、データベースを開いたままにすることで、パーフォースの勝利を得ることができると思います。
ただし、一時オブジェクトが蓄積され、メモリの問題が発生する可能性があると思います。 データベースを閉じると、一時オブジェクトがクリアされます。
- データベース接続をいつ開いて閉じる必要がありますか? (例: アプリケーションはバックグラウンドに入りましたか?)
- メモリ不足の状況でVACUUMを実行する必要がありますか?