On 4/5/2011 10:01 PM, Nikolaus Rath wrote:
> I'm experimenting with creation of a 156 MB database from scratch. I've
> set synchronous = NORMAL and locking_mode = exlusive.
>
> With journal_mode = off and without wrapping the INSERTs into a
> transaction, creating the db takes 54 seconds.
>
> With journal_mode = WAL (and still no transaction), it takes an
> impressive 900 seconds.
>
> With journal_mode = WAL and the INSERTs packed into a transaction, the
> total time is 60 seconds.
>
> I am slightly surprised by this. I was expecting that the difference
> between transaction/no transaction with WAL is just the writing of an
> additional few bytes of commit marker into the WAL file with every
> insert. But apparently something much more time consuming is happening
> as well.

Committing a transaction involves waiting until the data is physically 
transferred to the disk surface (as opposed to sitting in OS buffers). 
This requires at least two complete revolutions of the disk platter. 
With an above-average hard drive running at 15000 RPM, you can have a 
throughput of 125 transactions per second, at best. How many rows are 
you inserting?
-- 
Igor Tandetnik

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

Reply via email to