Please can someone confirm whether all the Android SQLite best practices also apply to SQLCipher on Android?
That recommendation link appears inline with usage for SQLCipher. In relation to SQLCipher specifically, we often recommend the following  for performance as there are some perf-related usage differences between SQLite and SQLCipher.
Thanks Nick. On that page, the only sqlcipher-specific optimizations seem to be:
PRAGMA cipher_memory_security = OFF
The first one comes out of the box with 4.5.0+ so is not an issue if using the latest version (unless it’s an issue with sqlcipher dbs created with earlier versions?).
The second one seems like a query optimization approach.
Is there anything else regarding configuration parameters? For example, I noticed the android dev doc recommends using
PRAGMA synchronous = NORMAL, whereas I remember Room defaulted to
In particular to SQLCipher is our recommendation to not repeatedly open/close connections. This is commonly the top issue identified for users migrating from SQLite to SQLCipher due to the key derivation process.
Thanks Nick. So regarding
synchronous I can just defer to the Android dev docs?
Hey @marcardar - The appropriate
PRAGMA synchronous setting depends on the journal mode.
NORMAL is generally considered safe with WAL mode, but if you are not using WAL then we recommend
Also, somewhat related, it’s worth noting that apple file systems may not actually flush on fsync. For the highest integrity, you would use
PRAGMA synchronous = FULL; and
PRAGMA fullfsync = ON;, but that will likely affect performance.