<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Archive on Kaisekukun</title><link>https://netguide.jp/zh-tw/tags/archive/</link><description>Recent content in Archive on Kaisekukun</description><generator>Hugo -- gohugo.io</generator><language>zh-tw</language><copyright>Kaisekukun</copyright><lastBuildDate>Sat, 27 Jun 2026 15:00:00 +0900</lastBuildDate><atom:link href="https://netguide.jp/zh-tw/tags/archive/index.xml" rel="self" type="application/rss+xml"/><item><title>PostgreSQL Maintenance 基礎 for Stable Production</title><link>https://netguide.jp/zh-tw/software/postgres-database-maintenance/</link><pubDate>Mon, 22 Jun 2026 15:00:00 +0900</pubDate><guid>https://netguide.jp/zh-tw/software/postgres-database-maintenance/</guid><description>&lt;img src="https://netguide.jp/img/thumbnail/postgres-database-maintenance-zh-tw.png" alt="Featured image of post PostgreSQL Maintenance 基礎 for Stable Production" /&gt;&lt;p&gt;When running PostgreSQL in production, performance can degrade and transactions can bloat without you noticing. This article covers the maintenance fundamentals you need to keep PostgreSQL running smoothly.&lt;/p&gt;
&lt;h2 id="1-vacuum-cleaning-up-dead-tuples"&gt;1. VACUUM: Cleaning Up Dead Tuples
&lt;/h2&gt;&lt;p&gt;PostgreSQL uses MVCC (Multi-Version Concurrency Control), which means old row versions (dead tuples) linger in tables after updates and deletes. Left unchecked, tables bloat and performance suffers.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;-- Run a standard VACUUM (does not block other operations)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;VACUUM&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;-- Reclaim space to the OS (acquires table lock)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;VACUUM&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;FULL&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Production environments have &lt;code&gt;autovacuum&lt;/code&gt; enabled by default, but busy tables may need tuned settings:&lt;/p&gt;</description></item><item><title>面向 Web 開發人員的 PostgreSQL 效能調優</title><link>https://netguide.jp/zh-tw/software/postgres-performance-tuning/</link><pubDate>Mon, 20 Apr 2026 12:00:00 +0900</pubDate><guid>https://netguide.jp/zh-tw/software/postgres-performance-tuning/</guid><description>&lt;img src="https://netguide.jp/img/thumbnail/postgres-performance-tuning-zh-tw.png" alt="Featured image of post 面向 Web 開發人員的 PostgreSQL 效能調優" /&gt;&lt;p&gt;透過使用 EXPLAIN 分析 PostgreSQL 中的資料庫查詢來優化效能緩慢的應用程式。緩慢的查詢是大多數 Web 應用程式中最大的瓶頸。本指南將引導您了解基本的索引優化指南、如何閱讀執行計劃以及自託管或託管資料庫的關鍵配置參數調整。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="1-設計有效的指標"&gt;1. 設計有效的指標
&lt;/h2&gt;&lt;p&gt;現代資料庫的主要瓶頸是磁碟 I/O（從儲存中讀取區塊檔案）。新增索引可以讓PostgreSQL直接查詢資料記錄，而不是掃描整個表。&lt;/p&gt;
&lt;h3 id="1b樹索引預設值"&gt;1）B樹索引預設值
&lt;/h3&gt;&lt;p&gt;標準 B 樹索引支援多種運算符類別：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;直接匹配和範圍（&lt;code&gt;=&lt;/code&gt;、&lt;code&gt;&amp;lt;&lt;/code&gt;、&lt;code&gt;&amp;gt;&lt;/code&gt;、&lt;code&gt;BETWEEN&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;連接條件 (&lt;code&gt;JOIN ON ...&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;排序操作 (&lt;code&gt;ORDER BY&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2複合索引的列順序規則"&gt;2）複合索引的列順序規則
&lt;/h3&gt;&lt;p&gt;建立複合索引（組合多個欄位）時，PostgreSQL 從左到右解析列。訂單事宜：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;-- Create a composite index
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;CREATE&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;INDEX&lt;/span&gt; idx_users_status_created &lt;span style="color:#66d9ef"&gt;ON&lt;/span&gt; users (status, created_at);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;-- ◯ Index will be used (leftmost column &amp;#34;status&amp;#34; is present in the query)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;SELECT&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;FROM&lt;/span&gt; users &lt;span style="color:#66d9ef"&gt;WHERE&lt;/span&gt; status &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;active&amp;#39;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;AND&lt;/span&gt; created_at &lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;2026-01-01&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;SELECT&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;FROM&lt;/span&gt; users &lt;span style="color:#66d9ef"&gt;WHERE&lt;/span&gt; status &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;active&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;-- ✕ Index will NOT be used efficiently (leftmost column &amp;#34;status&amp;#34; is missing)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;SELECT&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;FROM&lt;/span&gt; users &lt;span style="color:#66d9ef"&gt;WHERE&lt;/span&gt; created_at &lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;2026-01-01&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="2-使用-explain-analyze-分析執行計劃"&gt;2. 使用 &lt;code&gt;EXPLAIN ANALYZE&lt;/code&gt; 分析執行計劃
&lt;/h2&gt;&lt;p&gt;若要診斷慢速查詢，請將 &lt;code&gt;EXPLAIN ANALYZE&lt;/code&gt; 新增至您的 SQL 語句中並在控制台中執行它：&lt;/p&gt;</description></item></channel></rss>