On Mon, 3 Oct 2005, Thomas Briggs wrote: > > Given my understanding of the codebase (you get to decide what that's >worth), the value of the synchronous pragma determines decisions going >forward, so changing it mid-process should impact only transaction >handling from that point forward. I do know, however, that there are >places in the code where special consideration is given to the >possibility of the synchronous pragma having been changed mid-process, >so it isn't necessarily a trouble-free approach, I don't think. >Changing its value only when no transaction is active would seem pretty >safe to me.
However, as SQLite files are single files, a crash during a "non-important transaction" could still hose the entire database. In this sense, there is no such thing as a non-important transaction. Perhaps, you could keep "non-important" data in a seperate database file, and attach it to the main database. Have a connection to the main database plus non-important database attached with synchronous updates, and a seperate connection just to the non-important database with asynchronous updates. What, exactly, constitutes a non-important update? > > -Tom > >> -----Original Message----- >> From: pippi pohopper [mailto:[EMAIL PROTECTED] >> Sent: Saturday, October 01, 2005 12:31 PM >> To: sqlite-users@sqlite.org >> Subject: [sqlite] How to speed up SQLite >> >> I'm experimenting with SQLite and found there's a big >> difference in speed depending on the setting of PRAGMA SYNCHRONOUS. >> >> I understand that settings other than"2" for this parameter >> don't guarantee that data is safely stored on disk when che >> COMMIT statement terminates. >> >> I wonder if it is possible to mix various settings of PRAGMA >> SYNCHRONOUS in the same program, i.e. issue a "PRAGMA >> SYNCHRONOUS 2" before performing very important transactions >> and using a lower PRAGMA SYNCHRONOUS value before performing >> less important transactions. >> >> If this is not possible because PRAGMA SYNCHRONOUS can only >> be issued once when attaching to the database, I'm >> considering dividing to workload between two processes or >> threads that write on the same database. One thread woud use >> "PRAGMA SYNCHRONOUS 2" and would be responsible for critical >> database updates and the other thread would use "PRAGMA >> SYNCHRONOUS 0" and would be responsible for less critical updates. >> >> Anybody knows if either of this two solutions will work >> reliably ? Which one is the best (in terms of data safety) ? >> >> Thank you, bye >> >> >> >> --------------------------------- >> Yahoo! Messenger: chiamate gratuite in tutto il mondo >> > -- /"\ \ / ASCII RIBBON CAMPAIGN - AGAINST HTML MAIL X - AGAINST MS ATTACHMENTS / \