Hi Simon In my head, checkpointing implies copying back all dirty-pages from the WAL/COW-log to the main db-file. If we never checkpoint, the writes are still completed, but lives in the WAL-file. We will offcourse merge back pages to the main db-file, but this would be an offline process we start when we want to create a new "base-image" of the db. For this to work, it is very important that the main db-file is untouched until we actively want to update this file.
Yes, I'm aware that we are trying to "missuse" sqlite a bit here, but it may just work :) Fredrik On Mon, Oct 7, 2019 at 11:16 AM Simon Slavin <slav...@bigfraud.org> wrote: > On 7 Oct 2019, at 9:56am, Fredrik Larsen <frel...@gmail.com> wrote: > > > nowhere does it warn about severe regression with > > unbounded WAL-size [snip] > > There are tons of bad stuff the documentation doesn't warn you about. You > might want to read > > <https://sqlite.org/wal.html#avoiding_excessively_large_wal_files> > > again and get back to us if you have further questions. There's a reason > that there's a whole section on avoiding excessively large WAL files. > > At your level of sophistication you can probably guess the fallout from > the things you're doing. The sort of stuff you're doing is rare and > obscure. Almost all users of SQLite pick a journalling mode and let SQLite > handle everything itself. > > > Given that we disable ceckpointing, can we assume that the main > > database-file will never be modified, and therefor could potentially be > mounted read-only? > > You are correct that the WAL file contains database pages, rather than SQL > statements. A recent change to the way WAL files work means that if an > already-modified page is modified again, the page appears in the WAL file > only once. So the size of the WAL file depends more on how much new data > gets written to the database than the total number of changes. > > Presumably you mean you disable /automatic/ checkpointing. If you disable > all checkpointing your writes never get completed. Sooner or later you are > going to have to let SQLite modify your database file, so no, you can't > mount it read-only if you want to make changes. > _______________________________________________ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users