-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Matthew Tippett wrote:
>   'How do I determine what impact the host os/environment has on sqlite'.

The very first test should be a sanity check where you do a bunch of inserts
each as their own transaction.  Each transaction should require calling
fsync twice so on a 7200rpm drive (120 revolutions per second) you should
not be getting more than 60 transactions per second (make sure you use
"BEGIN IMMEDIATE").  If you do the drive/operating system is lying about the
fsyncs and any further SQLite testing is not valid.

> I am personally thinking of a composite test that contains the
> following classes of performance tests.
>     1) Trivial looped tests (the current set).
>     2) Complex query (again looped)
>    3) Large data set
>    4) Large field set
> 
> Any thoughts?

You can use this to generate SQL that covers the above somewhat and is what
the SQLite team use.  My own benchmarking uses it with a scale parameter so
all the 50,000 can be 500,000 or 500 as needed.

  http://www.sqlite.org/cvstrac/fileview?f=sqlite/tool/mkspeedsql.tcl

My experience with it is that the resulting benchmark numbers I got seemed
right (eg ext4 was faster than ext3).

Be aware that the more "complex" the testing the less likely the SQL will be
portable to other database engines requiring per engine tweaking which then
makes the benchmark less reliable as a cross engine comparison.

I would suggest you create scenarios instead of the synthetic stuff above,
such as analysing web logs as that is a lot easier to independently verify
and implicitly defines reasonable values for "large" - eg URLs and referrer
strings have a known distribution of sizes.  (Also watch out for SQLite not
having a native date/time type.)

These guys (tweakers.net) modelled their own web site as the benchmark:

  http://preview.tinyurl.com/y8fe7w3

SQLite is used in Firefox for history and benchmarks.  Why not extrapolate
from the queries in the Firefox source code?

You can look at the list on this page  http://sqlite.org/famous.html for
other real world usage.  Running "strings" on various binaries should give
you an idea of queries (eg Apple's mail client, Google desktop, McAfee virus).

I'd much rather see results for "Firefox history" or "Mail client" than
"Large data set #3" :-)

Roger
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkrI5IkACgkQmOOfHg372QT9EQCfVhueFkuitdSUM1QuGneaBN9L
gwwAn1cdg6KdmMm80poCnxmsfOere0PO
=8uaZ
-----END PGP SIGNATURE-----
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to