<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Postgresql on Gaurav.dev</title><link>/tags/postgresql/</link><description>Recent content in Postgresql on Gaurav.dev</description><generator>Hugo</generator><language>en-US</language><copyright>© 2026 Gaurav. Built with care and clean code.</copyright><lastBuildDate>Sun, 30 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="/tags/postgresql/index.xml" rel="self" type="application/rss+xml"/><item><title>PostgreSQL Performance: Fix the Model Before Adding Hardware</title><link>/posts/postgresql-performance-basics/</link><pubDate>Sun, 30 Aug 2026 00:00:00 +0000</pubDate><guid>/posts/postgresql-performance-basics/</guid><description>&lt;p&gt;When a PostgreSQL-backed application slows down, larger infrastructure can hide the symptom while preserving the cause. A better response starts with evidence.&lt;/p&gt;&#10;&lt;h2 id="find-the-expensive-work"&gt;Find the expensive work&lt;/h2&gt;&#10;&lt;p&gt;Enable and review query statistics, then rank statements by total time—not only average duration. A moderately slow query executed thousands of times may cost more than one dramatic report. Correlate database behaviour with application endpoints, background jobs, and recent releases.&lt;/p&gt;&#10;&lt;p&gt;Use &lt;code&gt;EXPLAIN (ANALYZE, BUFFERS)&lt;/code&gt; on a safe environment with representative data. Look for large row-estimate errors, sequential scans over selective predicates, repeated nested operations, sorting that spills to disk, and far more rows removed than returned.&lt;/p&gt;</description></item><item><title>Building a Python Full Stack for Generative AI Products</title><link>/posts/python-full-stack-generative-ai/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>/posts/python-full-stack-generative-ai/</guid><description>&lt;p&gt;An AI product is still a product. It needs authentication, permissions, billing, data ownership, reliable jobs, observable failures, and an interface that helps users judge uncertain results. A practical Python full stack handles those concerns without forcing model code into every layer.&lt;/p&gt;&#10;&lt;h2 id="choose-the-application-centre"&gt;Choose the application centre&lt;/h2&gt;&#10;&lt;p&gt;Use Django when the product needs an integrated business platform: relational workflows, administration, users, permissions, and substantial back-office operations. Django’s conventions reduce the number of infrastructure decisions and give operations teams useful interfaces early.&lt;/p&gt;</description></item><item><title>Supabase and Prisma: Useful Shortcuts, Different Responsibilities</title><link>/posts/supabase-prisma-managed-backend/</link><pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate><guid>/posts/supabase-prisma-managed-backend/</guid><description>&lt;p&gt;Supabase and Prisma frequently appear in modern TypeScript stacks, but they solve different problems. Supabase is a managed backend platform centred on PostgreSQL, authentication, storage, realtime capabilities, and server-side functions. Prisma is an ORM and database toolkit that gives application code a typed data client and migration workflow. They can complement each other, but neither removes the need to design the database.&lt;/p&gt;&#10;&lt;h2 id="what-supabase-accelerates"&gt;What Supabase accelerates&lt;/h2&gt;&#10;&lt;p&gt;Supabase can eliminate weeks of commodity platform work. A team can provision PostgreSQL, authenticate users, store files, subscribe to changes, and expose controlled data access quickly. This is valuable for prototypes, internal products, SaaS applications, and teams that want managed operations without giving up relational data.&lt;/p&gt;</description></item></channel></rss>