Some Initial PostgreSQL 11.0 Database Benchmarks

PostgreSQL 11.0 is a big update for this popular database server. Those unfamiliar with its changes can find the details via the release notes. Details on the LLVM JIT back-end can be found via the in-tree documentation. The just-in-time compilation support didn't get enabled by default with PostgreSQL 11.0 due to open performance issues, but can be manually enabled for those wishing to run experiments or happen to be running a lot of complex queries where the JIT capability is likely to pay off.
I ran some basic benchmarks of PostgreSQL 11.0 compared to PostgreSQL 10.5 using our standard test script with the same parameters across PostgreSQL versions. Tests were done on Ubuntu 18.10 with LLVM/Clang 7.0. PostgreSQL 11.0 was benched with and without the LLVM JIT functionality.
Obviously with time more PostgreSQL 11.0 benchmarks will be coming on more hardware/platforms just that this week it's a particularly busy benchmark time.
With a single-thread read test, PostgreSQL 11.0 was edging about 3% higher than PostgreSQL 10.5. With the LLVM JIT enabled was trying to push higher but was within the margin of error.
With read and write tests, the LLVM JIT did come out ahead but still was statistically insignificant.
When putting more load on the server, the LLVM JIT enabled about a 3% performance boost while there was no real difference between PostgreSQL 10.5 and 11.0. Obviously more complex PostgreSQL queries are likely to benefit greater from the LLVM JIT as well as tuning with the JIT variables, but it will be interesting to see how far it evolves by the time of PostgreSQL 12.0 as the next point we could potentially see it enabled by default. Confirmation of the JIT presence can be found via EXPLAIN on Postgres queries and from pg_settings are various JIT tunables. More tests soon.
5 Comments