Hacking Postgres Executor For Performance
PostgreSQL’s executor currently relies on the Volcano (iterator-based) execution model, processing one tuple at a time in a pull-based approach. While this design offers flexibility and ease of integration, it can introduce significant overhead for large-scale analytical queries, where the cost of per-tuple function calls becomes a bottleneck. Other execution models, such as vectorized execution, process data in batches to reduce overhead, and push-based flows offer further improvements by pushing data through operators more efficiently.
In this talk, we’ll explore practical ways to optimize PostgreSQL's executor while working within its existing model. By applying techniques such as reducing function call overhead and introducing batching, we can significantly improve performance for analytics workloads. I'll be sharing some patches and already committed improvements that demonstrate these optimizations in action. Additionally, we’ll discuss future directions, including the potential for PostgreSQL to adopt a push-based execution flow, paving the way for even greater performance gains.
Join the conversation
Use the hashtag #PosetteConf