Simon, the real point here is that Python and SQLite aren't doing real transactions. What we should be seeing here is AT MOST 30 TPS with synchronous=normal, assuming SQLite does 3 hard disk syncs per commit as was described in an earlier post.
On my old AMD box, the one where fsync() is broken, I get this: [...@amd toys]$ uname -a Linux amd 2.6.25-ARCH #1 SMP PREEMPT Sat Jun 14 18:07:19 CEST 2008 i686 AMD Athlon(tm) 64 Processor 3200+ AuthenticAMD GNU/Linux [...@amd toys]$ py dbsync.py For pragma synchronous= off Time: 0.380044937134 TPS: 7893.80335553 For pragma synchronous= normal Time: 5.70174884796 TPS: 526.154357197 For pragma synchronous= full Time: 7.00615310669 TPS: 428.195038606 [...@amd toys]$ py dbsync.py For pragma synchronous= off Time: 0.361596107483 TPS: 8296.54948689 For pragma synchronous= normal Time: 5.72849082947 TPS: 523.698141327 For pragma synchronous= full Time: 7.06226301193 TPS: 424.793015345 But by disabling the IDE hard drive write cache: [r...@amd toys]# hdparm -W 0 /dev/sda /dev/sda: setting drive write-caching to 0 (off) write-caching = 0 (off) [r...@amd toys]# py dbsync.py For pragma synchronous= off Time: 0.361658096313 TPS: 8295.12744379 For pragma synchronous= normal Time: 60.0442349911 TPS: 49.9631646643 For pragma synchronous= full Time: 60.0657091141 TPS: 49.9453023072 These last 2 are expected numbers for a true "on the platters" commit that is limited by the drive's rotational speed. The CPU doesn't really matter for this test. Jim On 5/31/09, Simon Slavin <slav...@hearsay.demon.co.uk> wrote: > > On 31 May 2009, at 4:59pm, Simon Slavin wrote: > >> Standard MacBookPro3,1 Core 2 Duo 2.4 GHz, OS 10.5.7, whatever hard >> disk Apple puts in them. >> Using SQLite version 3.4.0 (installed as part of the OS installation). >> >> SimonsMBP:Documents simon$ python --version >> Python 2.5.1 >> >> SimonsMBP:Documents simon$ python dbsynch.py >> For pragma synchronous= off Time: 2.70638608932 TPS: 1108.48929199 >> For pragma synchronous= normal Time: 4.9895169735 TPS: 601.260606174 >> For pragma synchronous= full Time: 6.40981006622 TPS: 468.032588954 > > I am, of course, an idiot. That was running from the command line. > If I run it as a .pyc I get > > >>> import dbsynch > For pragma synchronous= off Time: 2.69734382629 TPS: 1112.2052631 > For pragma synchronous= normal Time: 4.79093813896 TPS: 626.182161611 > For pragma synchronous= full Time: 6.31202697754 TPS: 475.283139739 > > SimonsMBP:Documents simon$ python dbsynch.pyc > For pragma synchronous= off Time: 2.61415219307 TPS: 1147.59959575 > For pragma synchronous= normal Time: 4.84184503555 TPS: 619.598516262 > For pragma synchronous= full Time: 6.0191090107 TPS: 498.412637928 > > I don't see why the 'full' figures vary so much. > > Simon. > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > -- Software first. Software lasts! _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users