SQLite Forum

Are the changes done after a transaction is performed always available to all connections to a database?
> I see that as likely, but have not read enough code or docs to see how SQLite determines that a page cache has become stale. But I find it hard to imagine that it would go to the persistent store to determine that, as that would reduce the performance of the cache significantly.

Since a transaction is required before any read can be made from the database, the action of starting a read transaction, as far as I can see, will check the data_version so that the cache can be marked stale (discarded) before the read transaction is started.  Once a read transaction is started the database cannot be updated so there is no need to check the data_version again until the next transaction is started on that connection.