<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Annie Ghazali</title>
    <description>The latest articles on DEV Community by Annie Ghazali (@annnnnniieeee).</description>
    <link>https://dev.to/annnnnniieeee</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3941008%2Fe417793b-de25-44be-ab65-df74c4d6533b.jpg</url>
      <title>DEV Community: Annie Ghazali</title>
      <link>https://dev.to/annnnnniieeee</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/annnnnniieeee"/>
    <language>en</language>
    <item>
      <title>Inside a PostgreSQL Checkpointer Bug: A Production Postmortem</title>
      <dc:creator>Annie Ghazali</dc:creator>
      <pubDate>Fri, 03 Jul 2026 06:39:07 +0000</pubDate>
      <link>https://dev.to/annnnnniieeee/inside-a-postgresql-checkpointer-bug-a-production-postmortem-591j</link>
      <guid>https://dev.to/annnnnniieeee/inside-a-postgresql-checkpointer-bug-a-production-postmortem-591j</guid>
      <description>&lt;p&gt;One of our client’s PostgreSQL 16.8 production databases started logging what looked like a memory error:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;ERROR: invalid memory alloc request size&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The error immediately pointed toward two likely suspects: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Memory exhaustion&lt;/li&gt;
&lt;li&gt;Memory corruption&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As it turned out, neither was the culprit. Instead, it had encountered a known PostgreSQL bug that trapped the checkpointer in an infinite retry loop. The only way to recover was a forced restart, followed by an extended period of WAL replay during crash recovery. In this article, &lt;a class="mentioned-user" href="https://dev.to/warda_bibi_"&gt;@warda_bibi_&lt;/a&gt; explains what happened, why manual checkpoints couldn’t fix it, and how a PostgreSQL minor version upgrade permanently resolved the issue.&lt;/p&gt;

&lt;p&gt;Read more: &lt;a href="https://stormatics.tech/blogs/postgresql-checkpointer-bug-causing-infinite-retry-loop" rel="noopener noreferrer"&gt;https://stormatics.tech/blogs/postgresql-checkpointer-bug-causing-infinite-retry-loop&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>postgres</category>
      <category>database</category>
    </item>
    <item>
      <title>PostgreSQL Wait Events: A Production Diagnostic Guide</title>
      <dc:creator>Annie Ghazali</dc:creator>
      <pubDate>Thu, 02 Jul 2026 19:32:55 +0000</pubDate>
      <link>https://dev.to/annnnnniieeee/postgresql-wait-events-a-production-diagnostic-guide-11k5</link>
      <guid>https://dev.to/annnnnniieeee/postgresql-wait-events-a-production-diagnostic-guide-11k5</guid>
      <description>&lt;p&gt;A query plan tells you what PostgreSQL intended to do. A wait event tells you what it actually did with its time. Most performance work we see in production starts one layer too high, in the EXPLAIN output, when the cheaper answer is already sitting in pg_stat_activity. &lt;br&gt;
Read more: &lt;a href="https://stormatics.tech/blogs/understanding-wait-events-in-postgresql" rel="noopener noreferrer"&gt;https://stormatics.tech/blogs/understanding-wait-events-in-postgresql&lt;/a&gt;&lt;/p&gt;

</description>
      <category>postgres</category>
      <category>database</category>
      <category>performance</category>
    </item>
    <item>
      <title>MCP For PostgreSQL: Automated Health Checks &amp; Performance Analysis</title>
      <dc:creator>Annie Ghazali</dc:creator>
      <pubDate>Wed, 24 Jun 2026 12:28:18 +0000</pubDate>
      <link>https://dev.to/annnnnniieeee/mcp-for-postgresql-automated-health-checks-performance-analysis-5546</link>
      <guid>https://dev.to/annnnnniieeee/mcp-for-postgresql-automated-health-checks-performance-analysis-5546</guid>
      <description>&lt;p&gt;&lt;a class="mentioned-user" href="https://dev.to/warda_bibi_"&gt;@warda_bibi_&lt;/a&gt; has been experimenting with AI-assisted PostgreSQL troubleshooting for some time, and one project that stands out is postgres-mcp. It combines deterministic diagnostics, workload analysis, and access controls in a way that makes AI assistance practical without removing the human from the loop.&lt;/p&gt;

&lt;p&gt;Read more: &lt;a href="https://stormatics.tech/blogs/mcp-for-postgresql-automated-health-checks-performance-analysis" rel="noopener noreferrer"&gt;https://stormatics.tech/blogs/mcp-for-postgresql-automated-health-checks-performance-analysis&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>postgres</category>
      <category>database</category>
      <category>mcp</category>
    </item>
    <item>
      <title>How To Run Logical Replication On A Production PostgreSQL Cluster</title>
      <dc:creator>Annie Ghazali</dc:creator>
      <pubDate>Tue, 23 Jun 2026 13:22:23 +0000</pubDate>
      <link>https://dev.to/annnnnniieeee/how-to-run-logical-replication-on-a-production-postgresql-cluster-4nfi</link>
      <guid>https://dev.to/annnnnniieeee/how-to-run-logical-replication-on-a-production-postgresql-cluster-4nfi</guid>
      <description>&lt;p&gt;Upgrading PostgreSQL in production is not fun. You have real data, real users, and a version of Postgres that’s probably several major releases behind. The obvious approach (dump, upgrade, restore) works fine on a 10GB database on a Saturday night. It doesn’t work when you have TBs of data, applications that can’t afford hours of downtime, and a team watching the monitoring dashboard at 2am.&lt;/p&gt;

&lt;p&gt;Read more: &lt;a href="https://stormatics.tech/blogs/how-to-run-logical-replication-on-a-production-postgresql-cluster" rel="noopener noreferrer"&gt;https://stormatics.tech/blogs/how-to-run-logical-replication-on-a-production-postgresql-cluster&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>File Descriptors: The OS Limit That Takes Down PostgreSQL</title>
      <dc:creator>Annie Ghazali</dc:creator>
      <pubDate>Wed, 10 Jun 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/annnnnniieeee/file-descriptors-the-os-limit-that-takes-down-postgresql-4no5</link>
      <guid>https://dev.to/annnnnniieeee/file-descriptors-the-os-limit-that-takes-down-postgresql-4no5</guid>
      <description>&lt;p&gt;Most PostgreSQL outages that trace back to file descriptor exhaustion get misread as a database problem. The failure is one layer down: the kernel runs out of file descriptors and PostgreSQL takes the hit. This post covers how that happens under high connection counts, how to read the log sequence when it does, and how to fix it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://stormatics.tech/blogs/file-descriptors-the-os-limit-that-takes-down-postgresql" rel="noopener noreferrer"&gt;Read more&lt;/a&gt;&lt;/p&gt;

</description>
      <category>database</category>
      <category>linux</category>
      <category>postgres</category>
      <category>sre</category>
    </item>
    <item>
      <title>PostgreSQL Training: One-Day Intensive Course</title>
      <dc:creator>Annie Ghazali</dc:creator>
      <pubDate>Tue, 09 Jun 2026 09:16:54 +0000</pubDate>
      <link>https://dev.to/annnnnniieeee/postgresql-training-one-day-intensive-course-188a</link>
      <guid>https://dev.to/annnnnniieeee/postgresql-training-one-day-intensive-course-188a</guid>
      <description>&lt;p&gt;Expert-led, one-day training is designed to equip you with production-grade PostgreSQL skills. This intensive course delivers battle-tested strategies and insights to help you operate PostgreSQL with confidence.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://resources.stormatics.tech/postgresql-training-one-day-course" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fresources.stormatics.tech%2Fhubfs%2FTraining%2520%283%29-1.png" height="450" class="m-0" width="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://resources.stormatics.tech/postgresql-training-one-day-course" rel="noopener noreferrer" class="c-link"&gt;
            PostgreSQL Training: One-Day Intensive Course
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            This expert-led, one-day training is designed to equip you with production-grade PostgreSQL skills. Whether you're facing challenges in database management, high availability, parameter tuning, or performance optimization, this intensive course delivers battle-tested strategies and insights to help you operate PostgreSQL with confidence.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fresources.stormatics.tech%2Fhubfs%2FblockForm-Logo.png" width="537" height="537"&gt;
          resources.stormatics.tech
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


</description>
      <category>postgres</category>
      <category>database</category>
    </item>
    <item>
      <title>How to Cut Over After a PostgreSQL Migration</title>
      <dc:creator>Annie Ghazali</dc:creator>
      <pubDate>Thu, 21 May 2026 10:51:43 +0000</pubDate>
      <link>https://dev.to/annnnnniieeee/how-to-cut-over-after-a-postgresql-migration-j82</link>
      <guid>https://dev.to/annnnnniieeee/how-to-cut-over-after-a-postgresql-migration-j82</guid>
      <description>&lt;p&gt;Two most common cutover strategies for PostgreSQL, what each one costs you, and what each one gives you back. &lt;a href="https://stormatics.tech/blogs/how-to-cut-over-after-a-postgresql-migration" rel="noopener noreferrer"&gt;Read more&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbzq98r3r8isaqh1hbh2g.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbzq98r3r8isaqh1hbh2g.webp" alt="Comparison table" width="800" height="518"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
