Contact: fumanchu@aminus.org

Log in as guest/dejavu to create tickets

Database Performance

I almost hesitate to show this data, since one of Dejavu's design goals is to allow you to test which store is best for your data. But here it is anyway--timing results from the test suite on my machine (rev 200).

Python version: 2.4.2
Dejavu version: 1.4.0

Testing burned storage...
Ran zoo suite in: 0:00:01.813000

Testing caching storage...
Ran zoo suite in: 0:00:02.374000

Testing msaccess storage...
Please wait while support for ADO 2.7+ is verified...
ADO Version: 2.80
   (2) warnings
Ran zoo suite in: 0:00:04.636000

Testing mysql storage...
MySQL Version: 4.1.8.nt
Ran zoo suite in: 0:00:07.922000

Testing proxy storage...
Ran zoo suite in: 0:00:02.193000

Testing pypgsql storage...
PostgreSQL 8.0.0rc1 on i686-pc-mingw32, compiled by GCC gcc.exe (GCC) 3.3.1 (mingw special 20030
Ran zoo suite in: 0:00:09.183000

Testing shelve storage...
Shelve version: 2.4.2 (#67, Sep 28 2005, 12:41:11) [MSC v.1310 32 bit (Intel)]
Ran zoo suite in: 0:00:02.203000

Testing sqlite storage...
SQLite Version: 3.3.3
Ran zoo suite in: 0:00:16.483000

Testing sqlserver storage...
Please wait while support for ADO 2.7+ is verified...
ADO Version: 2.80
   (2) warnings
Ran zoo suite in: 0:00:05.798000

The burned, caching, and proxy stores each have a shelve store behind them. Keep in mind that the test suite includes calls to create and destroy the entire database, and is most likely not representative of your data, especially in the areas of database size and read-to-write ratio.

I find the SQLite time to be the only significant outlier, that you might point to and say, "avoid using it". Hopefully, someone smart will instead say, "I know how to improve that!" and contribute code. ;) Note that these times don't incorporate the new threaded-writing test that the SQLite manager currently doesn't pass; expect its performance to worsen (waiting for locks and BUSY states to clear) as that gets fixed.