Tomas Vondra

Senior Principal Engineer, Databaser Server, EDB

Tomas Vondra is an experienced PostgreSQL developer, contributor and committer. He has authored and co-authored a number of PostgreSQL features and extensions, including the extended optimizer statistics feature (CREATE STATISTICS). He works at EDB as a PostgreSQL engineer, where he manages internal projects regarding the organization's ongoing contributions to community PostgreSQL.

Read Blogs

EDB Labs
A few weeks ago I covered the basics of tuning checkpoints , and in that post I also mentioned autovacuum as the second common source of performance issues (based on what we see on the mailing list and at our customers). Let me follow-up on that with this post about how to tune autovacuum, to minimize the risk of performance issues. In this post I'll briefly explain why we even need autovacuum...
EDB Labs
On systems doing non-trivial number of writes, tuning checkpoints is crucial for getting good performance. Yet checkpoints are one of the areas where we often identify confusion and configuration issues, both on the community mailing lists and during support and consulting for our customers. This post is meant to explain what checkpoints are - the purpose and how the database implements that - and then also how to tune them.
News
The sixteenth year of the Prague PostgreSQL Developer Day (P2D2) conference, organized by the local PUG, happened on June 4-5. This year EDB was one of the main sponsors of the event, so let us share a brief summary from the conference overall, and a bit more details about contributions by EDB speakers. P2D2 is a two-day conference, with half-day workshops on the first day, and a single track of...
Technical Blog
One of the guiding Postgres design principles is heavy reliance on features provided by the environment (particularly operating system) and file systems are a prime example of this. Unlike other databases Postgres never supported raw devices that would require implementing a “custom” file system.
Technical Blog
Welcome to the third – and last – part of this blog series, exploring how the PostgreSQL performance evolved over the years. The first part looked at OLTP workloads, represented by pgbench tests. The second part looked at analytical / BI queries, using a subset of the traditional TPC-H benchmark (essentially a portion of the power test). And this final part looks at full-text search, i.e. the...
Technical Blog
In the first part of this blog series, I’ve presented a couple of benchmark results showing how PostgreSQL OLTP performance changed since 8.3, released in 2008. In this part I plan to do the same thing but for analytical / BI queries, processing large amounts of data. There’s a number of industry benchmarks for testing this workload, but probably the most commonly used one is TPC-H, so that’s what...
Technical Blog
A couple years ago (at the pgconf.eu 2014 in Madrid) I presented a talk called “ Performance Archaeology” which showed how performance changed in recent PostgreSQL releases. I did that talk as I think the long-term view is interesting and may give us insights that may be very valuable. For people who actually work on PostgreSQL code like me, it’s a useful guide for future development, and for...
Technical Blog
After I shared the sequential UUID benchmarks a couple of weeks ago, one of the points raised in feedback was the choice of the storage space. I’ve intentionally used a fairly weak storage system (RAID10 on three 7.2k SATA drives) because I wanted to demonstrate the benefits. But a couple of readers suggested using SSDs might significantly reduce the difference between regular and sequential UUIDs...
Technical Blog
Let’s assume you have some sensitive data, that you need to protect by encryption. It might be credit card numbers (the usual example), social security numbers, or pretty much anything you consider sensitive. It does not matter if the encryption is mandated by a standard or if you just decided to encrypt the sensitive stuff. You need to do the encryption right and actually protecting the...
Technical Blog
UUIDs are a popular identifier data type – they are unpredictable, and/or globally unique (or at least very unlikely to collide) and quite easy to generate. Traditional primary keys based on sequences won’t give you any of that, which makes them unsuitable for public identifiers, and UUIDs solve that pretty naturally. But there are disadvantages too – they may make the access patterns much more...