Percona Resources

Software
Downloads

All of Percona’s open source software products, in one place, to download as much or as little as you need.

Valkey Contribution

Product Documentation

Why Percona for MongoDB?

Why Percona for PostgreSQL?

Percona Blog

Percona Blog

Our popular knowledge center for all Percona products and all related topics.

Community

Percona Community Hub

A place to stay in touch with the open-source community

Events

Percona Events Hub

See all of Percona’s upcoming events and view materials like webinars and forums from past events

About

About Percona

Percona is an open source database software, support, and services company that helps make databases and applications run better.

Percona in the News

See Percona’s recent news coverage, press releases and industry recognition for our open source software and support.

Our Customers

Our Partners

Careers

Contact Us

Jobin Augustine
Jobin Augustine is a PostgreSQL expert and Open Source advocate and has more than 21 years of working experience as a consultant, architect, administrator, writer, and trainer in PostgreSQL, Oracle and other database technologies. He has always been an active participant in the Open Source communities, and his main focus area is database performance and optimization. Jobin is a regular face in many of the PostgreSQL conferences and has presented at various conferences for the last 6+ years. He is a contributor to multiple Open Source Projects, an active blogger, and loves coding in C++ and Python. Jobin holds a Master's in Computer Applications; Currently, he is the PostgreSQL Escalation Specialist for Percona. Previously, he worked at OpenSCG for two years as an architect and was part of the BigSQL core team. Previous to his work at OpenSCG, Jobin worked at Dell as Database Senior Advisor for ten years and another five years with TCS/CMC.

Impact of Network and Cursor on Query Performance of PostgreSQL

Many times, we see PostgreSQL users getting confused about the query/statement duration reported in PostgreSQL logs. Other PostgreSQL tools like pgBadger present the same data based on the log file, which further increases the confusion. Knowing the full impact of network-related overhead and cursors is important not only to alleviate the confusion but also to […]

Connection Queuing in pgBouncer: Is it a Magical Remedy?

Yes, this post is about connection queueing, not just pooling. Because “connection pooling” – pre-created connections as a pool – is a much-celebrated feature. Almost every discussion on connection pool/pgBouncer starts with the overhead of establishing a new connection to PostgreSQL… and how pre-created connections in the pool can save the world. But there is […]

Index Improvements in PostgreSQL 13

Indexes are one of the core features of all the database management systems (DBMS). Indexes have a very long history in PostgreSQL, which has quite a rich set of index features. PostgreSQL has B-Tree, Hash,  GIN, GIST, and BRIN indexes. And because the development around indexes is still going on, PostgreSQL 13 provides some enhancements. […]

Why PostgreSQL WAL Archival is Slow

It is very common to see many customer cases where a sudden increase in disk space usage is caused by a lot of WAL segments filling up the WAL directory (pg_wal). Panicking customers generally ask “Why isn’t PostgreSQL deleting them?”. The most common reasons we used to find were: Failing WAL archival A slot holding […]

Failover of Logical Replication Slots in PostgreSQL

Missing Piece: Failover of the Logical Replication Slot Logical decoding capability has existed in PostgreSQL for the last several versions, and a lot more functionalities are added over time.  However, one of the very crucial functionalities is still missing in PostgreSQL, which prevents logical replication to be part of critical production environments where downstream expects […]

Upgrading PostgreSQL – Patroni Cluster and Switching from Python 2 to Python 3

Python 2 has officially completed its life as of Jan 1st, 2020 and the Python 2.x branch will not be maintained anymore. You might be seeing repeated notices of deprecation in log files and terminals like:

Python 2 had a wonderful life, coming from a humble background and becoming one of the most popular […]

PostgreSQL 12 Improvement: Benign Log Entries “Incomplete Startup Packet”

There is a less-talked-about improvement in PostgreSQL 12 which can greatly reduce the benign log entries. This patch is probably one of the smallest in PostgreSQL 12. The commit message says:

This patch is going to improve the experience of many enterprise users by reducing unwanted log entries. It is very common to see […]

Configure HAProxy with PostgreSQL Using Built-in pgsql-check

We discussed one of the traditional ways to configure HAProxy with PostgreSQL in our previous blog about HAProxy using Xinetd. There we briefly mentioned the limitation of the HAProxy’s built-in pgsql-check health check option. It lacks features to detect and differentiate the Primary and Hot-Standby. It tries to establish a connection to the database instance […]

A Faster, Lightweight Trigger Function in C for PostgreSQL

We have been writing blog posts about how to write simple extensions in C language and a little more complex one by Ibrar which were well received by PostgreSQL user community. Then we observed that many PostgreSQL users create simple triggers for small auditing requirements, and then feel the pain of trigger on transactions. So […]