I think the OP meant that updates have to run sequentially.
And the opposite more frequent checkpoints, means faster reads (no need to through bigger wal file, and smaller index), but writes are slower.
So it really depends on what's happening right now, if you can anticipate it - e.g. populating for the first time data into it (maybe decrease checkpoint updates, then turn it back on).
Or if you constantly log, and read only that much (though not sure if you have constraints, triggers whether there are no hidden reads).
Or the opposite - a "read-only" if possible version of sqlite.db would be ideally without any wal.
So your post helped understand that there is stuff that I don't know and need to look further into it.
Thanks!
So stand corrected!
[1] https://sqlite.org/hctree/doc/hctree/doc/hctree/index.html
I've been using this to update/read db from multiple threads/processes on the same machine. You can also do snapshotting with the sqlite backup API, if you want consistent view, and to not hold on transaction (or copy in-memory).
But maybe I'm missing something here... Also haven't touched sqlite in years, so not sure...