<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Performance on Hi, I&#39;m Muhammad Amal</title>
    <link>https://muhammadamal.my.id/tags/performance/</link>
    <description>Recent content in Performance on Hi, I&#39;m Muhammad Amal</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 23 Jun 2025 09:00:00 +0700</lastBuildDate>
    <atom:link href="https://muhammadamal.my.id/tags/performance/index.xml" rel="self" type="application/rss+xml" />
    <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>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>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>Rate Limiting Algorithms, Token Bucket, Leaky Bucket, Sliding Window</title>
      <link>https://muhammadamal.my.id/blog/rate-limiting-algorithms/</link>
      <pubDate>Mon, 14 Nov 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/rate-limiting-algorithms/</guid>
      <description>Rate limit algos: token bucket, leaky bucket, fixed + sliding window. When each wins.</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>Docker Compose Resource Limits, Memory and CPU</title>
      <link>https://muhammadamal.my.id/blog/docker-compose-resource-limits/</link>
      <pubDate>Fri, 22 Jul 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/docker-compose-resource-limits/</guid>
      <description>Compose resource limits: memory + CPU caps. deploy.resources syntax, tuning for JVM/Node/Go.</description>
    </item>
    <item>
      <title>Image Optimization with next/image in Next.js 12</title>
      <link>https://muhammadamal.my.id/blog/nextjs-image-optimization/</link>
      <pubDate>Mon, 25 Apr 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/nextjs-image-optimization/</guid>
      <description>next/image in Next.js 12. Layouts, sizes, lazy loading, WebP/AVIF, remote patterns, perf wins.</description>
    </item>
    <item>
      <title>React 18 Automatic Batching, One Render Pass For All Your State Updates</title>
      <link>https://muhammadamal.my.id/blog/react-18-automatic-batching/</link>
      <pubDate>Fri, 08 Apr 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/react-18-automatic-batching/</guid>
      <description>React 18 batches all state updates, not just event handlers. flushSync to opt out. Free perf win for most apps.</description>
    </item>
    <item>
      <title>React Concurrent Rendering, useTransition and useDeferredValue Explained</title>
      <link>https://muhammadamal.my.id/blog/react-concurrent-rendering-usetransition/</link>
      <pubDate>Mon, 04 Apr 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/react-concurrent-rendering-usetransition/</guid>
      <description>React 18 concurrent rendering. useTransition for non-urgent updates, useDeferredValue for derived values. When each wins.</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>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>Multi-Stage Docker Builds Cut Our Image Size by 70%</title>
      <link>https://muhammadamal.my.id/blog/multi-stage-docker-build-image-size/</link>
      <pubDate>Fri, 07 Jan 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/multi-stage-docker-build-image-size/</guid>
      <description>Multi-stage Docker builds, real numbers. 70% smaller images with Buildx, distroless, and Alpine. CI cache layers that actually save time.</description>
    </item>
  </channel>
</rss>
