Al Danial wrote:

The attached C program measures insert performance for populating
a table with an integer and three random floating point values with
user defined transaction size.  Usage is:

    ./sqlite_insert  <number of rows>   <transaction size>


All of these are on Gentoo, Athlon 64 3200+, running 64 bit.

Writing to /tmp, which is ext3 (acl,user_xattr,usrquota) over RAID0 (two slave drives on different channels):

$ ./sqlitetest 100000 50000
 100000 inserts to /tmp/a.db in 0.531 s = 188446.34 inserts/s
$ ./sqlitetest 2000000 50000
 2000000 inserts to /tmp/a.db in 11.546 s = 173223.61 inserts/s

I'm actually surprised to see this kind of performance. The drives are brand-new Maxtor 200GB parallel ATA. I imagine I could do better with usrquota off.

reiserfs over RAID5 (hideous config with different types of drives, 3 master, 2 slave):

$ ./sqlitetest 100000 50000
 100000 inserts to /home/foobar/a.db in 0.884 s = 113121.53 inserts/s
$ ./sqlitetest 2000000 50000
 2000000 inserts to /home/foobar/a.db in 20.025 s = 99875.94 inserts/s

xfs on the same array:
$ ./sqlitetest 100000 50000
 100000 inserts to /data/stage/a.db in 0.777 s = 128684.23 inserts/s
[EMAIL PROTECTED] tmp $ ./sqlitetest 2000000 50000
 2000000 inserts to /data/stage/a.db in 14.541 s = 137544.14 inserts/s

Last but not least, reiserfs noatime over RAID1 (two drives, masters on different channels):
$ ./sqlitetest 100000 50000
100000 inserts to /usr/foobar/a.db in 0.700 s = 142824.48 inserts/s
$ ./sqlitetest 2000000 50000
2000000 inserts to /usr/foobar/a.db in 15.376 s = 130071.89 inserts/s


For kicks, I tried tmpfs. It crashed (segfault in sqlite3_bind_int64 -- go figure). I'll submit a bug report if I can reproduce it sanely.

So it looks like ext3 over RAID0 is good. FWIW, I can read 99.18 MB/sec off /dev/md3 (where /tmp lives).

--Andy




Reply via email to