Sysbench: PostgreSQL performance

The first PostgreSQL benchmark measure the time needed to prepare (populate) the database. It write a single, 100000 records length table:

Sysbench postgresql prepare

Finally, we see a test were BTRFS is the best! While its speed is almost equaled by EXT3, BTRFS can boast an ultra low CPU usage. On the other hand, while EXT4 and XFS have the same ultra low CPU utilization they are 10 times slower. How it is possible? Perhaps we encounter one EXT4/XFS regression, as the somewhat similar Phoronix's SQLite and Postmark tests seems to indicate a severe slowdown in this kind of workload for EXT4 in recent kernels.

Now, let's see sysbench's simple test results:

Sysbench postgresql simple test

This is a 100000 requests, read-only test. As we have no write activity, I didn't expect great variations between results: we see that all filesystems are more or less equivalent here.

Can the much more complex, read-write, transactional test draw a different picture?

Sysbench postgresql complex test

Yes, it can: BTRFS is now awfully slow, scoring less that ΒΌ of EXT4 and XFS. EXT3 is the clear winner: it has 4X the EXT4/XFS performance here (so it is over 16 times faster than BTRFS!).

This tests shown that for a database system you should really stay with EXT3, at least until the EXT4 regressions are worked out in future kernels.

UPDATE: preparing the system for another benchmark, I noticed that, in contrast to what written in Fedora 14 documentation, write barriers were non enabled on EXT3 filesystem. Please read the updated "Conclusions" page.