> Paul wrote:
> > I can check whether user_version matches magic number without transaction.
> 
> No. Executing "PRAGMA user_version" will start an automatic transaction
> if you didn't already start an explicit one.
> 
> > Only when user_version does not match magic number I start transaction.
> 
> This will never be faster than just starting a transaction explicitly
> and checking the version once.
> 
> > The only thing I am worried about is whether
> >
> > pragma user_version=n;
> >
> > respects transactions and will be rolled back automatically in case
> > if something happens between that statement and COMMIT.
> 
> Please have a look at this sentence, which you quoted in your mail:
> >> Please note that *all* accesses to the database file are done with
> >> transactions, including reading and writing the user_version value.
> 

I suspect that no, not all accesses to the database file are done using 
transactions.
What about read-only databases? Moreover, what about read-only medium?

I am actually worried not of transaction per se but of its impact on HDD.
My databases must be opened as fast as possilbe. 
And in 95% of cases all executed queries are SELECTs.
I don't want sqlite to write anything to disk when, within single database
session, data is only extracted and no modifications to database are made.

Correct me if I have a wrong model of transaction in mind.
Maybe sqlite does not write a byte to disk if inside a transaction 
there are only selects?

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to