PgSQL

post-image

PostgreSQL Under Load - Part 2: Vacuum, Analyze, and Index

October 2025 by Dakshin Postgres, PgSQL, Table Partition, Performance Fix

In Part 1, we tackled partitioning — the first step to keeping Postgres performant under heavy write loads. Partitioning solved routing, not cleanup.

Postgres uses MVCC (Multi-Version Concurrency Control) to handle concurrent reads and writes. It’s brilliant, but it comes with a caveat: every update leaves behind dead tuples, every delete lingers until vacuumed, and every index quietly bloats over time.

This post dives into the cleanup side of scaling:

Continue Reading
post-image

PostgreSQL Under Load - Part 1: Partition Like a Pro

September 2025 by Dakshin Postgres, PgSQL, Table Partition, Performance Fix

This post is split into two parts for brevity.

  1. Part 1: Partition like a Pro
  2. Part 2: Vacuum, Analyze and Index

Let’s start by setting the scene.

You’ve got a backend service humming in production - maybe its ingesting user events, transaction logs, or IoT metrics. Everything’s smooth until one day, your dashboards light up:

  •   Insert latency spikes from 10ms to 500ms.
  •   CPU usage climbs, even though your queries haven’t changes.
  •   Auto-vacuum falls behind, and your disk usage balloons overnight.
  •   A simple SELECT query takes 3 seconds. Three. Whole. Seconds.

You check the table: 400 million rows ; No analytics - just trying to write fast and read fresh. But Postgres is groaning under the weight of your workload. It’s a write-heavy, recent-data problem – and Postgres can absolutely handle it, only if you treat it right.

Continue Reading

Let's Connect

for a cup of coffee, challenges, or conversations that spark something new

dakshin.g [at] outlook [dot] com
www.dakshin.cc