How about using a hard-link to store the log file somewhere else? That
should work transparently...


On 1/10/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> "Jim C. Nasby" <[EMAIL PROTECTED]> wrote:
> > On Mon, Jan 09, 2006 at 09:08:10PM -0800, Dan Kennedy wrote:
> > >
> > > The short version:
> > >
> > > The first write operation writes the parts of the database that
> > > are about to be overwritten to the journal file. If something
> > > goes wrong during the second write, the journal file will be
> > > used to restore the database to it's previous state. The second
> > > write is the one that actually modifies the database file.
> >
> > Yes, but the second write (to the data files) isn't time critical.
> > Because it doesn't (or at least shouldn't) be getting fsync'd very
> > often, it can also be re-ordered by the OS (and possibly the drive).
> >
> > In any case, it's completely inaccurate to say that each transaction
> > requires two revolutions of the drive. Also, if SQLite supports it,
> > putting the log files on a seperate set of drives from the tables is
> > almost always a win.
>
> The second sync has to occur before deleting the rollback
> journal.  Otherwise a powerloss could leave you with both
> an incomplete write and a missing rollback journal.
>
> The rollback journal must always be located in the same
> directory as the original database file so that SQLite
> will know where to find it.  If the rollback journal is
> located on a separate volume, that volume might not get
> mounted after a power failure of system crash, and you'd
> then be left with a corrupted database.  Besides that,
> how would SQLite know where to look for the rollback
> journal if it is off in some other directory someplace?
> Remember, SQLite is designed to be robust and easy to
> operate which means we cannot control the placement of
> the rollback journal using a configuration file.
>
> --
> D. Richard Hipp <[EMAIL PROTECTED]>
>
>

Reply via email to