Preserve optimizer statistics during major upgrades with PostgreSQL v18
by
Laurenz Albe |
06.2025© Laurenz Albe 2025 Everybody wants good performance. When it comes to the execution of SQL statements, accurate optimizer statistics […]
SELECT FOR UPDATE considered harmful in PostgreSQL
by
Laurenz Albe |
06.2025© Laurenz Albe 2025 Recently, while investigating a deadlock for a customer, I was again reminded how harmful SELECT FOR […]
commit_delay for better performance: a PostgreSQL benchmark
by
Laurenz Albe |
01.2025We benchmark the performance boost that you can get by tuning commit_delay with a workload of small transactions.
Dealing with trigger recursion in PostgreSQL
by
Laurenz Albe |
10.2024This article describes the problem of endless trigger recursion in PostgreSQL and shows how to deal with it and get good performance.
(Updated 2024-12-23) Among the many index types in PostgreSQL, the hash index is the most widely ignored. This came home […]
Kill long running queries in PostgreSQL
How to detect and terminate long running queries in PostgreSQL using two different methods. Also: How to automatically kill slow queries.
pg_stat_io and PostgreSQL 16 performance
How to use pg_stat_io for true debugging power in PostgreSQL v16. Offers deep insights into database I/O behavior & performance.
Monitoring Performance for PostgreSQL with Citus
Monitoring PostgreSQL with Citus: how to leverage monitoring to optimize PostgreSQL + Citus distributed database performance.
Monitoring PostgreSQL replication
How to monitor replication lag in PostgreSQL? What is replication lag? And how to best go about monitoring PostgreSQL replication in general?
Citus: Sharding your first table
Here’s how to shard a table from scratch with Citus. Scale PostgreSQL DBs using a sharding approach. How to run a Citus Docker container.