<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Postgres on Hi, I&#39;m Muhammad Amal</title>
    <link>https://muhammadamal.my.id/tags/postgres/</link>
    <description>Recent content in Postgres on Hi, I&#39;m Muhammad Amal</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 25 Jun 2025 09:00:00 +0700</lastBuildDate>
    <atom:link href="https://muhammadamal.my.id/tags/postgres/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>YugabyteDB for Global Apps, A Hands On Tutorial</title>
      <link>https://muhammadamal.my.id/blog/yugabytedb-for-global-apps/</link>
      <pubDate>Wed, 25 Jun 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/yugabytedb-for-global-apps/</guid>
      <description>How to design and run YugabyteDB 2.23 for globally distributed apps, covering placement, multi-region geo-partitioning, and Postgres compatibility tradeoffs.</description>
    </item>
    <item>
      <title>Reading pg_stat_io and Modern Postgres Internals</title>
      <link>https://muhammadamal.my.id/blog/reading-pg-stat-io-and-modern-postgres-internals/</link>
      <pubDate>Mon, 23 Jun 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/reading-pg-stat-io-and-modern-postgres-internals/</guid>
      <description>A deep dive on pg_stat_io in PostgreSQL 17, explaining buffer cache mechanics, IO contexts, and how to diagnose storage and memory pressure from the view.</description>
    </item>
    <item>
      <title>Time Series at Scale with TimescaleDB Hypertables</title>
      <link>https://muhammadamal.my.id/blog/time-series-at-scale-with-timescaledb-hypertables/</link>
      <pubDate>Wed, 18 Jun 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/time-series-at-scale-with-timescaledb-hypertables/</guid>
      <description>How to design, operate, and scale TimescaleDB 2.18 hypertables for production time-series workloads, with chunk sizing, compression, and aggregation patterns.</description>
    </item>
    <item>
      <title>High Availability Postgres with Patroni 4.0, A Step by Step Setup</title>
      <link>https://muhammadamal.my.id/blog/high-availability-postgres-with-patroni-4-0/</link>
      <pubDate>Mon, 16 Jun 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/high-availability-postgres-with-patroni-4-0/</guid>
      <description>How to build a production-grade highly available Postgres 17 cluster using Patroni 4.0, etcd for consensus, and HAProxy for routing.</description>
    </item>
    <item>
      <title>Citus for Sharded Multi Tenant Postgres, A Production Walkthrough</title>
      <link>https://muhammadamal.my.id/blog/citus-for-sharded-multi-tenant-postgres/</link>
      <pubDate>Wed, 11 Jun 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/citus-for-sharded-multi-tenant-postgres/</guid>
      <description>A senior engineer&amp;rsquo;s walkthrough of Citus 12.1 for sharded multi-tenant Postgres, focused on schema patterns, query routing, and operational realities.</description>
    </item>
    <item>
      <title>Distributed SQL with CockroachDB 24.3, A Comprehensive Tutorial</title>
      <link>https://muhammadamal.my.id/blog/distributed-sql-with-cockroachdb-24-3/</link>
      <pubDate>Mon, 09 Jun 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/distributed-sql-with-cockroachdb-24-3/</guid>
      <description>How to think about and operate CockroachDB 24.3 as a distributed SQL engine, with concrete schema, query, and locality patterns.</description>
    </item>
    <item>
      <title>Scaling pgvector to Billion Vector Workloads, A Hands On Guide</title>
      <link>https://muhammadamal.my.id/blog/scaling-pgvector-to-billion-vector-workloads/</link>
      <pubDate>Wed, 04 Jun 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/scaling-pgvector-to-billion-vector-workloads/</guid>
      <description>A practical engineer&amp;rsquo;s playbook for scaling pgvector 0.8 to billion-vector workloads on Postgres 17, covering HNSW, quantization, and partitioning.</description>
    </item>
    <item>
      <title>Advanced PostgreSQL 17 Tuning at Scale, A Practical Guide</title>
      <link>https://muhammadamal.my.id/blog/advanced-postgresql-17-tuning-at-scale/</link>
      <pubDate>Mon, 02 Jun 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/advanced-postgresql-17-tuning-at-scale/</guid>
      <description>How to tune PostgreSQL 17 for real production scale, with concrete settings, diagnostic queries, and the pitfalls that bite teams under load.</description>
    </item>
    <item>
      <title>Lessons From a Year of Rust, Postgres, and AI Agents</title>
      <link>https://muhammadamal.my.id/blog/lessons-from-year-rust-postgres-ai-agents/</link>
      <pubDate>Fri, 20 Dec 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/lessons-from-year-rust-postgres-ai-agents/</guid>
      <description>The combination that defined my 2024. What I learned about each, what I learned about their intersection, and what I would do differently.</description>
    </item>
    <item>
      <title>Zero Downtime Postgres Migrations in 2024</title>
      <link>https://muhammadamal.my.id/blog/zero-downtime-postgres-migrations-in-2024/</link>
      <pubDate>Fri, 22 Nov 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/zero-downtime-postgres-migrations-in-2024/</guid>
      <description>A field guide to running zero downtime schema migrations against Postgres 17, with expand-contract, backfill batching, and lock-aware DDL.</description>
    </item>
    <item>
      <title>Vacuum and Bloat Management for Busy Postgres Tables</title>
      <link>https://muhammadamal.my.id/blog/vacuum-and-bloat-management-for-busy-postgres-tables/</link>
      <pubDate>Wed, 20 Nov 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/vacuum-and-bloat-management-for-busy-postgres-tables/</guid>
      <description>Practical vacuum tuning for write-heavy Postgres 17 workloads, with autovacuum parameters, bloat detection queries, and pg_repack guidance.</description>
    </item>
    <item>
      <title>Native Postgres Partitioning, Patterns That Hold at Scale</title>
      <link>https://muhammadamal.my.id/blog/native-postgres-partitioning-patterns-that-hold-at-scale/</link>
      <pubDate>Mon, 18 Nov 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/native-postgres-partitioning-patterns-that-hold-at-scale/</guid>
      <description>Field-tested patterns for native Postgres partitioning in 17, with sizing rules, partition pruning, foreign keys, and the gotchas you only learn at scale.</description>
    </item>
    <item>
      <title>Logical Replication for Blue Green Postgres Deploys</title>
      <link>https://muhammadamal.my.id/blog/logical-replication-for-blue-green-postgres-deploys/</link>
      <pubDate>Fri, 15 Nov 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/logical-replication-for-blue-green-postgres-deploys/</guid>
      <description>End-to-end blue green Postgres cutover using logical replication on 17, with the cutover runbook, slot sync, and the failure modes.</description>
    </item>
    <item>
      <title>pgvector Tuning in 2024, HNSW and IVFFlat in Production</title>
      <link>https://muhammadamal.my.id/blog/pgvector-tuning-in-2024-hnsw-and-ivfflat-in-production/</link>
      <pubDate>Wed, 13 Nov 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/pgvector-tuning-in-2024-hnsw-and-ivfflat-in-production/</guid>
      <description>How to size and tune pgvector 0.7.4 indexes in production, with concrete parameters, recall benchmarks, and the failure modes nobody mentions.</description>
    </item>
    <item>
      <title>Choosing the Right Postgres Index, BRIN, GIN, HNSW, IVFFlat</title>
      <link>https://muhammadamal.my.id/blog/choosing-the-right-postgres-index-brin-gin-hnsw-ivfflat/</link>
      <pubDate>Mon, 11 Nov 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/choosing-the-right-postgres-index-brin-gin-hnsw-ivfflat/</guid>
      <description>When to reach for BRIN, GIN, GiST, BTREE, HNSW or IVFFlat in Postgres 17, with realistic sizing and a flowchart-style decision tree.</description>
    </item>
    <item>
      <title>Reading EXPLAIN ANALYZE Like a Senior DBA</title>
      <link>https://muhammadamal.my.id/blog/reading-explain-analyze-like-a-senior-dba/</link>
      <pubDate>Fri, 08 Nov 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/reading-explain-analyze-like-a-senior-dba/</guid>
      <description>A senior DBA&amp;rsquo;s reading order for EXPLAIN ANALYZE output in Postgres 17, with real plans, estimation skew detection, and BUFFERS interpretation.</description>
    </item>
    <item>
      <title>Connection Pooling with PgBouncer, Setup That Survives 10K Clients</title>
      <link>https://muhammadamal.my.id/blog/connection-pooling-with-pgbouncer-setup-that-survives-10k-clients/</link>
      <pubDate>Wed, 06 Nov 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/connection-pooling-with-pgbouncer-setup-that-survives-10k-clients/</guid>
      <description>Hands-on guide to running PgBouncer 1.23 in front of Postgres 17 at 10k+ client connections, with config, ops, and the gotchas.</description>
    </item>
    <item>
      <title>PostgreSQL 17 in Production, Features Worth Using</title>
      <link>https://muhammadamal.my.id/blog/postgres-17-in-production-features-worth-using/</link>
      <pubDate>Mon, 04 Nov 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/postgres-17-in-production-features-worth-using/</guid>
      <description>Practical look at the Postgres 17 features that move the needle for production workloads, with real psql snippets and upgrade notes.</description>
    </item>
    <item>
      <title>Hybrid Retrieval with pgvector and BM25, A Practical Walkthrough</title>
      <link>https://muhammadamal.my.id/blog/hybrid-retrieval-pgvector-bm25/</link>
      <pubDate>Thu, 16 Nov 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/hybrid-retrieval-pgvector-bm25/</guid>
      <description>Building hybrid retrieval on Postgres with pgvector 0.5 and BM25 — schema, query, score fusion, and trade-offs vs managed vector DBs.</description>
    </item>
    <item>
      <title>Connection Pooling for gRPC and Postgres in Go</title>
      <link>https://muhammadamal.my.id/blog/connection-pooling-grpc-postgres-golang/</link>
      <pubDate>Mon, 20 Mar 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/connection-pooling-grpc-postgres-golang/</guid>
      <description>Right-sizing pgx pools and gRPC client connections in Go — the tuning, lifecycle, and math that survives real traffic.</description>
    </item>
    <item>
      <title>Postgres Bulk Loading, COPY and Prepared Statements</title>
      <link>https://muhammadamal.my.id/blog/postgres-bulk-loading-copy/</link>
      <pubDate>Mon, 24 Oct 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/postgres-bulk-loading-copy/</guid>
      <description>Postgres bulk loading: COPY beats INSERT 100x. UNLOGGED, index management, fast ETL writes.</description>
    </item>
    <item>
      <title>Debezium for Postgres → Kafka CDC</title>
      <link>https://muhammadamal.my.id/blog/debezium-postgres-cdc/</link>
      <pubDate>Fri, 21 Oct 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/debezium-postgres-cdc/</guid>
      <description>Debezium 2.0: Postgres → Kafka CDC setup, config, snapshot, ops gotchas.</description>
    </item>
    <item>
      <title>Building an ETL Pipeline in Go</title>
      <link>https://muhammadamal.my.id/blog/go-etl-pipeline/</link>
      <pubDate>Wed, 12 Oct 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/go-etl-pipeline/</guid>
      <description>Go ETL: pgx, COPY bulk, concurrent ETL stages. When Go beats Python.</description>
    </item>
    <item>
      <title>Postgres Logical Replication for CDC</title>
      <link>https://muhammadamal.my.id/blog/postgres-logical-replication-cdc/</link>
      <pubDate>Fri, 07 Oct 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/postgres-logical-replication-cdc/</guid>
      <description>Postgres logical replication for CDC: publications, slots, wal2json / pgoutput consumption.</description>
    </item>
    <item>
      <title>Ingesting MQTT into TimescaleDB</title>
      <link>https://muhammadamal.my.id/blog/mqtt-timescaledb-ingest/</link>
      <pubDate>Mon, 15 Aug 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/mqtt-timescaledb-ingest/</guid>
      <description>MQTT → TimescaleDB consumer in Go. Hypertables, COPY inserts, retention, backpressure.</description>
    </item>
    <item>
      <title>Repositories and Interfaces in Go</title>
      <link>https://muhammadamal.my.id/blog/go-repository-pattern/</link>
      <pubDate>Mon, 13 Jun 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/go-repository-pattern/</guid>
      <description>Repository pattern in Go. Ports in use-case layer, Postgres implementations, transactions.</description>
    </item>
    <item>
      <title>Postgres in Rust with sqlx, A Practical Setup</title>
      <link>https://muhammadamal.my.id/blog/rust-sqlx-postgres/</link>
      <pubDate>Fri, 18 Mar 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/rust-sqlx-postgres/</guid>
      <description>Postgres in Rust with sqlx 0.5. Compile-time SQL checking, query macros, migrations, transactions, gotchas.</description>
    </item>
    <item>
      <title>Postgres Multi-Column Indexes, Column Order Is Almost Everything</title>
      <link>https://muhammadamal.my.id/blog/postgres-multi-column-index-order/</link>
      <pubDate>Fri, 18 Feb 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/postgres-multi-column-index-order/</guid>
      <description>Multi-column index column order in Postgres. Leftmost prefix, INCLUDE, and the three patterns that decide useful vs useless.</description>
    </item>
    <item>
      <title>Postgres Partial Indexes That Make Slow Queries Disappear</title>
      <link>https://muhammadamal.my.id/blog/postgres-partial-indexes/</link>
      <pubDate>Wed, 16 Feb 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/postgres-partial-indexes/</guid>
      <description>Postgres partial indexes — index only the rows that matter. Four patterns that catch most production wins.</description>
    </item>
    <item>
      <title>Postgres Index Types, B-tree, GIN, GiST, BRIN, When Each One Wins</title>
      <link>https://muhammadamal.my.id/blog/postgres-index-types-btree-gin-gist-brin/</link>
      <pubDate>Mon, 14 Feb 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/postgres-index-types-btree-gin-gist-brin/</guid>
      <description>Postgres index types compared. B-tree, GIN, GiST, BRIN, Hash. When each wins, with real queries and trade-offs.</description>
    </item>
    <item>
      <title>PgBouncer Connection Pooling for Postgres, A Practical Setup</title>
      <link>https://muhammadamal.my.id/blog/pgbouncer-connection-pooling-postgres/</link>
      <pubDate>Fri, 11 Feb 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/pgbouncer-connection-pooling-postgres/</guid>
      <description>PgBouncer in front of Postgres 14. Transaction pooling, pool sizing, prepared-statement gotchas, deploy patterns.</description>
    </item>
    <item>
      <title>Postgres Autovacuum, When Defaults Fail and How to Fix Them</title>
      <link>https://muhammadamal.my.id/blog/postgres-autovacuum-tuning/</link>
      <pubDate>Wed, 09 Feb 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/postgres-autovacuum-tuning/</guid>
      <description>Autovacuum defaults fail on write-heavy tables. Spot the bloat, set per-table overrides, prove it works with metrics.</description>
    </item>
    <item>
      <title>Tuning Postgres Memory, shared_buffers, work_mem, effective_cache_size</title>
      <link>https://muhammadamal.my.id/blog/postgres-memory-shared-buffers-work-mem/</link>
      <pubDate>Mon, 07 Feb 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/postgres-memory-shared-buffers-work-mem/</guid>
      <description>Four Postgres memory settings that decide whether queries fit in RAM or spill. shared_buffers, work_mem, effective_cache_size, maintenance_work_mem.</description>
    </item>
    <item>
      <title>Reading the Postgres Query Planner, A Practical EXPLAIN Walkthrough</title>
      <link>https://muhammadamal.my.id/blog/postgres-query-planner-explain/</link>
      <pubDate>Fri, 04 Feb 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/postgres-query-planner-explain/</guid>
      <description>Read Postgres EXPLAIN ANALYZE without faking it. Plan nodes, cost vs actual, trouble patterns, and the fix per pattern.</description>
    </item>
    <item>
      <title>Postgres Performance Tuning, My 2022 Checklist</title>
      <link>https://muhammadamal.my.id/blog/postgres-performance-tuning-checklist/</link>
      <pubDate>Wed, 02 Feb 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/postgres-performance-tuning-checklist/</guid>
      <description>Practical Postgres 14 performance checklist. Memory, autovacuum, indexes, pooling, and the metrics that prove it worked.</description>
    </item>
    <item>
      <title>Sharing a Postgres Database Between a Monolith and New Services</title>
      <link>https://muhammadamal.my.id/blog/shared-database-monolith-microservices/</link>
      <pubDate>Fri, 28 Jan 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/shared-database-monolith-microservices/</guid>
      <description>Sharing Postgres between monolith and microservices without coupling them. Schemas, roles, FK boundaries, ownership migration.</description>
    </item>
  </channel>
</rss>
