Using RLS can be cumbersome, because it's usually expected to rely on the user name. Could we use JWT to establish a 'trusted context'?| Tomas Vondra
Funny and weird behavior with modern SSD devices, and how it impacts query execution.| Tomas Vondra
A follow up to my blog post exploring how often we pick the optimal query plan. Instructions how to reproduce it, why it happens and how to address it.| Tomas Vondra
An evaluation of how often Postgres picks the optimal plan for simple scan queries.| Tomas Vondra
Benchmarking complex systems can be difficult. Here's a problem I'm currently investigating, possibly related to process scheduling.| Tomas Vondra
Advanced Patch Feedback Session (APFS) at pgconf.dev 2025 - what was the session for, was it useful?| Tomas Vondra
We’re now in the “feature freeze” phase of Postgres 18 development. That means no new features will get in - only bugfixes and cleanups of already committed changes. The goal is to test and stabilize the code before a release. PG 18 beta1 was released a couple days ago, so it’s a perfect time to do some testing and benchmarking. One of the fundamental changes in PG 18 is going to be support for asynchronous I/O. And with beta1 out, it’s the right time to run your tests and benchmark...| Posts on Tomas Vondra
patch idea: dynamic tuning for IN queries| Tomas Vondra
Reflections on the 15 years of Prague PostgreSQL Developer Day I helped to organize.| vondra.me
History of Postgres performance improvements in analytics.| vondra.me
History of Postgres performance improvements for OLTP workloads.| vondra.me
Tuning the glibc memory allocator (for Postgres)| vondra.me
There are multiple tools to run benchmarks on Postgres, but pgbench is probably the most widely used one. The workload is very simple and perhaps a bit synthetic, but almost everyone is familiar with it and it’s a very convenient way to do quick tests and assessments. It was improved in various ways (e.g. to do partitioning), but the initial data load is still serial - only a single process does the COPY. Which annoys me - it may take a lot of time before I can start with the benchmarks its...| Posts on Tomas Vondra
A couple days ago I had a bit of free time in the evening, and I was bored, so I decided to play with BOLT a little bit. No, not the dog from a Disney movie, the BOLT tool from LLVM project, aimed at optimizing binaries. It took me a while to get it working, but the results are unexpectedly good, in some cases up to 40%. So let me share my notes and benchmark results, and maybe there’s something we can learn from it. We’ll start by going through a couple rabbit holes first, though.| Posts on Tomas Vondra
Time for yet another “first patch” idea post ;-) This time it’s about BRIN indexes. Postgres has a contrib module called amcheck, meant to check logical consistency of objects (tables and indexes). At the moment the module supports heap relations (i.e. tables) and B-Tree indexes (by far the most commonly used index type). There is a patch adding support for GiST and GIN indexes, and the idea is to also allow checking BRIN indexes.| Posts on Tomas Vondra
I’ve submitted a lot of talk proposals to a lot of Postgres conferences over the years. Some got accepted, many more were not. And I’ve been on the other side of this process too, as a member of the CfP committee responsible for selecting talks. So let me give you a couple suggestions on how to write a good talk proposal.| Posts on Tomas Vondra
Let me present another “first patch” idea, related to a runtime stats on access to files storing data. Having this kind of information would be very valuable on instances with many files (which can happen for many reasons). This is a very different area than the patch idea, which was about an extension. The runtime stats are at the core of the system, and so is the interaction with the file systems. But it’s still fairly isolated, and thus suitable for new contributors.| Posts on Tomas Vondra
I’ve decided to experiment a little bit and do regular “office hours.” I’ll be available to chat about almost anything related to Postgres. It might be a technical discussion about a patch you’re working on, or a topic about the community etc. This is not an entirely new thing. I’ve been telling people to just ping me if they want to discuss something off-list, or have a call and chat about it.| Posts on Tomas Vondra
patch idea: Improve postgres_fdw batching to use COPY protocol.| vondra.me
A couple suggestions on how to import Postgres mail achives.| vondra.me
Suggestions how to find / pick the first Postgres patch.| vondra.me
A collection of interesting charts about the stat of the PostgreSQL community.| vondra.me