I have a largish DB around 1GB in size. There is a table with 5 million rows
in it that has a 3-key index on it. This database file is fragmented -- to
what degree I'm not sure.

Using sqlite 3.6.14, dropping and recreating the index under WinXP Pro (on a
local disk) with no other activity takes about 90 seconds. With the same
database on Red Hat Linux 64-bit with no other activity and a local disk,
the index recreation takes almost 30 *minutes*. The activity is completely
I/O bound. If I vacuum the database, the Windows time drops to 70 seconds,
and the Linux time drops to 7 minutes.

Conversely, with this same table and index starting from empty, if I start
inserting rows with the index in place, on Windows the insertion speed drops
dramatically after about 100-200K rows and takes about 6-7 *hours* to
complete. On Linux 64-bit, the same experiment takes less than an hour to
complete and the insertion speed seems fairly constant.

Can anyone offer any explanations for these huge disparities in sqlite
performance on these two platforms? And why Windows does badly on index
insertions and well on rebuilding it from scratch, and Linux 64-bit has the
exact opposite behavior?

Brian Dantes

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

Reply via email to