Some Initial PostgreSQL 11.0 Database Benchmarks

Written by Michael Larabel in Free Software on 19 October 2018 at 02:42 PM EDT. 5 Comments
Among other software releases, yesterday brought the debut of the PostgreSQL 11.0 database server. Given it has possible performance enhancements and the new (non-default) LLVM-based just-in-time compilation ability, I decided to run some benchmarks on the powerful Dell PowerEdge EPYC 2P server.

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.
EPYC 2P Server

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.
EPYC 2P Server

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.
EPYC 2P Server

With read and write tests, the LLVM JIT did come out ahead but still was statistically insignificant.
EPYC 2P Server

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.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via

Popular News This Week