Your post made me look more into checkpoints, and understand better the tradeoffs in sqlite+wal about it - e.g. less frequent checkpoint means larger log (wal files), hence slower reads - as reads have to go through the wal file (there is some index, but still) to vet the data. But it makes writing faster.
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!