<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>PGSQL on Pigsty v5.0</title>
    <link>https://pgsty.pro/module/pgsql/</link>
    <description>Recent content in PGSQL on Pigsty v5.0</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    
    
    
      <lastBuildDate>Sat, 11 Jan 2025 00:00:00 +0000</lastBuildDate>
    
    
      <atom:link href="https://pgsty.pro/module/pgsql/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>Cluster / Instance</title>
        <link>https://pgsty.pro/docs/pgsql/config/cluster/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/config/cluster/</guid>
        <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Choose the appropriate instance and cluster types based on your requirements to configure PostgreSQL database clusters that meet your needs.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;You can define different types of instances and clusters. Here are several common PostgreSQL instance/cluster types in Pigsty:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/cluster/#primary&#34;&gt;Primary&lt;/a&gt;: Define a single instance cluster.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/cluster/#replica&#34;&gt;Replica&lt;/a&gt;: Define a basic HA cluster with one primary and one replica.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/cluster/#offline&#34;&gt;Offline&lt;/a&gt;: Define an instance dedicated to OLAP/ETL/interactive queries&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/cluster/#sync-standby&#34;&gt;Sync Standby&lt;/a&gt;: Enable synchronous commit to ensure no data loss.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/cluster/#quorum-commit&#34;&gt;Quorum Commit&lt;/a&gt;: Use quorum sync commit for a higher consistency level.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/cluster/#standby-cluster&#34;&gt;Standby Cluster&lt;/a&gt;: Clone an existing cluster and follow it&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/cluster/#delayed-cluster&#34;&gt;Delayed Cluster&lt;/a&gt;: Clone an existing cluster for emergency data recovery&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/cluster/#citus-cluster&#34;&gt;Citus Cluster&lt;/a&gt;: Define a Citus distributed database cluster&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;primary&#34;&gt;Primary&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;We start with the simplest case: a single instance cluster consisting of one primary:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Managing PostgreSQL Clusters</title>
        <link>https://pgsty.pro/docs/pgsql/admin/cluster/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/admin/cluster/</guid>
        <description>&lt;h2 id=&#34;quick-reference&#34;&gt;Quick Reference&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--full td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;full-width&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Action&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Command&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/cluster/#create-cluster&#34;&gt;&lt;strong&gt;Create Cluster&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bin/pgsql-add &amp;lt;cls&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Create a new PostgreSQL cluster&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/cluster/#expand-cluster&#34;&gt;&lt;strong&gt;Expand Cluster&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bin/pgsql-add &amp;lt;cls&amp;gt; &amp;lt;ip...&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Add replica to existing cluster&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/cluster/#shrink-cluster&#34;&gt;&lt;strong&gt;Shrink Cluster&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bin/pgsql-rm &amp;lt;cls&amp;gt; &amp;lt;ip...&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Remove instance from cluster&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/cluster/#remove-cluster&#34;&gt;&lt;strong&gt;Remove Cluster&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bin/pgsql-rm &amp;lt;cls&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Destroy entire PostgreSQL cluster&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/cluster/#reload-service&#34;&gt;&lt;strong&gt;Reload Service&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bin/pgsql-svc &amp;lt;cls&amp;gt; [ip...]&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Reload cluster load balancer config&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/cluster/#reload-hba&#34;&gt;&lt;strong&gt;Reload HBA&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bin/pgsql-hba &amp;lt;cls&amp;gt; [ip...]&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Reload cluster HBA access rules&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/cluster/#clone-cluster&#34;&gt;&lt;strong&gt;Clone Cluster&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;-&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Clone via standby cluster or PITR&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;For other management tasks, see: &lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/patroni/&#34;&gt;&lt;strong&gt;HA Management&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/user/&#34;&gt;&lt;strong&gt;Manage Users&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/db/&#34;&gt;&lt;strong&gt;Manage Databases&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Model of Patroni Passive Failure</title>
        <link>https://pgsty.pro/docs/concept/ha/failure/passive/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/concept/ha/failure/passive/</guid>
        <description>&lt;pre class=&#34;td-infographic-source&#34;&gt;&lt;code class=&#34;language-infographic&#34;&gt;infographic list-row-simple-horizontal-arrow&#xA;data&#xA;&#xA;  desc Lease Expiration Stages&#xA;  items&#xA;    - label Lease Expiration&#xA;    - label Replica Detect&#xA;    - label Elect &amp;amp; Promote&#xA;    - label Haproxy Up&#xA;theme light&#xA;  palette antv&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;rto-timeline&#34;&gt;RTO Timeline&#xA;&lt;/h2&gt;&#xA;&lt;script&gt;&#xA;window.OinkEchartsFunctions = window.OinkEchartsFunctions || {};&#xA;(function (registry) {&#xA;var fmt = function(params) { if (!params || !params.length || params[0].name === &#39;&#39;) return &#39;&#39;; return &#39;&lt;b&gt;&#39; + params[0].name + &#39;&lt;/b&gt;&lt;br/&gt;&#39; + params.filter(p =&gt; p.value !== &#39;-&#39; &amp;&amp; p.value != null).map(p =&gt; p.marker + &#39; &#39; + p.seriesName + &#39;: &#39; + p.value + &#39;s&#39;).join(&#39;&lt;br/&gt;&#39;); };&#xA;registry[&#34;fmt&#34;] = fmt;&#xA;})(window.OinkEchartsFunctions);&#xA;&lt;/script&gt;&#xA;&lt;pre class=&#34;td-echarts-source&#34;&gt;&lt;code class=&#34;language-echarts&#34;&gt;tooltip: { trigger: axis, axisPointer: { type: shadow }, formatter: $fn:fmt }&#xA;legend: { top: 0, itemGap: 12, data: [Lease Expiration, Replica Detection, Lock Contest &amp;amp; Promote, Health Check] }&#xA;grid: { left: 64, right: 24, bottom: 32, top: 40 }&#xA;xAxis: { type: value, name: Seconds, nameLocation: end, max: 160, axisLine: { show: true }, axisTick: { show: true }, splitLine: { show: true, lineStyle: { type: dashed, opacity: 0.5 } }, minorTick: { show: true, splitNumber: 5 }, minorSplitLine: { show: true, lineStyle: { type: dotted, opacity: 0.2 } } }&#xA;yAxis: { type: category, axisLine: { show: true }, axisTick: { show: true }, splitLine: { show: false }, axisLabel: { fontSize: 10, fontFamily: monospace }, data: [wide-max, wide-avg, wide-min, &amp;#34;&amp;#34;, safe-max, safe-avg, safe-min, &amp;#34;&amp;#34;, norm-max, norm-avg, norm-min, &amp;#34;&amp;#34;, fast-max, fast-avg, fast-min] }&#xA;series:&#xA;  - { name: Lease Expire, type: bar, stack: main, barWidth: 20, z: 2, emphasis: { focus: series }, itemStyle: { color: &amp;#34;#e15759&amp;#34; }, data: [120, 110, 100, &amp;#34;-&amp;#34;, 60, 55, 50, &amp;#34;-&amp;#34;, 30, 27, 25, &amp;#34;-&amp;#34;, 20, 17, 15] }&#xA;  - { name: Replica Detect, type: bar, stack: main, z: 2, emphasis: { focus: series }, itemStyle: { color: &amp;#34;#edc949&amp;#34; }, data: [20, 10, 0, &amp;#34;-&amp;#34;, 10, 5, 0, &amp;#34;-&amp;#34;, 5, 3, 0, &amp;#34;-&amp;#34;, 5, 3, 0] }&#xA;  - { name: Elect &amp;amp; Promote, type: bar, stack: main, z: 2, emphasis: { focus: series }, itemStyle: { color: &amp;#34;#59a14f&amp;#34; }, data: [2, 1, 0, &amp;#34;-&amp;#34;, 2, 1, 0, &amp;#34;-&amp;#34;, 2, 1, 0, &amp;#34;-&amp;#34;, 2, 1, 0] }&#xA;  - { name: HAProxy Check, type: bar, stack: main, z: 2, emphasis: { focus: series }, itemStyle: { color: &amp;#34;#4e79a7&amp;#34; }, data: [8, 6, 4, &amp;#34;-&amp;#34;, 6, 5, 3, &amp;#34;-&amp;#34;, 4, 3, 2, &amp;#34;-&amp;#34;, 2, 2, 1] }&#xA;  - { name: Total RTO, type: bar, barGap: &amp;#34;-100%&amp;#34;, barWidth: 20, z: 1, itemStyle: { color: &amp;#34;#888&amp;#34;, opacity: 0 }, emphasis: { itemStyle: { opacity: 0 } }, data: [150, 127, 104, &amp;#34;-&amp;#34;, 78, 66, 53, &amp;#34;-&amp;#34;, 41, 34, 27, &amp;#34;-&amp;#34;, 29, 23, 16] }&#xA;  - { name: RTO Budget, type: bar, barGap: &amp;#34;-100%&amp;#34;, barWidth: 20, z: 0, itemStyle: { color: &amp;#34;rgba(0,0,0,0.08)&amp;#34; }, emphasis: { itemStyle: { color: &amp;#34;rgba(0,0,0,0.12)&amp;#34; } }, data: [150, 150, 150, &amp;#34;-&amp;#34;, 90, 90, 90, &amp;#34;-&amp;#34;, 45, 45, 45, &amp;#34;-&amp;#34;, 30, 30, 30] }&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;failure-model&#34;&gt;Failure Model&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--full td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;full-width&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Phase&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Best&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Worst&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Average&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Lease Expiration&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;ttl - loop&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;ttl&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;ttl - loop/2&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Best: crash just before refresh&lt;br/&gt;Worst: crash right after refresh&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Replica Detect&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;loop&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;loop / 2&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Best: exactly at check point&lt;br/&gt;Worst: just missed check point&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Election Promote&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Best: direct lock and promote&lt;br/&gt;Worst: API timeout + Promote&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;HAProxy Check&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;(rise-1) × fastinter&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;(rise-1) × fastinter + inter&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;(rise-1) × fastinter + inter/2&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Best: state change before check&lt;br/&gt;Worst: state change right after check&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;&lt;strong&gt;Key Difference Between Passive and Active Failover&lt;/strong&gt;:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Parameter Optimization Policy</title>
        <link>https://pgsty.pro/docs/pgsql/template/tune/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/template/tune/</guid>
        <description>&lt;p&gt;Pigsty provides four scenario-based parameter templates by default, which can be specified and used through the &lt;a href=&#34;https://pgsty.pro/docs/pgsql/param/#pg_conf&#34;&gt;&lt;code&gt;pg_conf&lt;/code&gt;&lt;/a&gt; parameter.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;tiny.yml&lt;/code&gt;: Optimized for small nodes, VMs, and demos (the template is labeled for 1-3 cores)&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;oltp.yml&lt;/code&gt;: Optimized for OLTP workloads and latency-sensitive applications (4C8GB+) (default template)&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;olap.yml&lt;/code&gt;: Optimized for OLAP workloads and throughput (4C8G+)&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;crit.yml&lt;/code&gt;: Optimized for data consistency and critical applications (4C8G+)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Pigsty adopts different parameter optimization strategies for these four default scenarios, as shown below:&lt;/p&gt;</description>
      </item>
    <item>
        <title>RPO Trade-offs</title>
        <link>https://pgsty.pro/docs/concept/ha/rpo/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/concept/ha/rpo/</guid>
        <description>&lt;p&gt;&lt;strong&gt;RPO&lt;/strong&gt; (Recovery Point Objective) defines the &lt;strong&gt;maximum amount of data loss&lt;/strong&gt; allowed when the primary fails.&lt;/p&gt;&#xA;&lt;p&gt;For scenarios where data integrity is critical, such as financial transactions, RPO = 0 is typically required, meaning no data loss is allowed.&lt;/p&gt;&#xA;&lt;p&gt;However, stricter RPO targets come at a cost: higher write latency, reduced system throughput, and the risk that replica failures may cause primary unavailability.&#xA;For typical scenarios, some data loss is acceptable in exchange for higher availability and performance.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Model of Patroni Active Failure</title>
        <link>https://pgsty.pro/docs/concept/ha/failure/active/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/concept/ha/failure/active/</guid>
        <description>&lt;pre class=&#34;td-infographic-source&#34;&gt;&lt;code class=&#34;language-infographic&#34;&gt;infographic list-row-simple-horizontal-arrow&#xA;data&#xA;  desc When Patroni is healthy but PostgreSQL crashes&#xA;  items&#xA;    - label Crash Found&#xA;    - label Restart Timeout&#xA;    - label Replica Detect&#xA;    - label Elect Promote&#xA;    - label HAProxy Check&#xA;theme light&#xA;  palette antv&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;rto-timeline&#34;&gt;RTO Timeline&#xA;&lt;/h2&gt;&#xA;&lt;script&gt;&#xA;window.OinkEchartsFunctions = window.OinkEchartsFunctions || {};&#xA;(function (registry) {&#xA;var fmt = function(params) { if (!params || !params.length || params[0].name === &#39;&#39;) return &#39;&#39;; return &#39;&lt;b&gt;&#39; + params[0].name + &#39;&lt;/b&gt;&lt;br/&gt;&#39; + params.filter(p =&gt; p.value !== &#39;-&#39; &amp;&amp; p.value != null).map(p =&gt; p.marker + &#39; &#39; + p.seriesName + &#39;: &#39; + p.value + &#39;s&#39;).join(&#39;&lt;br/&gt;&#39;); };&#xA;registry[&#34;fmt&#34;] = fmt;&#xA;})(window.OinkEchartsFunctions);&#xA;&lt;/script&gt;&#xA;&lt;pre class=&#34;td-echarts-source&#34;&gt;&lt;code class=&#34;language-echarts&#34;&gt;tooltip: { trigger: axis, axisPointer: { type: shadow }, formatter: $fn:fmt }&#xA;legend: { top: 0, itemGap: 12, data: [ Crash Found, Restart Timeout, Replica Detection, Elect Promote, HAProxy Check] }&#xA;grid: { left: 64, right: 24, bottom: 32, top: 40 }&#xA;xAxis: { type: value, name: Seconds, nameLocation: end, max: 160, axisLine: { show: true }, axisTick: { show: true }, splitLine: { show: true, lineStyle: { type: dashed, opacity: 0.5 } }, minorTick: { show: true, splitNumber: 5 }, minorSplitLine: { show: true, lineStyle: { type: dotted, opacity: 0.2 } } }&#xA;yAxis: { type: category, axisLine: { show: true }, axisTick: { show: true }, splitLine: { show: false }, axisLabel: { fontSize: 10, fontFamily: monospace }, data: [wide-max, wide-avg, wide-min, &amp;#34;&amp;#34;, safe-max, safe-avg, safe-min, &amp;#34;&amp;#34;, norm-max, norm-avg, norm-min, &amp;#34;&amp;#34;, fast-max, fast-avg, fast-min] }&#xA;series:&#xA;  - { name: Crash Found, type: bar, stack: main, barWidth: 20, z: 2, emphasis: { focus: series }, itemStyle: { color: &amp;#34;#b07aa1&amp;#34; }, data: [20, 10, 0, &amp;#34;-&amp;#34;, 10, 5, 0, &amp;#34;-&amp;#34;, 5, 3, 0, &amp;#34;-&amp;#34;, 5, 3, 0] }&#xA;  - { name: Restart Timeout, type: bar, stack: main, z: 2, emphasis: { focus: series }, itemStyle: { color: &amp;#34;#f28e2c&amp;#34; }, data: [95, 95, 0, &amp;#34;-&amp;#34;, 45, 45, 0, &amp;#34;-&amp;#34;, 25, 25, 0, &amp;#34;-&amp;#34;, 15, 15, 0] }&#xA;  - { name: Replica Detect, type: bar, stack: main, z: 2, emphasis: { focus: series }, itemStyle: { color: &amp;#34;#edc949&amp;#34; }, data: [20, 10, 0, &amp;#34;-&amp;#34;, 10, 5, 0, &amp;#34;-&amp;#34;, 5, 3, 0, &amp;#34;-&amp;#34;, 5, 3, 0] }&#xA;  - { name: Elect Promote, type: bar, stack: main, z: 2, emphasis: { focus: series }, itemStyle: { color: &amp;#34;#59a14f&amp;#34; }, data: [2, 1, 0, &amp;#34;-&amp;#34;, 2, 1, 0, &amp;#34;-&amp;#34;, 2, 1, 0, &amp;#34;-&amp;#34;, 2, 1, 0] }&#xA;  - { name: HAProxy Check, type: bar, stack: main, z: 2, emphasis: { focus: series }, itemStyle: { color: &amp;#34;#4e79a7&amp;#34; }, data: [8, 6, 4, &amp;#34;-&amp;#34;, 6, 5, 3, &amp;#34;-&amp;#34;, 4, 3, 2, &amp;#34;-&amp;#34;, 2, 2, 1] }&#xA;  - { name: RTO Total, type: bar, barGap: &amp;#34;-100%&amp;#34;, barWidth: 20, z: 1, itemStyle: { color: &amp;#34;#888&amp;#34;, opacity: 0 }, emphasis: { itemStyle: { opacity: 0 } }, data: [145, 122, 4, &amp;#34;-&amp;#34;, 73, 61, 3, &amp;#34;-&amp;#34;, 41, 35, 2, &amp;#34;-&amp;#34;, 29, 24, 1] }&#xA;  - { name: RTO Budget, type: bar, barGap: &amp;#34;-100%&amp;#34;, barWidth: 20, z: 0, itemStyle: { color: &amp;#34;rgba(0,0,0,0.08)&amp;#34; }, emphasis: { itemStyle: { color: &amp;#34;rgba(0,0,0,0.12)&amp;#34; } }, data: [150, 150, 150, &amp;#34;-&amp;#34;, 90, 90, 90, &amp;#34;-&amp;#34;, 45, 45, 45, &amp;#34;-&amp;#34;, 30, 30, 30] }&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;failure-model&#34;&gt;Failure Model&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--full td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;full-width&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Item&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Best&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Worst&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Average&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Crash Found&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;loop&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;loop/2&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Best: PG crashes right before check&lt;br/&gt;Worst: PG crashes right after check&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Restart Timeout&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;start&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;start&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Best: PG recovers instantly&lt;br/&gt;Worst: Wait full start timeout before releasing lease&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Replica Detect&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;loop&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;loop/2&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Best: Right at check point&lt;br/&gt;Worst: Just missed check point&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Elect Promote&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Best: Acquire lock and promote directly&lt;br/&gt;Worst: API timeout + Promote&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;HAProxy Check&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;(rise-1) × fastinter&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;(rise-1) × fastinter + inter&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;(rise-1) × fastinter + inter/2&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Best: State changes before check&lt;br/&gt;Worst: State changes right after check&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;&lt;strong&gt;Key Difference Between Active and Passive Failure&lt;/strong&gt;:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Kernel Version</title>
        <link>https://pgsty.pro/docs/pgsql/config/kernel/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/config/kernel/</guid>
        <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Choosing a &amp;ldquo;kernel&amp;rdquo; in Pigsty means determining the PostgreSQL major version, mode/distribution, packages to install, and tuning templates to load.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;The Pigsty v4.5 source currently supports PostgreSQL 14-18 and uses 18 by default. The following content shows how to make these choices through configuration files.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;major-version-and-packages&#34;&gt;Major Version and Packages&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;pg_version&lt;/code&gt;: Specify the PostgreSQL major version (default 18). Pigsty will automatically map to the correct package name prefix based on the version.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;pg_packages&lt;/code&gt;: Define the core package set to install, supports using &lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/alias/&#34;&gt;package aliases&lt;/a&gt; (default &lt;code&gt;pgsql-main pgsql-common&lt;/code&gt;, includes kernel + patroni/pgbouncer/pgbackrest and other common tools).&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;pg_extensions&lt;/code&gt;: List of additional extension packages to install, also supports aliases; defaults to empty meaning only core dependencies are installed.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-c485c3e3-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;yaml&#34; data-td-line-count=&#34;5&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-c485c3e3-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;all&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;vars&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_packages&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;pgsql-main, pgsql-common ]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_extensions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;postgis, timescaledb, pgvector, pgml ]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Effect: Ansible will pull packages corresponding to &lt;code&gt;pg_version=18&lt;/code&gt; during installation, pre-install extensions to the system, and database initialization scripts can then directly &lt;code&gt;CREATE EXTENSION&lt;/code&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>OLTP Template</title>
        <link>https://pgsty.pro/docs/pgsql/template/oltp/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/template/oltp/</guid>
        <description>&lt;p&gt;&lt;code&gt;oltp.yml&lt;/code&gt; is Pigsty&amp;rsquo;s default config template, optimized for &lt;strong&gt;online transaction processing&lt;/strong&gt; (OLTP). Designed for 4-128 core CPUs with high concurrency, low latency, and high throughput.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Pair with &lt;a href=&#34;https://pgsty.pro/docs/node/param/#node_tune&#34;&gt;&lt;strong&gt;&lt;code&gt;node_tune&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; = &lt;code&gt;oltp&lt;/code&gt; for OS-level tuning.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;use-cases&#34;&gt;Use Cases&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;OLTP template is ideal for:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;E-commerce&lt;/strong&gt;: Order processing, inventory, user transactions&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Social apps&lt;/strong&gt;: User feeds, messaging, following relationships&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Gaming backends&lt;/strong&gt;: Player data, leaderboards, game state&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;SaaS applications&lt;/strong&gt;: Multi-tenant business systems&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Web apps&lt;/strong&gt;: CRUD-intensive workloads&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Workload characteristics&lt;/strong&gt;:&lt;/p&gt;</description>
      </item>
    <item>
        <title>E-R Model of PostgreSQL Cluster</title>
        <link>https://pgsty.pro/docs/concept/model/pgsql/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/concept/model/pgsql/</guid>
        <description>&lt;p&gt;The PGSQL module organizes PostgreSQL in production as &lt;strong&gt;clusters&lt;/strong&gt;—&lt;strong&gt;logical entities&lt;/strong&gt; composed of a group of database &lt;strong&gt;instances&lt;/strong&gt; associated by &lt;strong&gt;primary-replica&lt;/strong&gt; relationships.&lt;/p&gt;&#xA;&lt;p&gt;Each cluster is an &lt;strong&gt;autonomous&lt;/strong&gt; business unit consisting of at least one &lt;strong&gt;primary instance&lt;/strong&gt;, exposing capabilities through services.&lt;/p&gt;&#xA;&lt;p&gt;There are four core entities in Pigsty&amp;rsquo;s PGSQL module:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Cluster&lt;/strong&gt;: An autonomous PostgreSQL business unit serving as the top-level namespace for other entities.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Service&lt;/strong&gt;: A named abstraction that exposes capabilities, routes traffic, and exposes services using node ports.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Instance&lt;/strong&gt;: A single PostgreSQL server consisting of running processes and database files on a single node.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Node&lt;/strong&gt;: A hardware resource abstraction running Linux + Systemd environment—can be bare metal, VM, container, or Pod.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Along with two business entities—&amp;ldquo;Database&amp;rdquo; and &amp;ldquo;Role&amp;rdquo;—these form the complete logical view as shown below:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Managing PostgreSQL Users</title>
        <link>https://pgsty.pro/docs/pgsql/admin/user/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/admin/user/</guid>
        <description>&lt;h2 id=&#34;quick-start&#34;&gt;Quick Start&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Pigsty uses declarative management: first &lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/user/&#34;&gt;&lt;strong&gt;define users&lt;/strong&gt;&lt;/a&gt; in the &lt;a href=&#34;https://pgsty.pro/docs/concept/iac/inventory/&#34;&gt;&lt;strong&gt;inventory&lt;/strong&gt;&lt;/a&gt;, then use &lt;code&gt;bin/pgsql-user &amp;lt;cls&amp;gt; &amp;lt;username&amp;gt;&lt;/code&gt; to create or modify.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d1a0b689-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;yaml&#34; data-td-line-count=&#34;5&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d1a0b689-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;pg-meta&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;hosts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;{&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;10.10.10.10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;{&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_seq&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;1, pg_role&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;primary } }&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;vars&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_cluster&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;pg-meta&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_users&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;{&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;dbuser_app, password&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;#39;DBUser.App&amp;#39;, pgbouncer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;}&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# &amp;lt;--- Define user list here!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-tab-block td-tab-block--code&#34; data-td-tab=&#34;Script&#34; data-td-tab-group=&#34;script-playbook-example&#34; data-td-tab-value=&#34;script&#34; data-td-tab-kind=&#34;code&#34;&gt;&#xA;&lt;div class=&#34;td-tab-block__title&#34; data-td-tab-title&gt;Script&lt;/div&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d1a0b689-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d1a0b689-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bin/pgsql-user &amp;lt;cls&amp;gt; &amp;lt;username&amp;gt;    &lt;span class=&#34;c1&#34;&gt;# Create/modify &amp;lt;username&amp;gt; user on &amp;lt;cls&amp;gt; cluster&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-tab-block td-tab-block--code&#34; data-td-tab=&#34;Playbook&#34; data-td-tab-value=&#34;playbook&#34; data-td-tab-kind=&#34;code&#34;&gt;&#xA;&lt;div class=&#34;td-tab-block__title&#34; data-td-tab-title&gt;Playbook&lt;/div&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d1a0b689-fence-2&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d1a0b689-fence-2-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./pgsql-user.yml -l pg-meta -e &lt;span class=&#34;nv&#34;&gt;username&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;dbuser_app    &lt;span class=&#34;c1&#34;&gt;# Use playbook to create/modify user&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-tab-block td-tab-block--code&#34; data-td-tab=&#34;Example&#34; data-td-tab-value=&#34;example&#34; data-td-tab-kind=&#34;code&#34;&gt;&#xA;&lt;div class=&#34;td-tab-block__title&#34; data-td-tab-title&gt;Example&lt;/div&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d1a0b689-fence-3&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d1a0b689-fence-3-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bin/pgsql-user pg-meta dbuser_app    &lt;span class=&#34;c1&#34;&gt;# Create/modify dbuser_app user on pg-meta cluster&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;For the complete user definition reference, see &lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/user/&#34;&gt;&lt;strong&gt;User Configuration&lt;/strong&gt;&lt;/a&gt;. See &lt;a href=&#34;https://pgsty.pro/docs/concept/sec/ac/#role-system&#34;&gt;&lt;strong&gt;Access Control&lt;/strong&gt;&lt;/a&gt; for roles and privileges, and &lt;a href=&#34;https://pgsty.pro/docs/concept/sec/auth/&#34;&gt;&lt;strong&gt;Authentication&lt;/strong&gt;&lt;/a&gt; for credential management.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Managing PostgreSQL Databases</title>
        <link>https://pgsty.pro/docs/pgsql/admin/db/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/admin/db/</guid>
        <description>&lt;h2 id=&#34;quick-start&#34;&gt;Quick Start&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Pigsty uses declarative management: first &lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/db/&#34;&gt;&lt;strong&gt;define databases&lt;/strong&gt;&lt;/a&gt; in the &lt;a href=&#34;https://pgsty.pro/docs/concept/iac/inventory/&#34;&gt;&lt;strong&gt;inventory&lt;/strong&gt;&lt;/a&gt;, then use &lt;code&gt;bin/pgsql-db &amp;lt;cls&amp;gt; &amp;lt;dbname&amp;gt;&lt;/code&gt; to create or modify.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-a251855c-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;yaml&#34; data-td-line-count=&#34;5&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-a251855c-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;pg-meta&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;hosts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;{&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;10.10.10.10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;{&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_seq&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;1, pg_role&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;primary } }&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;vars&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_cluster&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;pg-meta&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_databases&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;{&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;some_db }] &lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# &amp;lt;--- Define database list here!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-tab-block td-tab-block--code&#34; data-td-tab=&#34;Script&#34; data-td-tab-group=&#34;script-playbook-example&#34; data-td-tab-value=&#34;script&#34; data-td-tab-kind=&#34;code&#34;&gt;&#xA;&lt;div class=&#34;td-tab-block__title&#34; data-td-tab-title&gt;Script&lt;/div&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-a251855c-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-a251855c-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bin/pgsql-db &amp;lt;cls&amp;gt; &amp;lt;dbname&amp;gt;    &lt;span class=&#34;c1&#34;&gt;# Create/modify &amp;lt;dbname&amp;gt; database on &amp;lt;cls&amp;gt; cluster&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-tab-block td-tab-block--code&#34; data-td-tab=&#34;Playbook&#34; data-td-tab-value=&#34;playbook&#34; data-td-tab-kind=&#34;code&#34;&gt;&#xA;&lt;div class=&#34;td-tab-block__title&#34; data-td-tab-title&gt;Playbook&lt;/div&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-a251855c-fence-2&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-a251855c-fence-2-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./pgsql-db.yml -l pg-meta -e &lt;span class=&#34;nv&#34;&gt;dbname&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;some_db    &lt;span class=&#34;c1&#34;&gt;# Use playbook to create/modify database&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-tab-block td-tab-block--code&#34; data-td-tab=&#34;Example&#34; data-td-tab-value=&#34;example&#34; data-td-tab-kind=&#34;code&#34;&gt;&#xA;&lt;div class=&#34;td-tab-block__title&#34; data-td-tab-title&gt;Example&lt;/div&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-a251855c-fence-3&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-a251855c-fence-3-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bin/pgsql-db pg-meta some_db    &lt;span class=&#34;c1&#34;&gt;# Create/modify some_db database on pg-meta cluster&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;For the complete database definition reference, see &lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/db/&#34;&gt;&lt;strong&gt;Database Configuration&lt;/strong&gt;&lt;/a&gt;. For database access permissions, see &lt;a href=&#34;https://pgsty.pro/docs/concept/sec/ac/#database-isolation&#34;&gt;&lt;strong&gt;Access Control: Database Isolation&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Failure Model</title>
        <link>https://pgsty.pro/docs/concept/ha/failure/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/concept/ha/failure/</guid>
        <description>&lt;p&gt;Patroni failures can be classified into 10 categories by failure target, and further consolidated into five categories based on detection path, which are detailed in this section.&lt;/p&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--full td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;full-width&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;#&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Failure Scenario&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Final Path&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;1&lt;/td&gt;&#xA;      &lt;td&gt;PG process crash&lt;/td&gt;&#xA;      &lt;td&gt;crash, OOM killed&lt;/td&gt;&#xA;      &lt;td&gt;&lt;strong&gt;Active Detection&lt;/strong&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;2&lt;/td&gt;&#xA;      &lt;td&gt;PG connection refused&lt;/td&gt;&#xA;      &lt;td&gt;max_connections&lt;/td&gt;&#xA;      &lt;td&gt;&lt;strong&gt;Active Detection&lt;/strong&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;3&lt;/td&gt;&#xA;      &lt;td&gt;PG zombie&lt;/td&gt;&#xA;      &lt;td&gt;Process alive but unresponsive&lt;/td&gt;&#xA;      &lt;td&gt;&lt;strong&gt;Active Detection&lt;/strong&gt; (timeout)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;4&lt;/td&gt;&#xA;      &lt;td&gt;Patroni process crash&lt;/td&gt;&#xA;      &lt;td&gt;kill -9, OOM&lt;/td&gt;&#xA;      &lt;td&gt;&lt;strong&gt;Passive Detection&lt;/strong&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;5&lt;/td&gt;&#xA;      &lt;td&gt;Patroni zombie&lt;/td&gt;&#xA;      &lt;td&gt;Process alive but stuck&lt;/td&gt;&#xA;      &lt;td&gt;&lt;strong&gt;Watchdog&lt;/strong&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;6&lt;/td&gt;&#xA;      &lt;td&gt;Node down&lt;/td&gt;&#xA;      &lt;td&gt;Power outage, hardware failure&lt;/td&gt;&#xA;      &lt;td&gt;&lt;strong&gt;Passive Detection&lt;/strong&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;7&lt;/td&gt;&#xA;      &lt;td&gt;Node zombie&lt;/td&gt;&#xA;      &lt;td&gt;IO hang, CPU starvation&lt;/td&gt;&#xA;      &lt;td&gt;&lt;strong&gt;Watchdog&lt;/strong&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;8&lt;/td&gt;&#xA;      &lt;td&gt;Primary ↔ DCS network failure&lt;/td&gt;&#xA;      &lt;td&gt;Firewall, switch failure&lt;/td&gt;&#xA;      &lt;td&gt;&lt;strong&gt;Network Partition&lt;/strong&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;9&lt;/td&gt;&#xA;      &lt;td&gt;Storage failure&lt;/td&gt;&#xA;      &lt;td&gt;Disk failure, disk full, mount failure&lt;/td&gt;&#xA;      &lt;td&gt;&lt;strong&gt;Active Detection&lt;/strong&gt; or &lt;strong&gt;Watchdog&lt;/strong&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;10&lt;/td&gt;&#xA;      &lt;td&gt;Manual switchover&lt;/td&gt;&#xA;      &lt;td&gt;Switchover/Failover&lt;/td&gt;&#xA;      &lt;td&gt;&lt;strong&gt;Manual Trigger&lt;/strong&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;However, for RTO calculation purposes, all failures ultimately converge to two paths. This section explores the upper bound, lower bound, and average RTO for these two scenarios.&lt;/p&gt;</description>
      </item>
    <item>
        <title>OLAP Template</title>
        <link>https://pgsty.pro/docs/pgsql/template/olap/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/template/olap/</guid>
        <description>&lt;p&gt;&lt;code&gt;olap.yml&lt;/code&gt; is optimized for &lt;strong&gt;online analytical processing&lt;/strong&gt; (OLAP). Designed for 4-128 core CPUs with support for large queries, high parallelism, relaxed timeouts, and aggressive vacuum.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Pair with &lt;a href=&#34;https://pgsty.pro/docs/node/param/#node_tune&#34;&gt;&lt;strong&gt;&lt;code&gt;node_tune&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; = &lt;code&gt;olap&lt;/code&gt; for OS-level tuning.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;use-cases&#34;&gt;Use Cases&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;OLAP template is ideal for:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Data warehouses&lt;/strong&gt;: Historical data storage, multidimensional analysis&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;BI reports&lt;/strong&gt;: Complex report queries, dashboard data sources&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;ETL processing&lt;/strong&gt;: Data extraction, transformation, loading&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Data analysis&lt;/strong&gt;: Ad-hoc queries, data exploration&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;HTAP mixed workloads&lt;/strong&gt;: Analytical replicas&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Workload characteristics&lt;/strong&gt;:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Package Alias</title>
        <link>https://pgsty.pro/docs/pgsql/config/alias/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/config/alias/</guid>
        <description>&lt;p&gt;PostgreSQL package naming conventions vary significantly across different operating systems:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;EL systems&lt;/strong&gt; (RHEL/Rocky/Alma/&amp;hellip;) use formats like &lt;code&gt;pgvector_18&lt;/code&gt;, &lt;code&gt;postgis36_18*&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Debian/Ubuntu systems&lt;/strong&gt; use formats like &lt;code&gt;postgresql-18-pgvector&lt;/code&gt;, &lt;code&gt;postgresql-18-postgis-3&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This difference adds cognitive burden to users: you need to remember different package name rules for different systems, and handle the embedding of PostgreSQL version numbers.&lt;/p&gt;&#xA;&lt;h2 id=&#34;package-alias&#34;&gt;Package Alias&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Pigsty solves this problem through the &lt;strong&gt;Package Alias&lt;/strong&gt; mechanism: you only need to use unified aliases, and Pigsty will handle all the details:&lt;/p&gt;</description>
      </item>
    <item>
        <title>CRIT Template</title>
        <link>https://pgsty.pro/docs/pgsql/template/crit/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/template/crit/</guid>
        <description>&lt;p&gt;&lt;code&gt;crit.yml&lt;/code&gt; targets transactional workloads with elevated consistency and audit requirements. It forces data checksums and Patroni strict synchronous mode, adds connection logging, and adjusts selected WAL, timeout, and parallel-query parameters.&lt;/p&gt;&#xA;&lt;p&gt;The template increases write latency and may block writes when no synchronous replica is available. Before use, confirm consistency objectives, failure domains, client commit settings, and availability requirements.&lt;/p&gt;&#xA;&lt;p&gt;Also evaluate &lt;a href=&#34;https://pgsty.pro/docs/node/param/#node_tune&#34;&gt;&lt;strong&gt;&lt;code&gt;node_tune: crit&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;, although host tuning and database parameters can be selected independently.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Patroni HA Management</title>
        <link>https://pgsty.pro/docs/pgsql/admin/patroni/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/admin/patroni/</guid>
        <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Pigsty uses Patroni to manage PostgreSQL clusters. It handles config changes, status checks, switchover, restart, reinit replicas, and more.&lt;/p&gt;&#xA;&lt;p&gt;To use Patroni for management, you need one of the following identities:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;From &lt;a href=&#34;https://pgsty.pro/docs/concept/arch/node/#admin-node&#34;&gt;&lt;strong&gt;INFRA node&lt;/strong&gt;&lt;/a&gt; as &lt;a href=&#34;https://pgsty.pro/docs/deploy/admin/&#34;&gt;&lt;strong&gt;admin user&lt;/strong&gt;&lt;/a&gt;, managing all clusters in the environment.&lt;/li&gt;&#xA;&lt;li&gt;From &lt;a href=&#34;https://pgsty.pro/docs/concept/arch/node/#pgsql-node&#34;&gt;&lt;strong&gt;PGSQL node&lt;/strong&gt;&lt;/a&gt; as &lt;a href=&#34;https://pgsty.pro/docs/pgsql/param/#pg_dbsu&#34;&gt;&lt;strong&gt;&lt;code&gt;pg_dbsu&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; (default &lt;code&gt;postgres&lt;/code&gt;), managing the current cluster only.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Patroni provides &lt;a href=&#34;https://patroni.readthedocs.io/en/latest/patronictl.html&#34;&gt;&lt;strong&gt;&lt;code&gt;patronictl&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; CLI for management. Pigsty provides a wrapper alias &lt;code&gt;pg&lt;/code&gt; to simplify operations.&lt;/p&gt;</description>
      </item>
    <item>
        <title>User/Role</title>
        <link>https://pgsty.pro/docs/pgsql/config/user/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/config/user/</guid>
        <description>&lt;blockquote&gt;&#xA;&lt;p&gt;In this document, &amp;ldquo;user&amp;rdquo; refers to a logical object within a database cluster created with &lt;code&gt;CREATE USER/ROLE&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;In PostgreSQL, users belong directly to the database cluster rather than a specific database. Therefore, when creating business databases and users, follow the principle of &amp;ldquo;users first, databases later&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;Pigsty defines roles and users through two config parameters:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/param/#pg_default_roles&#34;&gt;&lt;strong&gt;&lt;code&gt;pg_default_roles&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;: Define globally shared roles and users&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/param/#pg_users&#34;&gt;&lt;strong&gt;&lt;code&gt;pg_users&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;: Define business users and roles at cluster level&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The former defines roles/users shared across the entire environment; the latter defines business roles/users specific to a single cluster. Both have the same format as arrays of user definition objects.&#xA;Users/roles are created sequentially in array order, so later users can belong to roles defined earlier.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Database</title>
        <link>https://pgsty.pro/docs/pgsql/config/db/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/config/db/</guid>
        <description>&lt;blockquote&gt;&#xA;&lt;p&gt;In this document, &amp;ldquo;database&amp;rdquo; refers to a logical object within a database cluster created with &lt;code&gt;CREATE DATABASE&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;A PostgreSQL cluster can serve multiple &lt;strong&gt;databases&lt;/strong&gt; simultaneously. In Pigsty, you can &lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/db/#define-database&#34;&gt;&lt;strong&gt;define&lt;/strong&gt;&lt;/a&gt; required databases in cluster configuration.&lt;/p&gt;&#xA;&lt;p&gt;Pigsty customizes the &lt;code&gt;template1&lt;/code&gt; template database - creating default schemas, installing default extensions, configuring default privileges. Newly created databases inherit these settings from &lt;code&gt;template1&lt;/code&gt;.&#xA;You can also specify other template databases via &lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/db/#template&#34;&gt;&lt;strong&gt;&lt;code&gt;template&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; for instant &lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/db/#clone-database&#34;&gt;&lt;strong&gt;database cloning&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;By default, all business databases are 1:1 added to &lt;a href=&#34;https://pgsty.pro/docs/concept/arch/pgsql/#pgbouncer&#34;&gt;&lt;strong&gt;Pgbouncer&lt;/strong&gt;&lt;/a&gt; &lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/db/#connection-pool&#34;&gt;&lt;strong&gt;connection pool&lt;/strong&gt;&lt;/a&gt;; &lt;a href=&#34;https://pgsty.pro/docs/concept/arch/pgsql/#pg_exporter&#34;&gt;&lt;strong&gt;&lt;code&gt;pg_exporter&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; auto-discovers all business databases for in-database object monitoring.&#xA;All databases are also registered as PostgreSQL datasources in &lt;a href=&#34;https://pgsty.pro/docs/concept/arch/infra/#grafana&#34;&gt;&lt;strong&gt;Grafana&lt;/strong&gt;&lt;/a&gt; on all &lt;a href=&#34;https://pgsty.pro/docs/concept/arch/node/#infra-node&#34;&gt;&lt;strong&gt;INFRA nodes&lt;/strong&gt;&lt;/a&gt; for PGCAT dashboards.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Managing PostgreSQL HBA Rules</title>
        <link>https://pgsty.pro/docs/pgsql/admin/hba/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/admin/hba/</guid>
        <description>&lt;h2 id=&#34;quick-start&#34;&gt;Quick Start&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Pigsty uses declarative management: first &lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/hba/&#34;&gt;&lt;strong&gt;define HBA rules&lt;/strong&gt;&lt;/a&gt; in the &lt;a href=&#34;https://pgsty.pro/docs/concept/iac/inventory/&#34;&gt;&lt;strong&gt;inventory&lt;/strong&gt;&lt;/a&gt;, then use &lt;code&gt;bin/pgsql-hba &amp;lt;cls&amp;gt;&lt;/code&gt; to refresh.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-98574f61-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;yaml&#34; data-td-line-count=&#34;7&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-98574f61-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;pg-meta&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;hosts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;{&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;10.10.10.10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;{&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_seq&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;1, pg_role&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;primary } }&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;vars&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_cluster&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;pg-meta&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_hba_rules&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;                            &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# &amp;lt;--- Define HBA rules here!&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- {&lt;span class=&#34;nt&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;dbuser_app, db&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;app, addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;intra, auth&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pwd, title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;app access&amp;#39;&lt;/span&gt;}&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- {&lt;span class=&#34;nt&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;dbuser_api, db&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;all, addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;world, auth&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ssl, title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;api ssl access&amp;#39;&lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-tab-block td-tab-block--code&#34; data-td-tab=&#34;Script&#34; data-td-tab-group=&#34;script-playbook-example&#34; data-td-tab-value=&#34;script&#34; data-td-tab-kind=&#34;code&#34;&gt;&#xA;&lt;div class=&#34;td-tab-block__title&#34; data-td-tab-title&gt;Script&lt;/div&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-98574f61-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-98574f61-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bin/pgsql-hba &amp;lt;cls&amp;gt;              &lt;span class=&#34;c1&#34;&gt;# Refresh PostgreSQL and Pgbouncer HBA rules for cluster&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bin/pgsql-hba &amp;lt;cls&amp;gt; &amp;lt;ip&amp;gt;...      &lt;span class=&#34;c1&#34;&gt;# Refresh HBA rules for specific instances&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-tab-block td-tab-block--code&#34; data-td-tab=&#34;Playbook&#34; data-td-tab-value=&#34;playbook&#34; data-td-tab-kind=&#34;code&#34;&gt;&#xA;&lt;div class=&#34;td-tab-block__title&#34; data-td-tab-title&gt;Playbook&lt;/div&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-98574f61-fence-2&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-98574f61-fence-2-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./pgsql.yml -l &amp;lt;cls&amp;gt; -t pg_hba,pg_reload                 &lt;span class=&#34;c1&#34;&gt;# Refresh PostgreSQL HBA only&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./pgsql.yml -l &amp;lt;cls&amp;gt; -t pgbouncer_hba,pgbouncer_reload   &lt;span class=&#34;c1&#34;&gt;# Refresh Pgbouncer HBA only&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./pgsql.yml -l &amp;lt;cls&amp;gt; -t pg_hba,pg_reload,pgbouncer_hba,pgbouncer_reload  &lt;span class=&#34;c1&#34;&gt;# Refresh both&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-tab-block td-tab-block--code&#34; data-td-tab=&#34;Example&#34; data-td-tab-value=&#34;example&#34; data-td-tab-kind=&#34;code&#34;&gt;&#xA;&lt;div class=&#34;td-tab-block__title&#34; data-td-tab-title&gt;Example&lt;/div&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-98574f61-fence-3&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-98574f61-fence-3-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bin/pgsql-hba pg-meta                      &lt;span class=&#34;c1&#34;&gt;# Refresh pg-meta cluster HBA rules&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bin/pgsql-hba pg-meta 10.10.10.10          &lt;span class=&#34;c1&#34;&gt;# Refresh specific instance only&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bin/pgsql-hba pg-meta 10.10.10.11 10.10.10.12  &lt;span class=&#34;c1&#34;&gt;# Refresh multiple instances&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;For rule syntax, see &lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/hba/&#34;&gt;&lt;strong&gt;HBA Configuration&lt;/strong&gt;&lt;/a&gt;. For authentication methods, default boundaries, and credential management, see &lt;a href=&#34;https://pgsty.pro/docs/concept/sec/auth/&#34;&gt;&lt;strong&gt;Authentication&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Network Partition</title>
        <link>https://pgsty.pro/docs/concept/ha/failure/partition/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/concept/ha/failure/partition/</guid>
        <description>&lt;pre class=&#34;td-infographic-source&#34;&gt;&lt;code class=&#34;language-infographic&#34;&gt;infographic list-row-simple-horizontal-arrow&#xA;data&#xA;  title Network Partition Failover Flow&#xA;  desc Primary partitioned from DCS, Patroni proactively demotes to prevent split-brain, waits for TTL expiration before switchover&#xA;  items&#xA;    - label Primary Demote&#xA;      desc Patroni demotes PG after retry timeout&#xA;      icon mingcute/shield-fill&#xA;    - label Lease Expiration&#xA;      desc Leader Key TTL expires&#xA;      icon mingcute/close-circle-fill&#xA;    - label Replica Detection&#xA;      desc Replica detects lease expiration, starts election&#xA;      icon mingcute/key-2-fill&#xA;    - label Lock &amp;amp; Promote&#xA;      desc Replica acquires lock and promotes to new primary&#xA;      icon mingcute/radar-fill&#xA;    - label Health Check&#xA;      desc HAProxy detects new primary online&#xA;      icon mingcute/arrow-up-circle-fill&#xA;theme light&#xA;  palette antv&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;rto-timeline&#34;&gt;RTO Timeline&#xA;&lt;/h2&gt;&#xA;&lt;script&gt;&#xA;window.OinkEchartsFunctions = window.OinkEchartsFunctions || {};&#xA;(function (registry) {&#xA;var fmt = function(params) { if (!params || !params.length || params[0].name === &#39;&#39;) return &#39;&#39;; return &#39;&lt;b&gt;&#39; + params[0].name + &#39;&lt;/b&gt;&lt;br/&gt;&#39; + params.filter(p =&gt; p.value !== &#39;-&#39; &amp;&amp; p.value != null).map(p =&gt; p.marker + &#39; &#39; + p.seriesName + &#39;: &#39; + p.value + &#39;s&#39;).join(&#39;&lt;br/&gt;&#39;); };&#xA;registry[&#34;fmt&#34;] = fmt;&#xA;})(window.OinkEchartsFunctions);&#xA;&lt;/script&gt;&#xA;&lt;pre class=&#34;td-echarts-source&#34;&gt;&lt;code class=&#34;language-echarts&#34;&gt;tooltip: { trigger: axis, axisPointer: { type: shadow }, formatter: $fn:fmt }&#xA;legend: { top: 0, itemGap: 12, data: [Primary Demote, Lease Expiration, Replica Detection, Lock &amp;amp; Promote, Health Check] }&#xA;grid: { left: 64, right: 24, bottom: 32, top: 40 }&#xA;xAxis: { type: value, name: sec, nameLocation: end, max: 160, axisLine: { show: true }, axisTick: { show: true }, splitLine: { show: true, lineStyle: { type: dashed, opacity: 0.5 } }, minorTick: { show: true, splitNumber: 5 }, minorSplitLine: { show: true, lineStyle: { type: dotted, opacity: 0.2 } } }&#xA;yAxis: { type: category, axisLine: { show: true }, axisTick: { show: true }, splitLine: { show: false }, axisLabel: { fontSize: 10, fontFamily: monospace }, data: [wide-max, wide-avg, wide-min, &amp;#34;&amp;#34;, safe-max, safe-avg, safe-min, &amp;#34;&amp;#34;, norm-max, norm-avg, norm-min, &amp;#34;&amp;#34;, fast-max, fast-avg, fast-min] }&#xA;series:&#xA;  - { name: Primary Demote, type: bar, stack: main, barWidth: 20, z: 2, emphasis: { focus: series }, itemStyle: { color: &amp;#34;#76b7b2&amp;#34; }, data: [50, 40, 30, &amp;#34;-&amp;#34;, 30, 25, 20, &amp;#34;-&amp;#34;, 15, 13, 10, &amp;#34;-&amp;#34;, 10, 8, 5] }&#xA;  - { name: Lease Expiration, type: bar, stack: main, z: 2, emphasis: { focus: series }, itemStyle: { color: &amp;#34;#e15759&amp;#34; }, data: [70, 70, 70, &amp;#34;-&amp;#34;, 30, 30, 30, &amp;#34;-&amp;#34;, 15, 15, 15, &amp;#34;-&amp;#34;, 10, 10, 10] }&#xA;  - { name: Replica Detection, type: bar, stack: main, z: 2, emphasis: { focus: series }, itemStyle: { color: &amp;#34;#edc949&amp;#34; }, data: [20, 10, 0, &amp;#34;-&amp;#34;, 10, 5, 0, &amp;#34;-&amp;#34;, 5, 3, 0, &amp;#34;-&amp;#34;, 5, 3, 0] }&#xA;  - { name: Lock &amp;amp; Promote, type: bar, stack: main, z: 2, emphasis: { focus: series }, itemStyle: { color: &amp;#34;#59a14f&amp;#34; }, data: [2, 1, 0, &amp;#34;-&amp;#34;, 2, 1, 0, &amp;#34;-&amp;#34;, 2, 1, 0, &amp;#34;-&amp;#34;, 2, 1, 0] }&#xA;  - { name: Health Check, type: bar, stack: main, z: 2, emphasis: { focus: series }, itemStyle: { color: &amp;#34;#4e79a7&amp;#34; }, data: [8, 6, 4, &amp;#34;-&amp;#34;, 6, 5, 3, &amp;#34;-&amp;#34;, 4, 3, 2, &amp;#34;-&amp;#34;, 2, 2, 1] }&#xA;  - { name: RTO Total, type: bar, barGap: &amp;#34;-100%&amp;#34;, barWidth: 20, z: 1, itemStyle: { color: &amp;#34;#888&amp;#34;, opacity: 0 }, emphasis: { itemStyle: { opacity: 0 } }, data: [150, 127, 104, &amp;#34;-&amp;#34;, 78, 66, 53, &amp;#34;-&amp;#34;, 41, 34, 27, &amp;#34;-&amp;#34;, 29, 23, 16] }&#xA;  - { name: RTO Budget, type: bar, barGap: &amp;#34;-100%&amp;#34;, barWidth: 20, z: 0, itemStyle: { color: &amp;#34;rgba(0,0,0,0.08)&amp;#34; }, emphasis: { itemStyle: { color: &amp;#34;rgba(0,0,0,0.12)&amp;#34; } }, data: [150, 150, 150, &amp;#34;-&amp;#34;, 90, 90, 90, &amp;#34;-&amp;#34;, 45, 45, 45, &amp;#34;-&amp;#34;, 30, 30, 30] }&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;failure-model&#34;&gt;Failure Model&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--full td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;full-width&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Phase&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Best&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Worst&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Average&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Notes&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Demote&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;retry&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;loop + retry&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;loop/2 + retry&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Patroni retries after detecting partition, demotes after timeout&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Lease Expiration&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;ttl - loop - retry&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;ttl - loop - retry&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;ttl - loop - retry&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Remaining TTL time after demotion (approximately constant)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Replica Detection&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;loop&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;loop/2&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Best: Right at detection point&lt;br/&gt;Worst: Just missed detection&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Lock &amp;amp; Promote&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Best: Direct lock and promote&lt;br/&gt;Worst: API timeout + Promote&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Health Check&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;(rise-1) × fastinter&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;(rise-1) × fastinter + inter&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;(rise-1) × fastinter + inter/2&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Best: State changes before check&lt;br/&gt;Worst: State changes right after check&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;&lt;strong&gt;Key difference between network partition and node crash&lt;/strong&gt;:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Pgbouncer Connection Pooling</title>
        <link>https://pgsty.pro/docs/pgsql/admin/pgbouncer/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/admin/pgbouncer/</guid>
        <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Pigsty uses &lt;a href=&#34;https://www.pgbouncer.org/&#34;&gt;&lt;strong&gt;Pgbouncer&lt;/strong&gt;&lt;/a&gt; as PostgreSQL connection pooling middleware, listening on port &lt;code&gt;6432&lt;/code&gt; by default, proxying access to local PostgreSQL on port &lt;code&gt;5432&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;This is an &lt;strong&gt;optional component&lt;/strong&gt;. If you don&amp;rsquo;t have massive connections or need transaction pooling and query metrics, you can disable it, connect directly to the database, or keep it unused.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;user--database-management&#34;&gt;User &amp;amp; Database Management&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Pgbouncer users and databases are auto-managed by Pigsty, applying &lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/db/&#34;&gt;&lt;strong&gt;database config&lt;/strong&gt;&lt;/a&gt; and &lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/user/&#34;&gt;&lt;strong&gt;user config&lt;/strong&gt;&lt;/a&gt; when &lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/db/&#34;&gt;&lt;strong&gt;creating databases&lt;/strong&gt;&lt;/a&gt; and &lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/user/&#34;&gt;&lt;strong&gt;creating users&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>TINY Template</title>
        <link>https://pgsty.pro/docs/pgsql/template/tiny/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/template/tiny/</guid>
        <description>&lt;p&gt;&lt;code&gt;tiny.yml&lt;/code&gt; is optimized for &lt;strong&gt;micro instances&lt;/strong&gt; and resource-constrained environments. Designed for 1-3 core CPUs with minimal resource usage, conservative memory allocation, and disabled parallel queries.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Pair with &lt;a href=&#34;https://pgsty.pro/docs/node/param/#node_tune&#34;&gt;&lt;strong&gt;&lt;code&gt;node_tune&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; = &lt;code&gt;tiny&lt;/code&gt; for OS-level tuning.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;use-cases&#34;&gt;Use Cases&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;TINY template is ideal for:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Dev/test&lt;/strong&gt;: Local development, CI/CD testing&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Low-spec VMs&lt;/strong&gt;: 1-2 core CPU, 1-4GB RAM cloud instances&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Edge computing&lt;/strong&gt;: Raspberry Pi, embedded devices&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Demos&lt;/strong&gt;: Quick Pigsty experience&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Personal projects&lt;/strong&gt;: Resource-limited blogs, small apps&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Resource constraints&lt;/strong&gt;:&lt;/p&gt;</description>
      </item>
    <item>
        <title>HBA Rules</title>
        <link>https://pgsty.pro/docs/pgsql/config/hba/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/config/hba/</guid>
        <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;HBA (Host-Based Authentication) controls &amp;ldquo;who can connect to the database, from where, and how&amp;rdquo;. See &lt;a href=&#34;https://pgsty.pro/docs/concept/sec/auth/&#34;&gt;&lt;strong&gt;Authentication&lt;/strong&gt;&lt;/a&gt; for the authentication model and default rules.&#xA;Pigsty manages HBA rules declaratively through &lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/hba/#pg_default_hba_rules&#34;&gt;&lt;strong&gt;&lt;code&gt;pg_default_hba_rules&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; and &lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/hba/#pg_hba_rules&#34;&gt;&lt;strong&gt;&lt;code&gt;pg_hba_rules&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Pigsty renders the following config files during cluster init or HBA refresh:&lt;/p&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Config File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Path&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;PostgreSQL HBA&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;/pg/data/pg_hba.conf&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;PostgreSQL server HBA rules&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;PgBouncer HBA&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;/etc/pgbouncer/pgb_hba.conf&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Connection pool HBA rules&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;HBA rules are controlled by these parameters:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Access Control</title>
        <link>https://pgsty.pro/docs/pgsql/config/acl/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/config/acl/</guid>
        <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Access control combines roles, object privileges, database ACLs, and HBA. This page covers configuration parameters; see &lt;a href=&#34;https://pgsty.pro/docs/concept/sec/ac/&#34;&gt;&lt;strong&gt;Access Control Concepts&lt;/strong&gt;&lt;/a&gt; for design and boundaries.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Pigsty provides a compact ACL model described by these parameters:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;pg_default_roles&lt;/code&gt;: system roles and system users.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;pg_users&lt;/code&gt;: application users and roles.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;pg_default_privileges&lt;/code&gt;: default privileges on objects created by managed administrators and owners.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;pg_revoke_public&lt;/code&gt;, &lt;code&gt;pg_default_schemas&lt;/code&gt;, and &lt;code&gt;pg_default_extensions&lt;/code&gt;: default behavior for &lt;code&gt;template1&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Manage these parameters together with HBA and database definitions to produce reproducible access-control configuration.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Managing PostgreSQL Component Services</title>
        <link>https://pgsty.pro/docs/pgsql/admin/component/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/admin/component/</guid>
        <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Pigsty&amp;rsquo;s PGSQL module consists of multiple components, each running as a systemd service on nodes. (&lt;a href=&#34;https://pgsty.pro/docs/concept/arch/pgsql/#pgbackrest&#34;&gt;&lt;strong&gt;pgbackrest&lt;/strong&gt;&lt;/a&gt; is an exception)&lt;/p&gt;&#xA;&lt;p&gt;Understanding these components and their management is essential for maintaining production PostgreSQL clusters.&lt;/p&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--full td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;full-width&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Component&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Port&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Service Name&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Patroni&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;8008&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;patroni&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;HA manager, manages PostgreSQL lifecycle&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;PostgreSQL&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;5432&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;postgres&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Placeholder service, not used, for emergency&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Pgbouncer&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;6432&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pgbouncer&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Connection pooling middleware, traffic entry&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;PgBackRest&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;-&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;-&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;pgBackRest has no daemon service&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;HAProxy&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;543x&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;haproxy&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Load balancer, exposes database services&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;pg_exporter&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;9630&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg_exporter&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;PostgreSQL metrics exporter&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;pgbouncer_exporter&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;9631&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pgbouncer_exporter&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Pgbouncer metrics exporter&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;vip-manager&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;-&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;vip-manager&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Optional, manages L2 VIP address floating&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Important&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;&lt;strong&gt;Do NOT use systemctl directly to manage PostgreSQL service&lt;/strong&gt;. PostgreSQL is managed by Patroni - use &lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/patroni/&#34;&gt;&lt;strong&gt;&lt;code&gt;patronictl&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; commands instead.&#xA;Direct PostgreSQL operations may cause Patroni state inconsistency and trigger unexpected failover. The &lt;code&gt;postgres&lt;/code&gt; service is an emergency escape hatch when Patroni fails.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Parameters</title>
        <link>https://pgsty.pro/docs/pgsql/config/param/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/config/param/</guid>
        <description>&lt;p&gt;PostgreSQL parameters can be configured at multiple levels with different scopes and precedence.&#xA;Pigsty supports four configuration levels, from global to local:&lt;/p&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--full td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;full-width&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Level&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Scope&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Configuration Method&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Storage Location&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/param/#cluster-level&#34;&gt;&lt;strong&gt;Cluster&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;All instances in cluster&lt;/td&gt;&#xA;      &lt;td&gt;Patroni DCS / Tuning Templates&lt;/td&gt;&#xA;      &lt;td&gt;etcd + &lt;code&gt;postgresql.conf&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/param/#instance-level&#34;&gt;&lt;strong&gt;Instance&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Single PG instance&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pg_parameters&lt;/code&gt; / &lt;code&gt;ALTER SYSTEM&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;postgresql.auto.conf&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/param/#database-level&#34;&gt;&lt;strong&gt;Database&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;All sessions in a DB&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pg_databases[].parameters&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pg_db_role_setting&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/param/#user-level&#34;&gt;&lt;strong&gt;User&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;All sessions of a user&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pg_users[].parameters&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pg_db_role_setting&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Priority from low to high: &lt;strong&gt;Cluster &amp;lt; Instance &amp;lt; Database &amp;lt; User &amp;lt; Session&lt;/strong&gt; (&lt;code&gt;SET&lt;/code&gt; command).&#xA;Higher priority settings override lower ones.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Manage PostgreSQL Cron Jobs</title>
        <link>https://pgsty.pro/docs/pgsql/admin/crontab/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/admin/crontab/</guid>
        <description>&lt;p&gt;Pigsty uses crontab to manage scheduled tasks for routine backups, freezing aging transactions, and reorganizing bloated tables and indexes.&lt;/p&gt;&#xA;&lt;h2 id=&#34;quick-reference&#34;&gt;Quick Reference&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--full td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;full-width&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Operation&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Quick Command&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/crontab/#configure-cron-jobs&#34;&gt;&lt;strong&gt;Configure Cron Jobs&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;./pgsql.yml -t pg_crontab -l &amp;lt;cls&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Apply pg_crontab config&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/crontab/#view-cron-jobs&#34;&gt;&lt;strong&gt;View Cron Jobs&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;crontab -l&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;View as postgres user&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/crontab/#pg-backup&#34;&gt;&lt;strong&gt;Physical Backup&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg-backup [full|diff|incr]&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Execute backup with pgBackRest&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/crontab/#pg-vacuum&#34;&gt;&lt;strong&gt;Transaction Freeze&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg-vacuum [database...]&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Freeze aging transactions, prevent XID wraparound&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/crontab/#pg-repack&#34;&gt;&lt;strong&gt;Bloat Maintenance&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg-repack [database...]&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Online reorganize bloated tables and indexes&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;For other management tasks, see: &lt;a href=&#34;https://pgsty.pro/docs/pgsql/backup/&#34;&gt;&lt;strong&gt;Backup Management&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/pgsql/monitor/&#34;&gt;&lt;strong&gt;Monitoring System&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/patroni/&#34;&gt;&lt;strong&gt;HA Management&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Managing PostgreSQL Extensions</title>
        <link>https://pgsty.pro/docs/pgsql/admin/ext/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/admin/ext/</guid>
        <description>&lt;h2 id=&#34;quick-start&#34;&gt;Quick Start&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Pigsty provides &lt;a href=&#34;https://pigsty.io/ext/list&#34;&gt;&lt;strong&gt;575 extensions&lt;/strong&gt;&lt;/a&gt;. Using extensions involves four steps: &lt;strong&gt;Download&lt;/strong&gt;, &lt;strong&gt;Install&lt;/strong&gt;, &lt;strong&gt;Configure&lt;/strong&gt;, &lt;strong&gt;Enable&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-22fd01c8-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;yaml&#34; data-td-line-count=&#34;9&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-22fd01c8-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;pg-meta&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;hosts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;{&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;10.10.10.10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;{&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_seq&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;1, pg_role&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;primary } }&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;vars&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_cluster&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;pg-meta&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_extensions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;postgis, timescaledb, pgvector ]          &lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# &amp;lt;--- Install extension packages&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_libs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;timescaledb, pg_stat_statements, auto_explain&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# &amp;lt;--- Configure preload extensions&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_databases&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;meta&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;extensions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;postgis, timescaledb, vector ]           &lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# &amp;lt;--- Enable in database&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-tab-block td-tab-block--code&#34; data-td-tab=&#34;Script&#34; data-td-tab-group=&#34;script-playbook-example&#34; data-td-tab-value=&#34;script&#34; data-td-tab-kind=&#34;code&#34;&gt;&#xA;&lt;div class=&#34;td-tab-block__title&#34; data-td-tab-title&gt;Script&lt;/div&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-22fd01c8-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-22fd01c8-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bin/pgsql-ext &amp;lt;cls&amp;gt;           &lt;span class=&#34;c1&#34;&gt;# Install extensions defined in config on &amp;lt;cls&amp;gt; cluster&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bin/pgsql-ext &amp;lt;cls&amp;gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;ext...&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# Install extensions specified on command line&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-tab-block td-tab-block--code&#34; data-td-tab=&#34;Playbook&#34; data-td-tab-value=&#34;playbook&#34; data-td-tab-kind=&#34;code&#34;&gt;&#xA;&lt;div class=&#34;td-tab-block__title&#34; data-td-tab-title&gt;Playbook&lt;/div&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-22fd01c8-fence-2&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-22fd01c8-fence-2-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./pgsql.yml -l pg-meta -t pg_ext    &lt;span class=&#34;c1&#34;&gt;# Use playbook to install extensions&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-tab-block td-tab-block--code&#34; data-td-tab=&#34;Example&#34; data-td-tab-value=&#34;example&#34; data-td-tab-kind=&#34;code&#34;&gt;&#xA;&lt;div class=&#34;td-tab-block__title&#34; data-td-tab-title&gt;Example&lt;/div&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-22fd01c8-fence-3&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-22fd01c8-fence-3-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bin/pgsql-ext pg-meta                         &lt;span class=&#34;c1&#34;&gt;# Install defined extensions on pg-meta cluster&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bin/pgsql-ext pg-meta pg_duckdb pg_mooncake   &lt;span class=&#34;c1&#34;&gt;# Install specified extensions&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;For complete extension reference, see &lt;a href=&#34;https://pgsty.pro/docs/pgsql/ext/&#34;&gt;&lt;strong&gt;Extensions&lt;/strong&gt;&lt;/a&gt;. For available extensions, see &lt;a href=&#34;https://pigsty.io/ext/list&#34;&gt;&lt;strong&gt;Extension Catalog&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Upgrading PostgreSQL Major/Minor Versions</title>
        <link>https://pgsty.pro/docs/pgsql/admin/upgrade/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/admin/upgrade/</guid>
        <description>&lt;h2 id=&#34;quick-start&#34;&gt;Quick Start&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;PostgreSQL version upgrades fall into two types: &lt;strong&gt;minor version upgrade&lt;/strong&gt; and &lt;strong&gt;major version upgrade&lt;/strong&gt;, with very different risk and complexity.&lt;/p&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--full td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;full-width&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Example&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Downtime&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Data Compatibility&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Risk&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Minor upgrade&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;17.2 → 17.3&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Seconds (rolling)&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Fully compatible&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Low&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Major upgrade&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;17 → 18&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Minutes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Requires data dir upgrade&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Medium&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;div class=&#34;td-tab-block td-tab-block--code&#34; data-td-tab=&#34;Minor&#34; data-td-tab-group=&#34;minor-major-extension&#34; data-td-tab-value=&#34;minor&#34; data-td-tab-kind=&#34;code&#34;&gt;&#xA;&lt;div class=&#34;td-tab-block__title&#34; data-td-tab-title&gt;Minor&lt;/div&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-83970e5e-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;5&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-83970e5e-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Rolling upgrade: replicas first, then primary&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ansible &amp;lt;cls&amp;gt; -b -a &lt;span class=&#34;s1&#34;&gt;&amp;#39;yum upgrade -y postgresql17*&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg restart --role replica --force &amp;lt;cls&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg switchover &amp;lt;cls&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg restart &amp;lt;cls&amp;gt; &amp;lt;old-primary&amp;gt; --force&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-tab-block td-tab-block--code&#34; data-td-tab=&#34;Major&#34; data-td-tab-value=&#34;major&#34; data-td-tab-kind=&#34;code&#34;&gt;&#xA;&lt;div class=&#34;td-tab-block__title&#34; data-td-tab-title&gt;Major&lt;/div&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-83970e5e-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;4&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-83970e5e-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Recommended: Logical replication migration&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bin/pgsql-add pg-new              &lt;span class=&#34;c1&#34;&gt;# Create new version cluster&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Configure logical replication to sync data...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Switch traffic to new cluster&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-tab-block td-tab-block--code&#34; data-td-tab=&#34;Extension&#34; data-td-tab-value=&#34;extension&#34; data-td-tab-kind=&#34;code&#34;&gt;&#xA;&lt;div class=&#34;td-tab-block__title&#34; data-td-tab-title&gt;Extension&lt;/div&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-83970e5e-fence-2&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-83970e5e-fence-2-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ansible &amp;lt;cls&amp;gt; -b -a &lt;span class=&#34;s1&#34;&gt;&amp;#39;yum upgrade -y postgis36_17*&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;psql -c &lt;span class=&#34;s1&#34;&gt;&amp;#39;ALTER EXTENSION postgis UPDATE;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;For detailed online migration process, see &lt;a href=&#34;https://pgsty.pro/docs/pgsql/migration/&#34;&gt;&lt;strong&gt;Online Migration&lt;/strong&gt;&lt;/a&gt; documentation.&lt;/p&gt;</description>
      </item>
    <item>
        <title>High Availability</title>
        <link>https://pgsty.pro/docs/concept/ha/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/concept/ha/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Pigsty&amp;rsquo;s PostgreSQL clusters come with out-of-the-box high availability, with core capabilities provided by &lt;a href=&#34;https://pigsty.io/docs/patroni&#34;&gt;&lt;strong&gt;Patroni&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://etcd.io/&#34;&gt;&lt;strong&gt;Etcd&lt;/strong&gt;&lt;/a&gt;, and &lt;a href=&#34;http://www.haproxy.org/&#34;&gt;&lt;strong&gt;HAProxy&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;When your PostgreSQL cluster has two or more instances, you automatically have self-healing database high availability without any additional configuration — as long as any instance in the cluster survives, the cluster can provide complete service. Clients only need to connect to any node in the cluster to get full service without worrying about primary-replica topology changes.&lt;/p&gt;</description>
      </item>
    <item>
        <title>PGSQL Arch</title>
        <link>https://pgsty.pro/docs/concept/arch/pgsql/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/concept/arch/pgsql/</guid>
        <description>&lt;p&gt;The PGSQL module organizes PostgreSQL in production as &lt;strong&gt;clusters&lt;/strong&gt;—&lt;strong&gt;logical entities&lt;/strong&gt; composed of a group of database &lt;strong&gt;instances&lt;/strong&gt; associated by &lt;strong&gt;primary-replica&lt;/strong&gt; relationships.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://pgsty.pro/docs/pgsql/&#34;&gt;&lt;strong&gt;PGSQL module&lt;/strong&gt;&lt;/a&gt; includes the following components, working together to provide production-grade PostgreSQL HA cluster services:&lt;/p&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--full td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;full-width&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Component&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/arch/pgsql/#postgresql&#34;&gt;&lt;strong&gt;&lt;code&gt;postgres&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Database&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;The world&amp;rsquo;s most advanced open-source relational database, PGSQL core&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/arch/pgsql/#patroni&#34;&gt;&lt;strong&gt;&lt;code&gt;patroni&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;HA&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Manages PostgreSQL, coordinates failover, leader election, config changes&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/arch/pgsql/#pgbouncer&#34;&gt;&lt;strong&gt;&lt;code&gt;pgbouncer&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Pool&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Lightweight connection pooling middleware, reduces overhead, adds flexibility&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/arch/pgsql/#pgbackrest&#34;&gt;&lt;strong&gt;&lt;code&gt;pgbackrest&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Backup&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Full/incremental backup and WAL archiving, supports local and object storage&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/arch/pgsql/#pg_exporter&#34;&gt;&lt;strong&gt;&lt;code&gt;pg_exporter&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Metrics&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Exports PostgreSQL monitoring metrics in a Prometheus-compatible format&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/arch/pgsql/#pgbouncer_exporter&#34;&gt;&lt;strong&gt;&lt;code&gt;pgbouncer_exporter&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Metrics&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Exports Pgbouncer connection pool metrics&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/arch/pgsql/#pgbackrest_exporter&#34;&gt;&lt;strong&gt;&lt;code&gt;pgbackrest_exporter&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Metrics&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Exports backup status metrics&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/arch/pgsql/#vip-manager&#34;&gt;&lt;strong&gt;&lt;code&gt;vip-manager&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;VIP&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Binds L2 VIP to current primary node for transparent failover [Optional]&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;The &lt;a href=&#34;https://pgsty.pro/docs/concept/arch/pgsql/#vip-manager&#34;&gt;&lt;strong&gt;&lt;code&gt;vip-manager&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; is an on-demand component. Additionally, PGSQL uses components from other modules:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Point-in-Time Recovery — A Time Machine for PostgreSQL</title>
        <link>https://pgsty.pro/docs/concept/pitr/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/concept/pitr/</guid>
        <description>&lt;blockquote&gt;&#xA;&lt;p&gt;If data, a table, or even a database is deleted accidentally, Point-in-Time Recovery (PITR) can return the cluster to an earlier state.&lt;/p&gt;&#xA;&lt;p&gt;This capability, once treated as specialist DBA work, is enabled by Pigsty&amp;rsquo;s standard PostgreSQL configuration.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;replication-is-not-backup&#34;&gt;Replication Is Not Backup&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/ha/&#34;&gt;&lt;strong&gt;High availability&lt;/strong&gt;&lt;/a&gt; can fail over to another instance when hardware fails. It has a natural blind spot, however: &lt;strong&gt;replication is not backup&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Streaming replication faithfully sends every primary change to every replica within milliseconds, including a &lt;code&gt;DELETE&lt;/code&gt; without a &lt;code&gt;WHERE&lt;/code&gt; clause or a &lt;code&gt;DROP TABLE&lt;/code&gt; issued against the wrong database. Failover handles a broken machine; when the data itself is wrong, every replica can contain the same error.&lt;/p&gt;</description>
      </item>
    <item>
        <title>RTO Trade-offs</title>
        <link>https://pgsty.pro/docs/concept/ha/rto/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/concept/ha/rto/</guid>
        <description>&lt;p&gt;&lt;strong&gt;RTO&lt;/strong&gt; (Recovery Time Objective) defines the &lt;strong&gt;maximum time required for the system to restore write capability&lt;/strong&gt; when the primary fails.&lt;/p&gt;&#xA;&lt;p&gt;For critical transaction systems where availability is paramount, the shortest possible RTO is typically required, such as under one minute.&lt;/p&gt;&#xA;&lt;p&gt;However, shorter RTO comes at a cost: increased false failover risk. Network jitter may be misinterpreted as a failure, leading to unnecessary failovers.&#xA;For cross-datacenter/cross-region deployments, RTO requirements are typically relaxed (e.g., 1-2 minutes) to reduce false failover risk.&lt;/p&gt;</description>
      </item>
    <item>
        <title>How PITR Works</title>
        <link>https://pgsty.pro/docs/concept/pitr/mechanism/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/concept/pitr/mechanism/</guid>
        <description>&lt;p&gt;If a database is a state machine, &lt;strong&gt;WAL&lt;/strong&gt; (Write-Ahead Log) is its ordered change history. PostgreSQL records each modification in WAL before applying it to data files. Save a physical snapshot at one point, preserve all later WAL, and PostgreSQL can replay that history to a selected consistent state.&lt;/p&gt;&#xA;&lt;p&gt;PITR is therefore the combination of three simple elements: a &lt;strong&gt;snapshot&lt;/strong&gt; (base backup), &lt;strong&gt;history&lt;/strong&gt; (WAL archive), and a &lt;strong&gt;target&lt;/strong&gt; (where replay should stop).&lt;/p&gt;</description>
      </item>
    <item>
        <title>PITR Architecture</title>
        <link>https://pgsty.pro/docs/concept/pitr/arch/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/concept/pitr/arch/</guid>
        <description>&lt;p&gt;The &lt;a href=&#34;https://pgsty.pro/docs/concept/pitr/mechanism/&#34;&gt;&lt;strong&gt;PITR principle&lt;/strong&gt;&lt;/a&gt; is compact; the engineering is not. WAL archiving must not stall production writes, object-storage backups need encryption, backup jobs must follow the primary after failover, shared repositories must isolate clusters, and large numbers of small objects can limit throughput.&lt;/p&gt;&#xA;&lt;p&gt;Pigsty uses &lt;a href=&#34;https://pgbackrest.org/&#34;&gt;&lt;strong&gt;pgBackRest&lt;/strong&gt;&lt;/a&gt; as its backup engine and ships production-oriented defaults for those concerns. This page describes the engine, repository abstraction, archive path, scheduler, and primary-aware execution model.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;backup-engine-pgbackrest&#34;&gt;Backup Engine: pgBackRest&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Pigsty uses pgBackRest for three responsibilities: create base backups with &lt;code&gt;backup&lt;/code&gt;, receive WAL with &lt;code&gt;archive-push&lt;/code&gt;, and restore data with &lt;code&gt;restore&lt;/code&gt; plus &lt;code&gt;archive-get&lt;/code&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>PITR Tradeoffs</title>
        <link>https://pgsty.pro/docs/concept/pitr/tradeoff/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/concept/pitr/tradeoff/</guid>
        <description>&lt;p&gt;A backup is an insurance policy. Its premium is storage, network traffic, and operational work; its benefit is how much data can be recovered and how quickly service can return. There is no universal free policy: more history normally needs more capacity, while a shorter RTO normally needs newer backups and tested procedures.&lt;/p&gt;&#xA;&lt;p&gt;Designing a policy means answering three questions: &lt;strong&gt;where is the repository, how long is history retained, and how often are backups taken?&lt;/strong&gt;&lt;/p&gt;</description>
      </item>
    <item>
        <title>Declarative Recovery</title>
        <link>https://pgsty.pro/docs/concept/pitr/restore/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/concept/pitr/restore/</guid>
        <description>&lt;p&gt;The value of a backup system is realized at restore time, often during an incident when every minute matters.&#xA;A traditional PITR procedure requires a long sequence of coupled manual steps: pause HA, stop PostgreSQL, prepare recovery settings, restore the backup, replay WAL, validate the target, rebuild metadata, and start the cluster again.&lt;/p&gt;&#xA;&lt;p&gt;Pigsty applies the same approach used by &lt;a href=&#34;https://pgsty.pro/docs/concept/iac/&#34;&gt;&lt;strong&gt;declarative configuration&lt;/strong&gt;&lt;/a&gt; to recovery: &lt;strong&gt;declare the recovery target&lt;/strong&gt;, then let the orchestration tools stop the cluster, restore the data, replay WAL, and return control to the operator.&lt;/p&gt;</description>
      </item>
    <item>
        <title>PITR Scenarios</title>
        <link>https://pgsty.pro/docs/concept/pitr/scenarios/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/concept/pitr/scenarios/</guid>
        <description>&lt;p&gt;During an incident, the most expensive resource is often &lt;strong&gt;decision time&lt;/strong&gt;. Pigsty can orchestrate the mechanical recovery steps, but an operator must still answer three questions: &lt;strong&gt;what is the target, should recovery be in place or into a clone, and how will the result be validated?&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Read and rehearse this framework before an incident.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;decision-framework&#34;&gt;Decision Framework&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--full td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;full-width&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Scenario&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Typical problem&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Recommended workflow&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Target&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Accidental DML&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;DELETE&lt;/code&gt; or &lt;code&gt;UPDATE&lt;/code&gt; affects the wrong rows&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Clone, validate, then copy back data&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;time&lt;/code&gt; / &lt;code&gt;xid&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Dropped table, schema, or database&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;DROP&lt;/code&gt; or an incorrect migration&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Clone, validate, then copy back objects&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;time&lt;/code&gt; / &lt;code&gt;name&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Defective release or batch corruption&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Software writes incorrect data for a period&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Clone and compare before choosing repair or cutover&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;time&lt;/code&gt; / &lt;code&gt;xid&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Audit, investigation, or forensics&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Inspect historical state&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Clone and hold at the target for inspection&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;time&lt;/code&gt; / &lt;code&gt;lsn&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Whole-cluster or site loss&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Hosts or storage are gone or encrypted&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Recover in place on replacement infrastructure&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;default&lt;/code&gt; / &lt;code&gt;time&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Two principles apply throughout:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Service Access</title>
        <link>https://pgsty.pro/docs/concept/ha/svc/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/concept/ha/svc/</guid>
        <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Split read and write operations, route traffic correctly, and deliver PostgreSQL cluster capabilities reliably.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/ha/svc/#service-overview&#34;&gt;Service&lt;/a&gt; is an abstraction: it represents the form in which database clusters expose their capabilities externally, encapsulating underlying cluster details.&lt;/p&gt;&#xA;&lt;p&gt;Services are crucial for &lt;a href=&#34;https://pgsty.pro/docs/concept/ha/svc/#access-services&#34;&gt;stable access&lt;/a&gt; in production environments, showing their value during automatic failover in &lt;a href=&#34;https://pgsty.pro/docs/concept/ha/&#34;&gt;high availability&lt;/a&gt; clusters. &lt;a href=&#34;https://pgsty.pro/docs/concept/ha/svc/#personal-users&#34;&gt;Personal users&lt;/a&gt; typically don&amp;rsquo;t need to worry about this concept.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;personal-users&#34;&gt;Personal Users&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The concept of &amp;ldquo;service&amp;rdquo; is for production environments. Personal users with single-node clusters can skip the complexity and directly use instance names or IP addresses to access the database.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Security and Compliance</title>
        <link>https://pgsty.pro/docs/concept/sec/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/concept/sec/</guid>
        <description>&lt;p&gt;The database is usually the most sensitive component in an information system: it stores the most valuable data, so attacks and failures can have the most serious consequences.&#xA;Database security is not a feature that can be enabled with one switch. It is the combined answer to a series of questions: Who can connect? What can they do after connecting? Can traffic be intercepted? Are operations recorded? Can damaged, lost, or deleted data be recovered?&lt;/p&gt;</description>
      </item>
    <item>
        <title>Security Model</title>
        <link>https://pgsty.pro/docs/concept/sec/level/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/concept/sec/level/</guid>
        <description>&lt;p&gt;Before examining individual security features, answer two more fundamental questions: &lt;strong&gt;Where is the root of trust?&lt;/strong&gt; and &lt;strong&gt;How many defensive layers exist?&lt;/strong&gt;&#xA;The first determines what deserves the strongest protection. The second determines what remains when one layer fails.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;span id=&#34;overview&#34;&gt;&lt;/span&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;trust-boundaries&#34;&gt;Trust Boundaries&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Pigsty is an Ansible-based declarative deployment system. Like other control-plane systems, its &lt;a href=&#34;https://pgsty.pro/docs/concept/arch/node/#admin-node&#34;&gt;&lt;strong&gt;admin node&lt;/strong&gt;&lt;/a&gt; is the control plane and the node that requires the strongest protection.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Authentication</title>
        <link>https://pgsty.pro/docs/concept/sec/auth/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/concept/sec/auth/</guid>
        <description>&lt;p&gt;PostgreSQL uses &lt;code&gt;pg_hba.conf&lt;/code&gt; for &lt;strong&gt;Host-Based Authentication&lt;/strong&gt;: who may connect, from where, to which database, and how they must prove their identity.&lt;/p&gt;&#xA;&lt;p&gt;The mechanism is powerful, but expensive to maintain manually across a cluster. Primary and replica instances may require different rules, and every instance stores its own configuration in the data directory.&#xA;Without a common declaration and refresh process, rules can drift between instances.&lt;/p&gt;&#xA;&lt;p&gt;Pigsty applies the same &lt;a href=&#34;https://pgsty.pro/docs/concept/iac/&#34;&gt;&lt;strong&gt;declarative configuration&lt;/strong&gt;&lt;/a&gt; model here: HBA rules are part of the inventory and are rendered and distributed consistently by playbooks.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Access Control</title>
        <link>https://pgsty.pro/docs/concept/sec/ac/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/concept/sec/ac/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/sec/auth/&#34;&gt;&lt;strong&gt;Authentication&lt;/strong&gt;&lt;/a&gt; answers &amp;ldquo;Who are you?&amp;rdquo; Authorization answers &amp;ldquo;What may you do?&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;Privilege failures rarely result from a lack of mechanisms—PostgreSQL &lt;code&gt;GRANT&lt;/code&gt; and &lt;code&gt;REVOKE&lt;/code&gt; are sufficiently precise. The usual problem is the absence of conventions that are applied by default:&#xA;an application account is made the owner at launch, temporary superuser access is not revoked after troubleshooting, or grants are missed when new tables are created and cause failures in production.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Encrypted Communication</title>
        <link>https://pgsty.pro/docs/concept/sec/ca/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/concept/sec/ca/</guid>
        <description>&lt;p&gt;TLS can provide three separate protections: &lt;strong&gt;transport encryption&lt;/strong&gt;, &lt;strong&gt;server authentication&lt;/strong&gt;, and &lt;strong&gt;client authentication&lt;/strong&gt;. Each must be configured independently. Enabling server-side TLS does not mean the client verifies the server identity, nor does it mean the server requires a client certificate.&lt;/p&gt;&#xA;&lt;p&gt;The main operational cost of TLS is not the encryption algorithm but certificate issuance, distribution, trust, and rotation. Without centralized management, internal services often encrypt traffic while skipping certificate verification—or remain on plaintext connections.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Data Security</title>
        <link>https://pgsty.pro/docs/concept/sec/data/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/concept/sec/data/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/sec/level/#network-boundaries&#34;&gt;&lt;strong&gt;Network boundaries&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/concept/sec/auth/&#34;&gt;&lt;strong&gt;authentication&lt;/strong&gt;&lt;/a&gt;, and &lt;a href=&#34;https://pgsty.pro/docs/concept/sec/ac/&#34;&gt;&lt;strong&gt;access control&lt;/strong&gt;&lt;/a&gt; reduce the likelihood of an incident. When hardware fails, credentials leak, or an operator makes a mistake, data-layer controls must limit the impact and support recovery.&lt;/p&gt;&#xA;&lt;p&gt;Data security answers four questions: Is the data &lt;strong&gt;intact&lt;/strong&gt;? Can it be &lt;strong&gt;recovered&lt;/strong&gt;? If copied, does it remain &lt;strong&gt;confidential&lt;/strong&gt;? Can you determine &lt;strong&gt;what happened&lt;/strong&gt;?&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;span id=&#34;data-integrity&#34;&gt;&lt;/span&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;integrity&#34;&gt;Integrity&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Bad disk sectors, memory bit flips, and storage firmware defects can cause &lt;strong&gt;silent data corruption&lt;/strong&gt;: the data is damaged without an immediate error.&#xA;Pigsty enables page checksums by default (&lt;a href=&#34;https://pgsty.pro/docs/pgsql/param/#pg_checksum&#34;&gt;&lt;code&gt;pg_checksum&lt;/code&gt;&lt;/a&gt;: &lt;code&gt;true&lt;/code&gt;).&#xA;The cluster is initialized with &lt;code&gt;data-checksums&lt;/code&gt;, so PostgreSQL calculates a checksum when writing a page and verifies it when reading.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Compliance</title>
        <link>https://pgsty.pro/docs/concept/sec/compliance/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/concept/sec/compliance/</guid>
        <description>&lt;p&gt;Compliance is not a product you can buy. It is a state that must be demonstrated continuously through three elements:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Configuration:&lt;/strong&gt; whether security controls are enabled. Pigsty directly provides this part.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Process:&lt;/strong&gt; access approval, change management, recovery exercises, and related procedures. The organization must establish these.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Evidence:&lt;/strong&gt; records showing that configuration and process remain effective. Pigsty&amp;rsquo;s &lt;a href=&#34;https://pgsty.pro/docs/concept/iac/inventory/&#34;&gt;&lt;strong&gt;inventory&lt;/strong&gt;&lt;/a&gt;, runtime logs, and &lt;a href=&#34;https://pgsty.pro/docs/concept/monitor/&#34;&gt;&lt;strong&gt;monitoring system&lt;/strong&gt;&lt;/a&gt; can provide part of this evidence.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This page begins with a pre-launch hardening checklist and then maps Pigsty security capabilities to common compliance frameworks.&#xA;The mappings support architecture and gap analysis; they are not an MLPS assessment conclusion, a SOC 2 audit opinion, or legal advice.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Getting Started with PostgreSQL</title>
        <link>https://pgsty.pro/docs/setup/pgsql/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/setup/pgsql/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://www.postgresql.org/&#34;&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt;&lt;/a&gt; (abbreviated as PG) is the world&amp;rsquo;s most advanced and popular open-source relational database. Use it to store and retrieve multi-modal data.&lt;/p&gt;&#xA;&lt;p&gt;This guide is for developers with basic Linux CLI experience but not very familiar with PostgreSQL, helping you quickly get started with PG in Pigsty.&lt;/p&gt;&#xA;&lt;p&gt;We assume you&amp;rsquo;re a personal user deploying in the default single-node mode. For prod multi-node HA cluster access, refer to &lt;a href=&#34;https://pgsty.pro/docs/pgsql/service/&#34;&gt;&lt;strong&gt;Prod Service Access&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;basics&#34;&gt;Basics&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;In the default &lt;a href=&#34;https://pgsty.pro/docs/setup/install/&#34;&gt;&lt;strong&gt;single-node installation&lt;/strong&gt;&lt;/a&gt; template, you&amp;rsquo;ll create a PostgreSQL database cluster named &lt;code&gt;pg-meta&lt;/code&gt; on the current node, with only one primary instance.&lt;/p&gt;</description>
      </item>
    <item>
        <title>PostgreSQL Mongo Mode</title>
        <link>https://pgsty.pro/docs/conf/mongo/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/conf/mongo/</guid>
        <description>&lt;p&gt;The &lt;code&gt;mongo&lt;/code&gt; configuration template is a &lt;strong&gt;PostgreSQL deployment mode&lt;/strong&gt;, not an independent Pigsty module. It combines:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;PostgreSQL 18 managed by the standard &lt;code&gt;PGSQL&lt;/code&gt; module&lt;/li&gt;&#xA;&lt;li&gt;The &lt;code&gt;documentdb&lt;/code&gt; extension and its required preload libraries&lt;/li&gt;&#xA;&lt;li&gt;A stateless FerretDB proxy deployed with Pigsty&amp;rsquo;s Docker APP workflow&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;All data, high availability, backup, monitoring, and lifecycle management remain PostgreSQL responsibilities. FerretDB only provides the MongoDB wire-compatible endpoint.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;quick-start&#34;&gt;Quick Start&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The default template is a single-node deployment on &lt;code&gt;10.10.10.10&lt;/code&gt;. FerretDB listens on loopback by default.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Operations SOP Index</title>
        <link>https://pgsty.pro/docs/sop/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/sop/</guid>
        <description>&lt;h2 id=&#34;getting-started-path&#34;&gt;Getting Started Path&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Order&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Question&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Entry&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;1&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;What modules does Pigsty include?&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/arch/&#34;&gt;&lt;strong&gt;Modular Architecture&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/concept/arch/pgsql/&#34;&gt;&lt;strong&gt;PGSQL Architecture&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/concept/model/pgsql/&#34;&gt;&lt;strong&gt;PGSQL Cluster Model&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;2&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;How do I get it running first?&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/setup/install/&#34;&gt;&lt;strong&gt;Quick Start&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/setup/webui/&#34;&gt;&lt;strong&gt;Web UI&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/setup/pgsql/&#34;&gt;&lt;strong&gt;PostgreSQL Quick Start&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;3&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;How should I read the config file?&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/iac/&#34;&gt;&lt;strong&gt;Declarative Configuration&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/setup/config/&#34;&gt;&lt;strong&gt;Configuration Guide&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/concept/iac/parameter/&#34;&gt;&lt;strong&gt;Configuration Parameters&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;4&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;What should I prepare for production?&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/deploy/planning/&#34;&gt;&lt;strong&gt;Planning&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/deploy/prepare/&#34;&gt;&lt;strong&gt;Preparation&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/deploy/admin/&#34;&gt;&lt;strong&gt;Administration Model&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;5&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;How do I deploy a multi-node cluster?&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/deploy/install/&#34;&gt;&lt;strong&gt;Production Deployment&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/setup/playbook/&#34;&gt;&lt;strong&gt;Playbooks&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/pgsql/playbook/&#34;&gt;&lt;strong&gt;PGSQL Playbooks&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;6&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;How do I operate databases daily?&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/&#34;&gt;&lt;strong&gt;PGSQL Administration&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/cluster/&#34;&gt;&lt;strong&gt;Cluster Management&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/user/&#34;&gt;&lt;strong&gt;User Management&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/db/&#34;&gt;&lt;strong&gt;Database Management&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;7&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;How do I validate reliability?&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/ha/&#34;&gt;&lt;strong&gt;PostgreSQL HA&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/patroni/&#34;&gt;&lt;strong&gt;Patroni Management&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/pgsql/backup/&#34;&gt;&lt;strong&gt;Backup &amp;amp; Restore&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/pgsql/backup/restore/&#34;&gt;&lt;strong&gt;Restore Operations&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;task-index&#34;&gt;Task Index&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Task&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Read First&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Operation Entry&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Prepare servers, disks, networks, VIPs&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/deploy/prepare/&#34;&gt;&lt;strong&gt;Preparation&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/deploy/planning/&#34;&gt;&lt;strong&gt;Planning&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/ref/linux/&#34;&gt;&lt;strong&gt;Linux Compatibility&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/deploy/install/&#34;&gt;&lt;strong&gt;Production Deployment&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Prepare SSH, sudo, and admin users&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/deploy/admin/&#34;&gt;&lt;strong&gt;Administration Model&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/deploy/install/&#34;&gt;&lt;strong&gt;Production Deployment&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Build a local or cloud sandbox&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/deploy/sandbox/&#34;&gt;&lt;strong&gt;Sandbox&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/deploy/vagrant/&#34;&gt;&lt;strong&gt;Vagrant&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/deploy/terraform/&#34;&gt;&lt;strong&gt;Terraform&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Single-node trial&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/setup/install/&#34;&gt;&lt;strong&gt;Quick Start&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;./configure -g&lt;/code&gt;, &lt;code&gt;./deploy.yml&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Multi-node production deployment&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/deploy/&#34;&gt;&lt;strong&gt;Deployment&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/deploy/install/&#34;&gt;&lt;strong&gt;Production Deployment&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;./deploy.yml&lt;/code&gt;, &lt;code&gt;./pgsql.yml&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Deploy in an offline environment&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/setup/offline/&#34;&gt;&lt;strong&gt;Offline Installation&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/infra/admin/repo/&#34;&gt;&lt;strong&gt;Repository Management&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Choose a config template&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/iac/template/&#34;&gt;&lt;strong&gt;Config Templates&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/conf/&#34;&gt;&lt;strong&gt;Template List&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;./configure -c &amp;lt;template&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Plan cluster, database, and user names&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/model/pgsql/&#34;&gt;&lt;strong&gt;PGSQL Cluster Model&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg_cluster&lt;/code&gt;, &lt;code&gt;pg_databases&lt;/code&gt;, &lt;code&gt;pg_users&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Create a PostgreSQL cluster&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/cluster/&#34;&gt;&lt;strong&gt;Cluster Instance Config&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/cluster/&#34;&gt;&lt;strong&gt;Cluster Management&lt;/strong&gt;&lt;/a&gt;, &lt;code&gt;./pgsql.yml -l &amp;lt;cluster&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Add business users&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/user/&#34;&gt;&lt;strong&gt;User/Role Config&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/user/&#34;&gt;&lt;strong&gt;User Management&lt;/strong&gt;&lt;/a&gt;, &lt;code&gt;./pgsql-user.yml -l &amp;lt;cluster&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Add business databases&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/db/&#34;&gt;&lt;strong&gt;Database Config&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/db/&#34;&gt;&lt;strong&gt;Database Management&lt;/strong&gt;&lt;/a&gt;, &lt;code&gt;./pgsql-db.yml -l &amp;lt;cluster&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Configure access endpoints&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/service/&#34;&gt;&lt;strong&gt;Service/Access&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg_services&lt;/code&gt;, &lt;code&gt;pg_default_services&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Modify HBA&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/hba/&#34;&gt;&lt;strong&gt;HBA Config&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/hba/&#34;&gt;&lt;strong&gt;HBA Management&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Switchover&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/patroni/&#34;&gt;&lt;strong&gt;Patroni Management&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;patronictl switchover&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;HA drills&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/ha/&#34;&gt;&lt;strong&gt;PostgreSQL HA&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/concept/ha/rpo/&#34;&gt;&lt;strong&gt;RPO&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/concept/ha/rto/&#34;&gt;&lt;strong&gt;RTO&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/tutorial/drill/&#34;&gt;&lt;strong&gt;3-of-2 Failure Drill&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Configure VIP&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/ha/svc/&#34;&gt;&lt;strong&gt;HA Service Access&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/tutorial/pg-vip/&#34;&gt;&lt;strong&gt;Configure PG VIP&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Configure backup policy&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/backup/policy/&#34;&gt;&lt;strong&gt;Backup Policy&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/backup/admin/&#34;&gt;&lt;strong&gt;Backup Admin Commands&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Perform PITR&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/pitr/&#34;&gt;&lt;strong&gt;Point-in-Time Recovery&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/backup/restore/&#34;&gt;&lt;strong&gt;Restore Operations&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Recover dropped data, tables, or databases&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/tutorial/drop/&#34;&gt;&lt;strong&gt;Drop Recovery&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/tutorial/pitr/&#34;&gt;&lt;strong&gt;Manual Recovery&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Clone or fork a cluster&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/backup/cluster/&#34;&gt;&lt;strong&gt;Clone Database Cluster&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/tutorial/pg-fork/&#34;&gt;&lt;strong&gt;Fork Instance&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Use Silo for backups&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/minio/&#34;&gt;&lt;strong&gt;MINIO Module&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/minio/config/&#34;&gt;&lt;strong&gt;Silo Config&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/pgsql/backup/repository/&#34;&gt;&lt;strong&gt;Backup Repository&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;View monitoring and alerts&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/monitor/&#34;&gt;&lt;strong&gt;Monitoring System&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/monitor/&#34;&gt;&lt;strong&gt;PGSQL Monitoring&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/pgsql/dashboard/&#34;&gt;&lt;strong&gt;PGSQL Dashboards&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Troubleshoot database failures&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/faq/&#34;&gt;&lt;strong&gt;PGSQL FAQ&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/tutorial/failure/&#34;&gt;&lt;strong&gt;Troubleshooting&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/component/&#34;&gt;&lt;strong&gt;Component Management&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Scale PostgreSQL clusters&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/cluster/&#34;&gt;&lt;strong&gt;Cluster Instance Config&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/cluster/&#34;&gt;&lt;strong&gt;Cluster Management&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Upgrade PostgreSQL&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/upgrade/&#34;&gt;&lt;strong&gt;Version Upgrade&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/kernel/&#34;&gt;&lt;strong&gt;Kernel Versions&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Install or enable extensions&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/ext/&#34;&gt;&lt;strong&gt;Extensions&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/ext/&#34;&gt;&lt;strong&gt;Extension Management&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Migrate existing databases&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/migration/&#34;&gt;&lt;strong&gt;Data Migration&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/playbook/#pgsql-migrationyml&#34;&gt;&lt;strong&gt;Migration Playbook&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Harden security&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/deploy/security/&#34;&gt;&lt;strong&gt;Security Considerations&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/sec/ac/&#34;&gt;&lt;strong&gt;Access Control&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/concept/sec/ca/&#34;&gt;&lt;strong&gt;CA &amp;amp; Certificates&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Manage domains and web entrypoints&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/infra/admin/domain/&#34;&gt;&lt;strong&gt;Domain Management&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/infra/admin/portal/&#34;&gt;&lt;strong&gt;Nginx Management&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Maintain infrastructure&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/infra/admin/&#34;&gt;&lt;strong&gt;INFRA Administration&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;infra.yml&lt;/code&gt;, &lt;code&gt;infra-rm.yml&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Maintain Etcd&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/etcd/config/&#34;&gt;&lt;strong&gt;ETCD Config&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/etcd/admin/&#34;&gt;&lt;strong&gt;ETCD Management&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/etcd/faq/&#34;&gt;&lt;strong&gt;ETCD FAQ&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Deploy app templates&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pigsty.io/docs/app/&#34;&gt;&lt;strong&gt;Applications&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/docker/usage/&#34;&gt;&lt;strong&gt;Docker Module&lt;/strong&gt;&lt;/a&gt;, &lt;code&gt;./app.yml&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;preparation-and-deployment&#34;&gt;Preparation And Deployment&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;For production deployment, start with &lt;a href=&#34;https://pgsty.pro/docs/deploy/planning/&#34;&gt;&lt;strong&gt;Planning&lt;/strong&gt;&lt;/a&gt; and &lt;a href=&#34;https://pgsty.pro/docs/deploy/prepare/&#34;&gt;&lt;strong&gt;Preparation&lt;/strong&gt;&lt;/a&gt;. These two pages cover node count, disks, filesystems, networks, VIPs, domains, and software sources.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Module: PGSQL</title>
        <link>https://pgsty.pro/docs/pgsql/</link>
        <pubDate>Sat, 11 Jan 2025 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/</guid>
        <description>&lt;p&gt;PGSQL is Pigsty&amp;rsquo;s core module. Ansible inventory declares PostgreSQL clusters; Patroni and etcd provide HA orchestration; pgBackRest provides backup and PITR; HAProxy, VIP, DNS, PgBouncer, and the observability stack expose and monitor database services.&lt;/p&gt;&#xA;&lt;p&gt;This page follows the Pigsty v4.5.0 source layout. Exact defaults live only in the &lt;a href=&#34;https://pgsty.pro/docs/pgsql/param/&#34;&gt;parameter reference&lt;/a&gt; so the module landing page does not become a second stale parameter snapshot.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;modeling-and-configuration&#34;&gt;Modeling and Configuration&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/model/pgsql/&#34;&gt;Cluster model&lt;/a&gt;: clusters, instances, identity, and roles.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/arch/pgsql/&#34;&gt;Architecture&lt;/a&gt;: relationships among Patroni, etcd, service access, and observability.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/&#34;&gt;Cluster configuration&lt;/a&gt;: primary, replica, offline instance, synchronous commit, standby cluster, delayed cluster, and Citus.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/kernel/&#34;&gt;Kernel&lt;/a&gt;: PostgreSQL major version, distribution, and package selection.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/user/&#34;&gt;Users&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/db/&#34;&gt;databases&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/hba/&#34;&gt;HBA&lt;/a&gt;, and &lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/acl/&#34;&gt;ACL&lt;/a&gt;: business objects and access control.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/service/&#34;&gt;Service access&lt;/a&gt;: read-write/read-only services, HAProxy, VIP, DNS, and pooling.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pigsty.io/ext/list/&#34;&gt;Extension catalog&lt;/a&gt;: the current 575 packaged extensions and platform coverage.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;deployment-and-administration&#34;&gt;Deployment and Administration&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--full td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;full-width&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Task&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Entry point&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Initialize a cluster or add an instance&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/cluster/&#34;&gt;Cluster administration&lt;/a&gt; · &lt;a href=&#34;https://pgsty.pro/docs/pgsql/playbook/#pgsqlyml&#34;&gt;&lt;code&gt;pgsql.yml&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Create or change users&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/user/&#34;&gt;User administration&lt;/a&gt; · &lt;a href=&#34;https://pgsty.pro/docs/pgsql/playbook/#pgsql-useryml&#34;&gt;&lt;code&gt;pgsql-user.yml&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Create or change databases&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/db/&#34;&gt;Database administration&lt;/a&gt; · &lt;a href=&#34;https://pgsty.pro/docs/pgsql/playbook/#pgsql-dbyml&#34;&gt;&lt;code&gt;pgsql-db.yml&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Change HBA or parameters&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/hba/&#34;&gt;HBA administration&lt;/a&gt; · &lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/component/&#34;&gt;Component administration&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Patroni switchovers, maintenance, and incidents&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/patroni/&#34;&gt;Patroni administration&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Install, create, update, or remove extensions&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/ext/&#34;&gt;Extension administration&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Monitor an external instance&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/playbook/#pgsql-monitoryml&#34;&gt;&lt;code&gt;pgsql-monitor.yml&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Prepare a migration&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/migration/&#34;&gt;Migration&lt;/a&gt; · &lt;a href=&#34;https://pgsty.pro/docs/pgsql/playbook/#pgsql-migrationyml&#34;&gt;&lt;code&gt;pgsql-migration.yml&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Remove an instance or cluster&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/cluster/#remove-cluster&#34;&gt;Safe removal workflow&lt;/a&gt; · &lt;a href=&#34;https://pgsty.pro/docs/pgsql/playbook/#pgsql-rmyml&#34;&gt;&lt;code&gt;pgsql-rm.yml&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Real runs of &lt;code&gt;pgsql.yml&lt;/code&gt;, &lt;code&gt;pgsql-user.yml&lt;/code&gt;, &lt;code&gt;pgsql-db.yml&lt;/code&gt;, and related playbooks change the target environment; &lt;code&gt;pgsql-rm.yml&lt;/code&gt; can delete data and backups by default. Resolve the exact cluster/node and recent backup first. Removal also requires the operator to type and confirm the exact target.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Core Concepts</title>
        <link>https://pgsty.pro/docs/pgsql/_div_concept/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/_div_concept/</guid>
        <description>&lt;p&gt;Core concepts and architecture design&lt;/p&gt;</description>
      </item>
    <item>
        <title>Configuration</title>
        <link>https://pgsty.pro/docs/pgsql/config/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/config/</guid>
        <description>&lt;p&gt;Pigsty is a &amp;ldquo;configuration-driven&amp;rdquo; PostgreSQL platform: all behaviors come from the combination of inventory files in &lt;code&gt;~/pigsty/conf/*.yml&lt;/code&gt; and &lt;a href=&#34;https://pgsty.pro/docs/pgsql/param/&#34;&gt;&lt;code&gt;PGSQL&lt;/code&gt; parameters&lt;/a&gt;.&#xA;Once you&amp;rsquo;ve written the configuration, you can replicate a customized cluster with instances, users, databases, access control, extensions, and tuning policies in just a few minutes.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;configuration-entry&#34;&gt;Configuration Entry&#xA;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Prepare Inventory&lt;/strong&gt;: Copy a &lt;code&gt;pigsty/conf/*.yml&lt;/code&gt; template or write an Ansible Inventory from scratch, placing cluster groups (&lt;code&gt;all.children.&amp;lt;cls&amp;gt;.hosts&lt;/code&gt;) and global variables (&lt;code&gt;all.vars&lt;/code&gt;) in the same file.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Define Parameters&lt;/strong&gt;: Override the required &lt;a href=&#34;https://pgsty.pro/docs/pgsql/param/&#34;&gt;&lt;code&gt;PGSQL&lt;/code&gt; parameters&lt;/a&gt; in the &lt;code&gt;vars&lt;/code&gt; block. The override order from global → cluster → host determines the final value.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Apply Configuration&lt;/strong&gt;: Run &lt;code&gt;./configure -c &amp;lt;conf&amp;gt;&lt;/code&gt; or &lt;code&gt;bin/pgsql-add &amp;lt;cls&amp;gt;&lt;/code&gt; and other playbooks to apply the configuration. Pigsty will generate the configuration files needed for Patroni/pgbouncer/pgbackrest based on the parameters.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Pigsty&amp;rsquo;s default demo inventory &lt;code&gt;conf/pgsql.yml&lt;/code&gt; is a minimal example: one &lt;code&gt;pg-meta&lt;/code&gt; cluster, global &lt;code&gt;pg_version: 18&lt;/code&gt;, and a few business user and database definitions. You can expand with more clusters from this base.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Service/Access</title>
        <link>https://pgsty.pro/docs/pgsql/service/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/service/</guid>
        <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Split read and write operations, route traffic correctly, and reliably deliver PostgreSQL cluster capabilities.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/service/#service-overview&#34;&gt;Service&lt;/a&gt; is an abstraction: it is the form in which database clusters provide capabilities externally, encapsulating the details of the underlying cluster.&lt;/p&gt;&#xA;&lt;p&gt;Service is critical for &lt;a href=&#34;https://pgsty.pro/docs/pgsql/service/#access-service&#34;&gt;stable access&lt;/a&gt; in production environments, showing its value during &lt;a href=&#34;https://pgsty.pro/docs/concept/ha/&#34;&gt;high availability&lt;/a&gt; cluster automatic failovers. &lt;a href=&#34;https://pgsty.pro/docs/pgsql/service/#personal-user&#34;&gt;Personal users&lt;/a&gt; typically don&amp;rsquo;t need to worry about this concept.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;personal-user&#34;&gt;Personal User&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The concept of &amp;ldquo;service&amp;rdquo; is for production environments. Personal users/single-machine clusters can skip the complexity and directly access the database using instance names/IP addresses.&lt;/p&gt;</description>
      </item>
    <item>
        <title>PostgreSQL Security</title>
        <link>https://pgsty.pro/docs/pgsql/security/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/security/</guid>
        <description>&lt;p&gt;PostgreSQL security combines authentication, authorization, network boundaries, encrypted communication, data protection, and operational process. Pigsty provides configuration entry points for these mechanisms; operators must still harden, verify, and audit the deployment for its environment.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;concepts-and-boundaries&#34;&gt;Concepts and Boundaries&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--full td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;full-width&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Topic&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Content&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/sec/&#34;&gt;&lt;strong&gt;Security and Compliance&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Default state, capability boundaries, and hardening path&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/sec/auth/&#34;&gt;&lt;strong&gt;Authentication&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;HBA, SCRAM, certificate authentication, and credential management&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/sec/ac/&#34;&gt;&lt;strong&gt;Access Control&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Built-in roles, default privileges, database ACLs, and instance-access boundaries&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/sec/ca/&#34;&gt;&lt;strong&gt;Encrypted Communication&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;CA, TLS, server authentication, and certificate rotation&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/sec/data/&#34;&gt;&lt;strong&gt;Data Security&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Page checksums, replication, backup, PITR, audit, and logging&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/sec/compliance/&#34;&gt;&lt;strong&gt;Compliance&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Launch checks, control mappings, and evidence requirements&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;configuration-reference&#34;&gt;Configuration Reference&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/hba/&#34;&gt;&lt;strong&gt;HBA Configuration&lt;/strong&gt;&lt;/a&gt;: declare PostgreSQL and PgBouncer authentication rules.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/acl/&#34;&gt;&lt;strong&gt;Access Control Configuration&lt;/strong&gt;&lt;/a&gt;: configure default roles, application users, object privileges, and database ACLs.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/user/&#34;&gt;&lt;strong&gt;User Configuration&lt;/strong&gt;&lt;/a&gt;: define user attributes, role membership, and connection-pool options.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/template/crit/&#34;&gt;&lt;strong&gt;CRIT Parameter Template&lt;/strong&gt;&lt;/a&gt;: critical parameters for synchronous replication, checksums, logging, and watchdog.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;administration-and-verification&#34;&gt;Administration and Verification&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/user/&#34;&gt;&lt;strong&gt;User Management&lt;/strong&gt;&lt;/a&gt;: create, update, and remove users.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/hba/&#34;&gt;&lt;strong&gt;HBA Management&lt;/strong&gt;&lt;/a&gt;: refresh rules, inspect effective configuration, and troubleshoot authentication.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/deploy/security/&#34;&gt;&lt;strong&gt;Security Considerations&lt;/strong&gt;&lt;/a&gt;: production hardening and acceptance checklist.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/setup/security/&#34;&gt;&lt;strong&gt;Security Recommendations&lt;/strong&gt;&lt;/a&gt;: minimum password, network, and file checks before installation.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The inventory describes desired state. Acceptance checks should also inspect HBA, certificates, listen ports, and sensitive files on running nodes, and verify effective roles and privileges through PostgreSQL catalogs.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Service / Access</title>
        <link>https://pgsty.pro/docs/pgsql/misc/svc/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/misc/svc/</guid>
        <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Separate read and write operations, route traffic correctly, and deliver PostgreSQL cluster capabilities reliably.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/misc/svc/#service-overview&#34;&gt;Service&lt;/a&gt; is an abstraction: it is the form in which database clusters provide capabilities to the outside world and encapsulates the details of the underlying cluster.&lt;/p&gt;&#xA;&lt;p&gt;Services are critical for &lt;a href=&#34;https://pgsty.pro/docs/pgsql/misc/svc/#accessing-services&#34;&gt;stable access&lt;/a&gt; in production environments and show their value when &lt;a href=&#34;https://pgsty.pro/docs/concept/ha/&#34;&gt;high availability&lt;/a&gt; clusters automatically fail over. &lt;a href=&#34;https://pgsty.pro/docs/pgsql/misc/svc/#single-node-users&#34;&gt;Single-node users&lt;/a&gt; typically don&amp;rsquo;t need to worry about this concept.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;single-node-users&#34;&gt;Single-Node Users&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The concept of &amp;ldquo;service&amp;rdquo; is for production environments. Personal users/single-node clusters can simply access the database directly using instance name/IP address.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Access Control</title>
        <link>https://pgsty.pro/docs/pgsql/misc/acl/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/misc/acl/</guid>
        <description>&lt;p&gt;Pigsty access-control documentation is organized by purpose:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/sec/ac/&#34;&gt;&lt;strong&gt;Access Control Concepts&lt;/strong&gt;&lt;/a&gt;: role model, default privileges, database ACLs, and instance-isolation boundaries.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/acl/&#34;&gt;&lt;strong&gt;Access Control Configuration&lt;/strong&gt;&lt;/a&gt;: &lt;code&gt;pg_default_roles&lt;/code&gt;, &lt;code&gt;pg_users&lt;/code&gt;, &lt;code&gt;pg_default_privileges&lt;/code&gt;, and related parameters.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/concept/sec/auth/&#34;&gt;&lt;strong&gt;Authentication&lt;/strong&gt;&lt;/a&gt;: HBA, SCRAM, certificate authentication, and credential management.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/config/hba/&#34;&gt;&lt;strong&gt;HBA Configuration&lt;/strong&gt;&lt;/a&gt;: PostgreSQL and PgBouncer rule syntax.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/admin/user/&#34;&gt;&lt;strong&gt;User Management&lt;/strong&gt;&lt;/a&gt;: create, update, and remove users in an existing cluster.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;code&gt;dbrole_offline&lt;/code&gt; provides independent read-only object privileges; it does not restrict instance scope automatically. To allow it only on offline instances, set &lt;code&gt;role: offline&lt;/code&gt; explicitly on the corresponding HBA rule and verify the generated &lt;code&gt;pg_hba.conf&lt;/code&gt; on both online and offline instances.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Administration</title>
        <link>https://pgsty.pro/docs/pgsql/_div_admin/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/_div_admin/</guid>
        <description>&lt;p&gt;Database administration and operation tasks&lt;/p&gt;</description>
      </item>
    <item>
        <title>Administration</title>
        <link>https://pgsty.pro/docs/pgsql/admin/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/admin/</guid>
        <description></description>
      </item>
    <item>
        <title>User / Role</title>
        <link>https://pgsty.pro/docs/pgsql/misc/user/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/misc/user/</guid>
        <description>&lt;blockquote&gt;&#xA;&lt;p&gt;In this context, users refer to logical objects within a database cluster created using the SQL commands &lt;code&gt;CREATE USER/ROLE&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;In PostgreSQL, users belong directly to the database cluster rather than to a specific database. Therefore, when creating business databases and business users, you should follow the principle of &amp;ldquo;users first, then databases.&amp;rdquo;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;defining-users&#34;&gt;Defining Users&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Pigsty defines roles and users in database clusters through two configuration parameters:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Database</title>
        <link>https://pgsty.pro/docs/pgsql/misc/db/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/misc/db/</guid>
        <description>&lt;blockquote&gt;&#xA;&lt;p&gt;In this context, Database refers to the logical object created using the SQL command &lt;code&gt;CREATE DATABASE&lt;/code&gt; within a database cluster.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;A PostgreSQL server can serve multiple &lt;strong&gt;databases&lt;/strong&gt; simultaneously. In Pigsty, you can &lt;a href=&#34;https://pgsty.pro/docs/pgsql/misc/db/#define-database&#34;&gt;define&lt;/a&gt; the required databases in the cluster configuration.&lt;/p&gt;&#xA;&lt;p&gt;Pigsty will modify and customize the default template database &lt;code&gt;template1&lt;/code&gt;, creating default schemas, installing default extensions, and configuring default privileges. Newly created databases will inherit these settings from &lt;code&gt;template1&lt;/code&gt; by default.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Authentication / HBA</title>
        <link>https://pgsty.pro/docs/pgsql/misc/hba/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/misc/hba/</guid>
        <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Detailed explanation of Host-Based Authentication (HBA) in Pigsty.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Authentication is the foundation of &lt;a href=&#34;https://pgsty.pro/docs/concept/sec/ac/&#34;&gt;Access Control&lt;/a&gt; and &lt;a href=&#34;https://pgsty.pro/docs/concept/sec/ac/#default-privileges&#34;&gt;Default Privileges&lt;/a&gt;. PostgreSQL supports several &lt;a href=&#34;https://www.postgresql.org/docs/current/client-authentication.html&#34;&gt;authentication&lt;/a&gt; methods.&lt;/p&gt;&#xA;&lt;p&gt;Here we mainly introduce HBA: Host Based Authentication. HBA rules define which users can access which databases from which locations and in which ways.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;client-authentication&#34;&gt;Client Authentication&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;To connect to a PostgreSQL database, users must first be authenticated (password is used by default).&lt;/p&gt;&#xA;&lt;p&gt;You can provide the password in the connection string (not secure), or pass it using the &lt;code&gt;PGPASSWORD&lt;/code&gt; environment variable or &lt;code&gt;.pgpass&lt;/code&gt; file. Refer to the &lt;a href=&#34;https://www.postgresql.org/docs/current/app-psql.html#usage&#34;&gt;&lt;code&gt;psql&lt;/code&gt;&lt;/a&gt; documentation and &lt;a href=&#34;https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING&#34;&gt;PostgreSQL Connection Strings&lt;/a&gt; for more details.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Troubleshooting</title>
        <link>https://pgsty.pro/docs/pgsql/tutorial/failure/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/tutorial/failure/</guid>
        <description>&lt;p&gt;This document lists potential failures in PostgreSQL and Pigsty, as well as SOPs for locating, handling, and analyzing issues.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;disk-space-exhausted&#34;&gt;Disk Space Exhausted&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Disk space exhaustion is the most common type of failure.&lt;/p&gt;&#xA;&lt;h3 id=&#34;symptoms&#34;&gt;Symptoms&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;When the disk space where the database resides is exhausted, PostgreSQL will not work normally and may exhibit the following symptoms: database logs repeatedly report &amp;ldquo;no space left on device&amp;rdquo; errors, new data cannot be written, and PostgreSQL may even trigger a PANIC and force shutdown.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Data Migration</title>
        <link>https://pgsty.pro/docs/pgsql/migration/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/migration/</guid>
        <description>&lt;p&gt;Pigsty includes a built-in playbook &lt;a href=&#34;https://github.com/pgsty/pigsty/blob/main/pgsql-migration.yml&#34;&gt;&lt;code&gt;pgsql-migration.yml&lt;/code&gt;&lt;/a&gt; that implements online database migration based on logical replication.&lt;/p&gt;&#xA;&lt;p&gt;With pre-generated automation scripts, application downtime can be reduced to just a few seconds. However, note that logical replication requires PostgreSQL 10 or later to work.&lt;/p&gt;&#xA;&lt;p&gt;Of course, if you have sufficient downtime budget, you can always use the &lt;code&gt;pg_dump | psql&lt;/code&gt; approach for offline migration.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;defining-migration-tasks&#34;&gt;Defining Migration Tasks&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;To use Pigsty&amp;rsquo;s online migration playbook, you need to create a definition file that describes the migration task details.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Tutorials</title>
        <link>https://pgsty.pro/docs/pgsql/tutorial/</link>
        <pubDate>Sat, 11 Jan 2025 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/tutorial/</guid>
        <description>&lt;p&gt;This section provides step-by-step tutorials for common PostgreSQL tasks and scenarios.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/tutorial/citus/&#34;&gt;&lt;strong&gt;Citus Cluster&lt;/strong&gt;&lt;/a&gt;: Deploy and manage Citus distributed clusters&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/tutorial/drill/&#34;&gt;&lt;strong&gt;Disaster Drill&lt;/strong&gt;&lt;/a&gt;: Emergency recovery when 2 of 3 nodes fail&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/tutorial/pg-vip/&#34;&gt;&lt;strong&gt;PG VIP&lt;/strong&gt;&lt;/a&gt;: Configure L2 VIP for PostgreSQL clusters&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      </item>
    <item>
        <title>Reference</title>
        <link>https://pgsty.pro/docs/pgsql/_div_reference/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/_div_reference/</guid>
        <description>&lt;p&gt;Parameters and reference documentation&lt;/p&gt;</description>
      </item>
    <item>
        <title>Monitoring</title>
        <link>https://pgsty.pro/docs/pgsql/monitor/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/monitor/</guid>
        <description>&lt;p&gt;This document introduces Pigsty&amp;rsquo;s monitoring system architecture, including metrics, logs, and target management. It also covers how to &lt;a href=&#34;https://pgsty.pro/docs/pgsql/monitor/#monitor-existing-cluster&#34;&gt;monitor existing PG clusters&lt;/a&gt; and remote &lt;a href=&#34;https://pgsty.pro/docs/pgsql/monitor/#monitor-rds&#34;&gt;RDS services&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;monitoring-overview&#34;&gt;Monitoring Overview&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Pigsty uses a modern observability stack for PostgreSQL monitoring:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Grafana for metrics visualization and PostgreSQL datasource&lt;/li&gt;&#xA;&lt;li&gt;VictoriaMetrics for collecting metrics from PostgreSQL / Pgbouncer / Patroni / HAProxy / Node&lt;/li&gt;&#xA;&lt;li&gt;VictoriaLogs for logging PostgreSQL / Pgbouncer / Patroni / pgBackRest and host component logs&lt;/li&gt;&#xA;&lt;li&gt;Battery-included Grafana dashboards showcasing all aspects of PostgreSQL; use the live &lt;a href=&#34;https://demo.pigsty.io/ui/&#34;&gt;demo&lt;/a&gt; and the dashboard links in this page because the set evolves with each release&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Metrics&lt;/strong&gt;&lt;/p&gt;</description>
      </item>
    <item>
        <title>Dashboard</title>
        <link>https://pgsty.pro/docs/pgsql/dashboard/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/dashboard/</guid>
        <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Pigsty provides numerous out-of-the-box Grafana monitoring dashboards for PostgreSQL: &lt;a href=&#34;https://demo.pigsty.io/ui/d/pgsql-overview&#34;&gt;Demo&lt;/a&gt; &amp;amp; &lt;a href=&#34;https://github.com/pgsty/pigsty/wiki/Gallery&#34;&gt;Gallery&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;The current source provides 31 PostgreSQL-related dashboards: 29 PostgreSQL / PGCAT dashboards under &lt;code&gt;files/grafana/pgsql&lt;/code&gt;, plus two PGLOG dashboards under &lt;code&gt;files/grafana/app&lt;/code&gt;. They are organized by hierarchy into Overview, Cluster, Instance, and Database categories, and by data source into &lt;a href=&#34;https://pgsty.pro/docs/pgsql/dashboard/#overview&#34;&gt;PGSQL&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/pgsql/dashboard/#pgcat&#34;&gt;PGCAT&lt;/a&gt;, and &lt;a href=&#34;https://pgsty.pro/docs/pgsql/dashboard/#pglog&#34;&gt;PGLOG&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://pgsty.pro/img/pigsty/dashboard.jpg&#34; alt=&#34;pigsty-dashboard.jpg&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--full td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;full-width&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Overview&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Cluster&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Instance&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Database&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgsql-overview&#34;&gt;PGSQL Overview&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgsql-cluster&#34;&gt;PGSQL Cluster&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgsql-instance&#34;&gt;PGSQL Instance&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgsql-database&#34;&gt;PGSQL Database&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgsql-alert&#34;&gt;PGSQL Alert&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgrds-cluster&#34;&gt;PGRDS Cluster&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgrds-instance&#34;&gt;PGRDS Instance&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgcat-database&#34;&gt;PGCAT Database&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgsql-shard&#34;&gt;PGSQL Shard&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgsql-activity&#34;&gt;PGSQL Activity&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgcat-instance&#34;&gt;PGCAT Instance&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgsql-tables&#34;&gt;PGSQL Tables&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgsql-replication&#34;&gt;PGSQL Replication&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgsql-persist&#34;&gt;PGSQL Persist&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgsql-table&#34;&gt;PGSQL Table&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgsql-service&#34;&gt;PGSQL Service&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgsql-proxy&#34;&gt;PGSQL Proxy&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgcat-table&#34;&gt;PGCAT Table&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgsql-databases&#34;&gt;PGSQL Databases&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgsql-pgbouncer&#34;&gt;PGSQL Pgbouncer&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgsql-query&#34;&gt;PGSQL Query&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgsql-patroni&#34;&gt;PGSQL Patroni&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgsql-session&#34;&gt;PGSQL Session&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgcat-query&#34;&gt;PGCAT Query&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgsql-pitr&#34;&gt;PGSQL PITR&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgsql-xacts&#34;&gt;PGSQL Xacts&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgcat-locks&#34;&gt;PGCAT Locks&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgsql-exporter&#34;&gt;PGSQL Exporter&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://demo.pigsty.io/ui/d/pgcat-schema&#34;&gt;PGCAT Schema&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;/p&gt;</description>
      </item>
    <item>
        <title>Metrics</title>
        <link>https://pgsty.pro/docs/pgsql/metric/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/metric/</guid>
        <description>&lt;p&gt;The &lt;a href=&#34;https://pgsty.pro/docs/pgsql/&#34;&gt;&lt;strong&gt;&lt;code&gt;PGSQL&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; module provides 638 available monitoring metrics.&lt;/p&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--full td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;full-width&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Metric Name&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Labels&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;ALERTS&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;category&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;level&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;severity&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;alertname&lt;/code&gt;, &lt;code&gt;alertstate&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;ALERTS_FOR_STATE&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;category&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;level&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;severity&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;alertname&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;cls:pressure1&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;cls:pressure15&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;cls:pressure5&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_gc_duration_seconds&lt;/td&gt;&#xA;      &lt;td&gt;summary&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;quantile&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;A summary of the pause duration of garbage collection cycles.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_gc_duration_seconds_count&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_gc_duration_seconds_sum&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_goroutines&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of goroutines that currently exist.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_info&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;version&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Information about the Go environment.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_memstats_alloc_bytes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of bytes allocated and still in use.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_memstats_alloc_bytes_total&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total number of bytes allocated, even if freed.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_memstats_buck_hash_sys_bytes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of bytes used by the profiling bucket hash table.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_memstats_frees_total&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total number of frees.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_memstats_gc_sys_bytes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of bytes used for garbage collection system metadata.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_memstats_heap_alloc_bytes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of heap bytes allocated and still in use.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_memstats_heap_idle_bytes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of heap bytes waiting to be used.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_memstats_heap_inuse_bytes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of heap bytes that are in use.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_memstats_heap_objects&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of allocated objects.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_memstats_heap_released_bytes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of heap bytes released to OS.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_memstats_heap_sys_bytes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of heap bytes obtained from system.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_memstats_last_gc_time_seconds&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of seconds since 1970 of last garbage collection.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_memstats_lookups_total&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total number of pointer lookups.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_memstats_mallocs_total&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total number of mallocs.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_memstats_mcache_inuse_bytes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of bytes in use by mcache structures.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_memstats_mcache_sys_bytes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of bytes used for mcache structures obtained from system.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_memstats_mspan_inuse_bytes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of bytes in use by mspan structures.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_memstats_mspan_sys_bytes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of bytes used for mspan structures obtained from system.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_memstats_next_gc_bytes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of heap bytes when next garbage collection will take place.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_memstats_other_sys_bytes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of bytes used for other system allocations.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_memstats_stack_inuse_bytes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of bytes in use by the stack allocator.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_memstats_stack_sys_bytes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of bytes obtained from system for stack allocator.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_memstats_sys_bytes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of bytes obtained from system.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;go_threads&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of OS threads created.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;ins:pressure1&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;ins:pressure15&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;ins:pressure5&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;patroni_cluster_unlocked&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;scope&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Value is 1 if the cluster is unlocked, 0 if locked.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;patroni_dcs_last_seen&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;scope&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Epoch timestamp when DCS was last contacted successfully by Patroni.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;patroni_failsafe_mode_is_active&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;scope&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Value is 1 if failsafe mode is active, 0 if inactive.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;patroni_is_paused&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;scope&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Value is 1 if auto failover is disabled, 0 otherwise.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;patroni_master&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;scope&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Value is 1 if this node is the leader, 0 otherwise.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;patroni_pending_restart&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;scope&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Value is 1 if the node needs a restart, 0 otherwise.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;patroni_postgres_in_archive_recovery&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;scope&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Value is 1 if Postgres is replicating from archive, 0 otherwise.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;patroni_postgres_running&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;scope&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Value is 1 if Postgres is running, 0 otherwise.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;patroni_postgres_server_version&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;scope&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Version of Postgres (if running), 0 otherwise.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;patroni_postgres_streaming&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;scope&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Value is 1 if Postgres is streaming, 0 otherwise.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;patroni_postgres_timeline&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;scope&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Postgres timeline of this node (if running), 0 otherwise.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;patroni_postmaster_start_time&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;scope&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Epoch seconds since Postgres started.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;patroni_primary&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;scope&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Value is 1 if this node is the leader, 0 otherwise.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;patroni_replica&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;scope&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Value is 1 if this node is a replica, 0 otherwise.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;patroni_standby_leader&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;scope&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Value is 1 if this node is the standby_leader, 0 otherwise.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;patroni_sync_standby&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;scope&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Value is 1 if this node is a sync standby replica, 0 otherwise.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;patroni_up&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;patroni_version&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;scope&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Patroni semver without periods.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;patroni_xlog_location&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;scope&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Current location of the Postgres transaction log, 0 if this node is not the leader.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;patroni_xlog_paused&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;scope&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Value is 1 if the Postgres xlog is paused, 0 otherwise.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;patroni_xlog_received_location&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;scope&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Current location of the received Postgres transaction log, 0 if this node is not a replica.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;patroni_xlog_replayed_location&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;scope&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Current location of the replayed Postgres transaction log, 0 if this node is not a replica.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;patroni_xlog_replayed_timestamp&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;scope&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Current timestamp of the replayed Postgres transaction log, 0 if null.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:active_backends&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:active_time_rate15m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:active_time_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:active_time_rate5m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:age&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:buf_alloc_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:buf_clean_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:buf_flush_backend_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:buf_flush_checkpoint_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:cpu_count&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:cpu_usage&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:cpu_usage_15m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:cpu_usage_1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:cpu_usage_5m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:db_size&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:file_size&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:ixact_backends&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:ixact_time_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:lag_bytes&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:lag_seconds&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:leader&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:load1&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:load15&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:load5&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:lock_count&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:locks&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;mode&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:log_size&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:lsn_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:members&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:num_backends&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:partition&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:receiver&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;state&lt;/code&gt;, &lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;appname&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;sender_host&lt;/code&gt;, &lt;code&gt;sender_port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:rlock_count&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:saturation1&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:saturation15&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:saturation5&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:sender&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pid&lt;/code&gt;, &lt;code&gt;usename&lt;/code&gt;, &lt;code&gt;address&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;appname&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:session_time_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:size&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:slot_count&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:slot_retained_bytes&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:standby_count&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:sync_state&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:timeline&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:tup_deleted_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:tup_fetched_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:tup_inserted_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:tup_modified_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:tup_returned_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:wal_size&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:xact_commit_rate15m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:xact_commit_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:xact_commit_rate5m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:xact_rollback_rate15m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:xact_rollback_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:xact_rollback_rate5m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:xact_total_rate15m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:xact_total_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:xact_total_sigma15m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:cls:xlock_count&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:active_backends&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:active_time_rate15m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:active_time_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:active_time_rate5m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:age&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:age_deriv1h&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:age_exhaust&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:blk_io_time_seconds_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:blk_read_time_seconds_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:blk_write_time_seconds_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:blks_access_1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:blks_hit_1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:blks_hit_ratio1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:blks_read_1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:conn_limit&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:conn_usage&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:db_size&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:ixact_backends&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:ixact_time_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:lock_count&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:num_backends&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:rlock_count&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:session_time_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:temp_bytes_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:temp_files_1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:tup_deleted_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:tup_fetched_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:tup_inserted_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:tup_modified_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:tup_returned_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:wlock_count&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:xact_commit_rate15m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:xact_commit_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:xact_commit_rate5m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:xact_rollback_rate15m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:xact_rollback_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:xact_rollback_rate5m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:xact_total_rate15m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:xact_total_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:xact_total_rate5m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:xact_total_sigma15m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:db:xlock_count&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:active_backends&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:active_time_rate15m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:active_time_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:active_time_rate5m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:age&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:cpu_count&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:cpu_usage&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:cpu_usage_15m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:cpu_usage_1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:cpu_usage_5m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:ixact_backends&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:ixact_time_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:lag_bytes&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:lag_seconds&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:lsn_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:session_time_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:tup_deleted_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:tup_fetched_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:tup_inserted_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:tup_modified_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:tup_returned_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:xact_commit_rate15m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:xact_commit_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:xact_commit_rate5m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:xact_rollback_rate15m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:xact_rollback_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:xact_rollback_rate5m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:xact_total_rate15m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:xact_total_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:env:xact_total_sigma15m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:active_backends&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:active_time_rate15m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:active_time_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:active_time_rate5m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:age&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:blks_hit_ratio1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:buf_alloc_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:buf_clean_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:buf_flush_backend_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:buf_flush_checkpoint_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:ckpt_1h&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:ckpt_req_1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:ckpt_timed_1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:conn_limit&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:conn_usage&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:cpu_count&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:cpu_usage&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:cpu_usage_15m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:cpu_usage_1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:cpu_usage_5m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:db_size&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:file_size&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:fs_size&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:is_leader&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:ixact_backends&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:ixact_time_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:lag_bytes&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:lag_seconds&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:load1&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:load15&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:load5&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:lock_count&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:locks&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;mode&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:log_size&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:lsn_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:mem_size&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:num_backends&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:rlock_count&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:saturation1&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:saturation15&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:saturation5&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:session_time_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:slot_retained_bytes&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:space_usage&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:status&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:sync_state&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:target_count&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:timeline&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:tup_deleted_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:tup_fetched_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:tup_inserted_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:tup_modified_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:tup_returned_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:wal_size&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:wlock_count&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:xact_commit_rate15m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:xact_commit_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:xact_commit_rate5m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:xact_rollback_rate15m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:xact_rollback_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:xact_rollback_rate5m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:xact_total_rate15m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:xact_total_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:xact_total_rate5m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:xact_total_sigma15m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:ins:xlock_count&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:query:call_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:query:rt_1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg:table:scan_rate1m&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_activity_count&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;state&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Count of connection among (datname,state)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_activity_max_conn_duration&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;state&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Max backend session duration since state change among (datname, state)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_activity_max_duration&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;state&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Max duration since last state change among (datname, state)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_activity_max_tx_duration&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;state&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Max transaction duration since state change among (datname, state)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_archiver_failed_count&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of failed attempts for archiving WAL files&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_archiver_finish_count&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of WAL files that have been successfully archived&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_archiver_last_failed_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time of the last failed archival operation&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_archiver_last_finish_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time of the last successful archive operation&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_archiver_reset_time&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time at which archive statistics were last reset&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_backend_count&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;type&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Database backend process count by backend_type&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_bgwriter_buffers_alloc&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of buffers allocated&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_bgwriter_buffers_backend&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of buffers written directly by a backend&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_bgwriter_buffers_backend_fsync&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of times a backend had to execute its own fsync call&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_bgwriter_buffers_checkpoint&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of buffers written during checkpoints&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_bgwriter_buffers_clean&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of buffers written by the background writer&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_bgwriter_checkpoint_sync_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total amount of time that has been spent in the portion of checkpoint processing where files are synchronized to disk, in seconds&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_bgwriter_checkpoint_write_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total amount of time that has been spent in the portion of checkpoint processing where files are written to disk, in seconds&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_bgwriter_checkpoints_req&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of requested checkpoints that have been performed&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_bgwriter_checkpoints_timed&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of scheduled checkpoints that have been performed&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_bgwriter_maxwritten_clean&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of times the background writer stopped a cleaning scan because it had written too many buffers&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_bgwriter_reset_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time at which bgwriter statistics were last reset&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_boot_time&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;unix timestamp when postmaster boot&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_checkpoint_checkpoint_lsn&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Latest checkpoint location&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_checkpoint_elapse&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Seconds elapsed since latest checkpoint in seconds&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_checkpoint_full_page_writes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Latest checkpoint&amp;rsquo;s full_page_writes enabled&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_checkpoint_newest_commit_ts_xid&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Latest checkpoint&amp;rsquo;s newestCommitTsXid&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_checkpoint_next_multi_offset&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Latest checkpoint&amp;rsquo;s NextMultiOffset&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_checkpoint_next_multixact_id&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Latest checkpoint&amp;rsquo;s NextMultiXactId&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_checkpoint_next_oid&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Latest checkpoint&amp;rsquo;s NextOID&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_checkpoint_next_xid&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Latest checkpoint&amp;rsquo;s NextXID xid&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_checkpoint_next_xid_epoch&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Latest checkpoint&amp;rsquo;s NextXID epoch&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_checkpoint_oldest_active_xid&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Latest checkpoint&amp;rsquo;s oldestActiveXID&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_checkpoint_oldest_commit_ts_xid&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Latest checkpoint&amp;rsquo;s oldestCommitTsXid&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_checkpoint_oldest_multi_dbid&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Latest checkpoint&amp;rsquo;s oldestMulti&amp;rsquo;s DB OID&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_checkpoint_oldest_multi_xid&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Latest checkpoint&amp;rsquo;s oldestMultiXid&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_checkpoint_oldest_xid&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Latest checkpoint&amp;rsquo;s oldestXID&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_checkpoint_oldest_xid_dbid&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Latest checkpoint&amp;rsquo;s oldestXID&amp;rsquo;s DB OID&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_checkpoint_prev_tli&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Latest checkpoint&amp;rsquo;s PrevTimeLineID&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_checkpoint_redo_lsn&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Latest checkpoint&amp;rsquo;s REDO location&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_checkpoint_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time of latest checkpoint&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_checkpoint_tli&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Latest checkpoint&amp;rsquo;s TimeLineID&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_conf_reload_time&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;seconds since last configuration reload&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_active_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time spent executing SQL statements in this database, in seconds&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_age&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Age of database calculated from datfrozenxid&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_allow_conn&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;If false(0) then no one can connect to this database.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_blk_read_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time spent reading data file blocks by backends in this database, in seconds&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_blk_write_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time spent writing data file blocks by backends in this database, in seconds&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_blks_access&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of times disk blocks that accessed read+hit&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_blks_hit&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of times disk blocks were found already in the buffer cache&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_blks_read&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of disk blocks read in this database&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_cks_fail_time&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time at which the last data page checksum failure was detected in this database&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_cks_fails&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of data page checksum failures detected in this database, -1 for not enabled&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_confl_confl_bufferpin&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of queries in this database that have been canceled due to pinned buffers&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_confl_confl_deadlock&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of queries in this database that have been canceled due to deadlocks&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_confl_confl_lock&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of queries in this database that have been canceled due to lock timeouts&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_confl_confl_snapshot&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of queries in this database that have been canceled due to old snapshots&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_confl_confl_tablespace&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of queries in this database that have been canceled due to dropped tablespaces&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_conflicts&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of queries canceled due to conflicts with recovery in this database&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_conn_limit&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Sets maximum number of concurrent connections that can be made to this database. -1 means no limit.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_datid&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;OID of the database&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_deadlocks&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of deadlocks detected in this database&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_frozen_xid&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;All transaction IDs before this one have been frozened&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_is_template&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;If true(1), then this database can be cloned by any user with CREATEDB privileges&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_ixact_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time spent idling while in a transaction in this database, in seconds&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_numbackends&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of backends currently connected to this database&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_reset_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time at which database statistics were last reset&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_session_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time spent by database sessions in this database, in seconds&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_sessions&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total number of sessions established to this database&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_sessions_abandoned&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of database sessions to this database that were terminated because connection to the client was lost&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_sessions_fatal&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of database sessions to this database that were terminated by fatal errors&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_sessions_killed&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of database sessions to this database that were terminated by operator intervention&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_temp_bytes&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total amount of data written to temporary files by queries in this database.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_temp_files&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of temporary files created by queries in this database&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_tup_deleted&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of rows deleted by queries in this database&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_tup_fetched&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of rows fetched by queries in this database&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_tup_inserted&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of rows inserted by queries in this database&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_tup_modified&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of rows modified by queries in this database&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_tup_returned&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of rows returned by queries in this database&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_tup_updated&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of rows updated by queries in this database&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_xact_commit&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of transactions in this database that have been committed&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_xact_rollback&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of transactions in this database that have been rolled back&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_db_xact_total&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of transactions in this database&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_downstream_count&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;state&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Count of corresponding state&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_exporter_agent_up&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_exporter_last_scrape_time&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;seconds exporter spending on scrapping&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_exporter_query_cache_ttl&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;times to live of query cache&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_exporter_query_scrape_duration&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;seconds query spending on scrapping&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_exporter_query_scrape_error_count&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;times the query failed&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_exporter_query_scrape_hit_count&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;numbers been scrapped from this query&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_exporter_query_scrape_metric_count&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;numbers of metrics been scrapped from this query&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_exporter_query_scrape_total_count&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;times exporter server was scraped for metrics&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_exporter_scrape_duration&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;seconds exporter spending on scrapping&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_exporter_scrape_error_count&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;times exporter was scraped for metrics and failed&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_exporter_scrape_total_count&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;times exporter was scraped for metrics&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_exporter_server_scrape_duration&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;seconds exporter server spending on scrapping&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_exporter_server_scrape_error_count&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_exporter_server_scrape_total_count&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;times exporter server was scraped for metrics&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_exporter_server_scrape_total_seconds&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;seconds exporter server spending on scrapping&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_exporter_up&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;always be 1 if your could retrieve metrics&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_exporter_uptime&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;seconds since exporter primary server inited&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_flush_lsn&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;primary only, location of current wal syncing&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_func_calls&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;funcname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of times this function has been called&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_func_self_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;funcname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total time spent in this function itself, not including other functions called by it, in ms&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_func_total_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;funcname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total time spent in this function and all other functions called by it, in ms&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_in_recovery&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;server is in recovery mode? 1 for yes 0 for no&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_index_idx_blks_hit&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;relid&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;idxname&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of buffer hits in this index&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_index_idx_blks_read&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;relid&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;idxname&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of disk blocks read from this index&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_index_idx_scan&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;relid&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;idxname&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of index scans initiated on this index&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_index_idx_tup_fetch&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;relid&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;idxname&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of live table rows fetched by simple index scans using this index&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_index_idx_tup_read&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;relid&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;idxname&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of index entries returned by scans on this index&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_index_relpages&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;relid&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;idxname&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Size of the on-disk representation of this index in pages&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_index_reltuples&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;relid&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;idxname&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Estimate relation tuples&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_insert_lsn&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;primary only, location of current wal inserting&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_io_evictions&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;type&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;object&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;context&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of times a block has been written out from a shared or local buffer&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_io_extend_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;type&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;object&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;context&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time spent in extend operations in seconds&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_io_extends&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;type&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;object&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;context&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of relation extend operations, each of the size specified in op_bytes.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_io_fsync_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;type&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;object&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;context&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time spent in fsync operations in seconds&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_io_fsyncs&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;type&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;object&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;context&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of fsync calls. These are only tracked in context normal&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_io_hits&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;type&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;object&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;context&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;The number of times a desired block was found in a shared buffer.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_io_op_bytes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;type&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;object&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;context&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;The number of bytes per unit of I/O read, written, or extended. 8192 by default&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_io_read_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;type&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;object&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;context&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time spent in read operations in seconds&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_io_reads&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;type&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;object&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;context&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of read operations, each of the size specified in op_bytes.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_io_reset_time&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;type&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;object&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;context&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Timestamp at which these statistics were last reset&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_io_reuses&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;type&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;object&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;context&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;The number of times an existing buffer in reused&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_io_write_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;type&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;object&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;context&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time spent in write operations in seconds&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_io_writeback_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;type&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;object&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;context&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time spent in writeback operations in seconds&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_io_writebacks&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;type&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;object&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;context&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of units of size op_bytes which the process requested the kernel write out to permanent storage.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_io_writes&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;type&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;object&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;context&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of write operations, each of the size specified in op_bytes.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_is_in_recovery&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;1 if in recovery mode&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_is_wal_replay_paused&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;1 if wal play paused&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_lag&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;replica only, replication lag in seconds&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_last_replay_time&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;time when last transaction been replayed&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_lock_count&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;mode&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of locks of corresponding mode and database&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_lsn&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;log sequence number, current write location&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_meta_info&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;extensions&lt;/code&gt;, &lt;code&gt;version&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;primary_conninfo&lt;/code&gt;, &lt;code&gt;conf_path&lt;/code&gt;, &lt;code&gt;hba_path&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;cluster_id&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;listen_port&lt;/code&gt;, &lt;code&gt;wal_level&lt;/code&gt;, &lt;code&gt;ver_num&lt;/code&gt;, &lt;code&gt;cluster_name&lt;/code&gt;, &lt;code&gt;data_dir&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;constant 1&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_query_calls&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of times the statement was executed&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_query_exec_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total time spent executing the statement, in seconds&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_query_io_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total time the statement spent reading and writing blocks, in seconds&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_query_rows&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total number of rows retrieved or affected by the statement&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_query_sblk_dirtied&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total number of shared blocks dirtied by the statement&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_query_sblk_hit&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total number of shared block cache hits by the statement&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_query_sblk_read&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total number of shared blocks read by the statement&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_query_sblk_written&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total number of shared blocks written by the statement&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_query_wal_bytes&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total amount of WAL bytes generated by the statement&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_receive_lsn&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;replica only, location of wal synced to disk&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recovery_backup_end_lsn&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Backup end location&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recovery_backup_start_lsn&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Backup start location&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recovery_min_lsn&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Minimum recovery ending location&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recovery_min_timeline&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Min recovery ending loc&amp;rsquo;s timeline&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recovery_prefetch_block_distance&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;How many blocks ahead the prefetcher is looking&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recovery_prefetch_hit&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of blocks not prefetched because they were already in the buffer pool&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recovery_prefetch_io_depth&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;How many prefetches have been initiated but are not yet known to have completed&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recovery_prefetch_prefetch&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of blocks prefetched because they were not in the buffer pool&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recovery_prefetch_reset_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time at which these recovery prefetch statistics were last reset&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recovery_prefetch_skip_fpw&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of blocks not prefetched because a full page image was included in the WAL&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recovery_prefetch_skip_init&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of blocks not prefetched because they would be zero-initialized&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recovery_prefetch_skip_new&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of blocks not prefetched because they didn&amp;rsquo;t exist yet&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recovery_prefetch_skip_rep&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of blocks not prefetched because they were already recently prefetched&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recovery_prefetch_wal_distance&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;How many bytes ahead the prefetcher is looking&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recovery_require_record&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;End-of-backup record required&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recv_flush_lsn&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;state&lt;/code&gt;, &lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;sender_host&lt;/code&gt;, &lt;code&gt;sender_port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Last write-ahead log location already received and flushed to disk&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recv_flush_tli&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;state&lt;/code&gt;, &lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;sender_host&lt;/code&gt;, &lt;code&gt;sender_port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Timeline number of last write-ahead log location received and flushed to disk&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recv_init_lsn&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;state&lt;/code&gt;, &lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;sender_host&lt;/code&gt;, &lt;code&gt;sender_port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;First write-ahead log location used when WAL receiver is started&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recv_init_tli&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;state&lt;/code&gt;, &lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;sender_host&lt;/code&gt;, &lt;code&gt;sender_port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;First timeline number used when WAL receiver is started&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recv_msg_recv_time&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;state&lt;/code&gt;, &lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;sender_host&lt;/code&gt;, &lt;code&gt;sender_port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Receipt time of last message received from origin WAL sender&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recv_msg_send_time&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;state&lt;/code&gt;, &lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;sender_host&lt;/code&gt;, &lt;code&gt;sender_port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Send time of last message received from origin WAL sender&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recv_pid&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;state&lt;/code&gt;, &lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;sender_host&lt;/code&gt;, &lt;code&gt;sender_port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Process ID of the WAL receiver process&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recv_reported_lsn&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;state&lt;/code&gt;, &lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;sender_host&lt;/code&gt;, &lt;code&gt;sender_port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Last write-ahead log location reported to origin WAL sender&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recv_reported_time&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;state&lt;/code&gt;, &lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;sender_host&lt;/code&gt;, &lt;code&gt;sender_port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time of last write-ahead log location reported to origin WAL sender&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recv_time&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;state&lt;/code&gt;, &lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;sender_host&lt;/code&gt;, &lt;code&gt;sender_port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time of current snapshot&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_recv_write_lsn&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;state&lt;/code&gt;, &lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;sender_host&lt;/code&gt;, &lt;code&gt;sender_port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Last write-ahead log location already received and written to disk, but not flushed.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_relkind_count&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;relkind&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of relations of corresponding relkind&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_repl_backend_xmin&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pid&lt;/code&gt;, &lt;code&gt;usename&lt;/code&gt;, &lt;code&gt;address&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;appname&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;This standby&amp;rsquo;s xmin horizon reported by hot_standby_feedback.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_repl_client_port&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pid&lt;/code&gt;, &lt;code&gt;usename&lt;/code&gt;, &lt;code&gt;address&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;appname&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;TCP port number that the client is using for communication with this WAL sender, or -1 if a Unix socket is used&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_repl_flush_diff&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pid&lt;/code&gt;, &lt;code&gt;usename&lt;/code&gt;, &lt;code&gt;address&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;appname&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Last log position flushed to disk by this standby server diff with current lsn&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_repl_flush_lag&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pid&lt;/code&gt;, &lt;code&gt;usename&lt;/code&gt;, &lt;code&gt;address&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;appname&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time elapsed between flushing recent WAL locally and receiving notification that this standby server has written and flushed it&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_repl_flush_lsn&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pid&lt;/code&gt;, &lt;code&gt;usename&lt;/code&gt;, &lt;code&gt;address&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;appname&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Last write-ahead log location flushed to disk by this standby server&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_repl_launch_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pid&lt;/code&gt;, &lt;code&gt;usename&lt;/code&gt;, &lt;code&gt;address&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;appname&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time when this process was started, i.e., when the client connected to this WAL sender&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_repl_lsn&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pid&lt;/code&gt;, &lt;code&gt;usename&lt;/code&gt;, &lt;code&gt;address&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;appname&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Current log position on this server&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_repl_replay_diff&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pid&lt;/code&gt;, &lt;code&gt;usename&lt;/code&gt;, &lt;code&gt;address&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;appname&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Last log position replayed into the database on this standby server diff with current lsn&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_repl_replay_lag&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pid&lt;/code&gt;, &lt;code&gt;usename&lt;/code&gt;, &lt;code&gt;address&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;appname&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time elapsed between flushing recent WAL locally and receiving notification that this standby server has written, flushed and applied it&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_repl_replay_lsn&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pid&lt;/code&gt;, &lt;code&gt;usename&lt;/code&gt;, &lt;code&gt;address&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;appname&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Last write-ahead log location replayed into the database on this standby server&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_repl_reply_time&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pid&lt;/code&gt;, &lt;code&gt;usename&lt;/code&gt;, &lt;code&gt;address&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;appname&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Send time of last reply message received from standby server&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_repl_sent_diff&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pid&lt;/code&gt;, &lt;code&gt;usename&lt;/code&gt;, &lt;code&gt;address&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;appname&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Last log position sent to this standby server diff with current lsn&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_repl_sent_lsn&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pid&lt;/code&gt;, &lt;code&gt;usename&lt;/code&gt;, &lt;code&gt;address&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;appname&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Last write-ahead log location sent on this connection&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_repl_state&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pid&lt;/code&gt;, &lt;code&gt;usename&lt;/code&gt;, &lt;code&gt;address&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;appname&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Current WAL sender encoded state 0-4 for streaming startup catchup backup stopping&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_repl_sync_priority&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pid&lt;/code&gt;, &lt;code&gt;usename&lt;/code&gt;, &lt;code&gt;address&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;appname&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Priority of this standby server for being chosen as the synchronous standby&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_repl_sync_state&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pid&lt;/code&gt;, &lt;code&gt;usename&lt;/code&gt;, &lt;code&gt;address&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;appname&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Encoded synchronous state of this standby server, 0-3 for async potential sync quorum&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_repl_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pid&lt;/code&gt;, &lt;code&gt;usename&lt;/code&gt;, &lt;code&gt;address&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;appname&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Current timestamp in unix epoch&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_repl_write_diff&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pid&lt;/code&gt;, &lt;code&gt;usename&lt;/code&gt;, &lt;code&gt;address&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;appname&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Last log position written to disk by this standby server diff with current lsn&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_repl_write_lag&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pid&lt;/code&gt;, &lt;code&gt;usename&lt;/code&gt;, &lt;code&gt;address&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;appname&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time elapsed between flushing recent WAL locally and receiving notification that this standby server has written it&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_repl_write_lsn&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pid&lt;/code&gt;, &lt;code&gt;usename&lt;/code&gt;, &lt;code&gt;address&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;appname&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Last write-ahead log location written to disk by this standby server&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_replay_lsn&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;replica only, location of wal applied&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_seq_blks_hit&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;seqname&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of buffer hits in this sequence&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_seq_blks_read&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;seqname&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of disk blocks read from this sequence&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_seq_last_value&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;seqname&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;The last sequence value written to disk&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_setting_block_size&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;pg page block size, 8192 by default&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_setting_data_checksums&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;whether data checksum is enabled, 1 enabled 0 disabled&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_setting_max_connections&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;number of concurrent connections to the database server&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_setting_max_locks_per_transaction&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;no more than this many distinct objects can be locked at any one time&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_setting_max_prepared_transactions&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;maximum number of transactions that can be in the prepared state simultaneously&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_setting_max_replication_slots&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;maximum number of replication slots&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_setting_max_wal_senders&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;maximum number of concurrent connections from standby servers&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_setting_max_worker_processes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;maximum number of background processes that the system can support&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_setting_wal_log_hints&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;whether wal_log_hints is enabled, 1 enabled 0 disabled&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_size_bytes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;File size in bytes&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slot_active&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;True(1) if this slot is currently actively being used&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slot_catalog_xmin&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;The oldest transaction affecting the system catalogs that this slot needs the database to retain.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slot_confirm_lsn&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;The address (LSN) up to which the logical slot&amp;rsquo;s consumer has confirmed receiving data.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slot_reset_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;When statistics were last reset&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slot_restart_lsn&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;The address (LSN) of oldest WAL which still might be required by the consumer of this slot&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slot_retained_bytes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Size of bytes that retained for this slot&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slot_safe_wal_size&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;bytes that can be written to WAL which will not make slot into lost&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slot_spill_bytes&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Bytes that spilled to disk due to logical decode mem exceeding&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slot_spill_count&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Xacts that spilled to disk due to logical decode mem exceeding (a xact can be spilled multiple times)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slot_spill_txns&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Xacts that spilled to disk due to logical decode mem exceeding (subtrans included)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slot_stream_bytes&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Bytes that streamed to decoding output plugin after mem exceed&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slot_stream_count&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Xacts that streamed to decoding output plugin after mem exceed  (a xact can be streamed multiple times)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slot_stream_txns&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Xacts that streamed to decoding output plugin after mem exceed&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slot_temporary&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;True(1) if this is a temporary replication slot.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slot_total_bytes&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of decoded bytes sent to the decoding output plugin for this slot&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slot_total_txns&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of decoded xacts sent to the decoding output plugin for this slot&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slot_wal_status&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;WAL reserve status 0-3 means reserved,extended,unreserved,lost, -1 means other&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slot_xmin&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;slot_name&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;The oldest transaction that this slot needs the database to retain.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slru_blks_exists&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of blocks checked for existence for this SLRU&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slru_blks_hit&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of times disk blocks were found already in the SLRU, so that a read was not necessary&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slru_blks_read&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of disk blocks read for this SLRU&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slru_blks_written&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of disk blocks written for this SLRU&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slru_blks_zeroed&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of blocks zeroed during initializations&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slru_flushes&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of flushes of dirty data for this SLRU&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slru_reset_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time at which these statistics were last reset&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_slru_truncates&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of truncates for this SLRU&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_ssl_disabled&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of client connection that does not use ssl&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_ssl_enabled&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of client connection that use ssl&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_sync_standby_enabled&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;names&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Synchronous commit enabled, 1 if enabled, 0 if disabled&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_age&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Age of this table in vacuum cycles&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_analyze_count&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of times this table has been manually analyzed&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_autoanalyze_count&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of times this table has been analyzed by the autovacuum daemon&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_autovacuum_count&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of times this table has been vacuumed by the autovacuum daemon&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_frozenxid&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;All txid before this have been frozen on this table&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_heap_blks_hit&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of buffer hits in this table&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_heap_blks_read&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of disk blocks read from this table&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_idx_blks_hit&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of buffer hits in all indexes on this table&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_idx_blks_read&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of disk blocks read from all indexes on this table&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_idx_scan&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of index scans initiated on this table&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_idx_tup_fetch&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of live rows fetched by index scans&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_kind&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Relation kind r/table/114&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_n_dead_tup&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Estimated number of dead rows&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_n_ins_since_vacuum&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Estimated number of rows inserted since this table was last vacuumed&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_n_live_tup&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Estimated number of live rows&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_n_mod_since_analyze&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Estimated number of rows modified since this table was last analyzed&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_n_tup_del&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of rows deleted&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_n_tup_hot_upd&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of rows HOT updated (i.e with no separate index update required)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_n_tup_ins&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of rows inserted&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_n_tup_mod&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of rows modified (insert + update + delete)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_n_tup_newpage_upd&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of rows updated where the successor version goes onto a new heap page&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_n_tup_upd&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of rows updated (includes HOT updated rows)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_ncols&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of columns in the table&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_pages&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Size of the on-disk representation of this table in pages&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_relid&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Relation oid of this table&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_seq_scan&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of sequential scans initiated on this table&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_seq_tup_read&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of live rows fetched by sequential scans&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_size_bytes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total bytes of this table (including toast, index, toast index)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_size_indexsize&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Bytes of all related indexes of this table&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_size_relsize&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Bytes of this table itself (main, vm, fsm)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_size_toastsize&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Bytes of toast tables of this table&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_tbl_scan&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of scans initiated on this table&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_tup_read&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of live rows fetched by scans&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_tuples&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;All txid before this have been frozen on this table&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_table_vacuum_count&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;relname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of times this table has been manually vacuumed (not counting VACUUM FULL)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_timestamp&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;database current timestamp&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_up&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;last scrape was able to connect to the server: 1 for yes, 0 for no&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_uptime&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;seconds since postmaster start&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_version&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;server version number&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_wait_count&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;event&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Count of WaitEvent on target database&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_wal_buffers_full&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of times WAL data was written to disk because WAL buffers became full&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_wal_bytes&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total amount of WAL generated in bytes&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_wal_fpi&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total number of WAL full page images generated&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_wal_records&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total number of WAL records generated&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_wal_reset_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;When statistics were last reset&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_wal_sync&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of times WAL files were synced to disk via issue_xlog_fsync request&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_wal_sync_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total amount of time spent syncing WAL files to disk via issue_xlog_fsync request, in seconds&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_wal_write&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of times WAL buffers were written out to disk via XLogWrite request.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_wal_write_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total amount of time spent writing WAL buffers to disk via XLogWrite request in seconds&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_write_lsn&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;primary only, location of current wal writing&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_xact_xmax&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;First as-yet-unassigned txid. txid &amp;gt;= this are invisible.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_xact_xmin&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Earliest txid that is still active&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_xact_xnum&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Current active transaction count&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer:cls:load1&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer:cls:load15&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer:cls:load5&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer:db:conn_usage&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;host&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;real_datname&lt;/code&gt;, &lt;code&gt;port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer:db:conn_usage_reserve&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;host&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;real_datname&lt;/code&gt;, &lt;code&gt;port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer:db:pool_current_conn&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;host&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;real_datname&lt;/code&gt;, &lt;code&gt;port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer:db:pool_disabled&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;host&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;real_datname&lt;/code&gt;, &lt;code&gt;port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer:db:pool_max_conn&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;host&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;real_datname&lt;/code&gt;, &lt;code&gt;port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer:db:pool_paused&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;host&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;real_datname&lt;/code&gt;, &lt;code&gt;port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer:db:pool_reserve_size&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;host&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;real_datname&lt;/code&gt;, &lt;code&gt;port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer:db:pool_size&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;host&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;real_datname&lt;/code&gt;, &lt;code&gt;port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer:ins:free_clients&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer:ins:free_servers&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer:ins:load1&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer:ins:load15&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer:ins:load5&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer:ins:login_clients&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer:ins:pool_databases&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer:ins:pool_users&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer:ins:pools&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer:ins:used_clients&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_database_current_connections&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;host&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;real_datname&lt;/code&gt;, &lt;code&gt;port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Current number of connections for this database&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_database_disabled&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;host&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;real_datname&lt;/code&gt;, &lt;code&gt;port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;True(1) if this database is currently disabled, else 0&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_database_max_connections&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;host&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;real_datname&lt;/code&gt;, &lt;code&gt;port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Maximum number of allowed connections for this database&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_database_min_pool_size&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;host&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;real_datname&lt;/code&gt;, &lt;code&gt;port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Minimum number of server connections&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_database_paused&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;host&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;real_datname&lt;/code&gt;, &lt;code&gt;port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;True(1) if this database is currently paused, else 0&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_database_pool_size&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;host&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;real_datname&lt;/code&gt;, &lt;code&gt;port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Maximum number of server connections&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_database_reserve_pool&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;host&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;real_datname&lt;/code&gt;, &lt;code&gt;port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Maximum number of additional connections for this database&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_exporter_agent_up&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_exporter_last_scrape_time&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;seconds exporter spending on scrapping&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_exporter_query_cache_ttl&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;times to live of query cache&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_exporter_query_scrape_duration&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;seconds query spending on scrapping&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_exporter_query_scrape_error_count&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;times the query failed&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_exporter_query_scrape_hit_count&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;numbers been scrapped from this query&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_exporter_query_scrape_metric_count&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;numbers of metrics been scrapped from this query&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_exporter_query_scrape_total_count&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;times exporter server was scraped for metrics&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_exporter_scrape_duration&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;seconds exporter spending on scrapping&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_exporter_scrape_error_count&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;times exporter was scraped for metrics and failed&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_exporter_scrape_total_count&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;times exporter was scraped for metrics&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_exporter_server_scrape_duration&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;seconds exporter server spending on scrapping&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_exporter_server_scrape_total_count&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;times exporter server was scraped for metrics&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_exporter_server_scrape_total_seconds&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;seconds exporter server spending on scrapping&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_exporter_up&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;always be 1 if your could retrieve metrics&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_exporter_uptime&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;seconds since exporter primary server inited&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_in_recovery&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;server is in recovery mode? 1 for yes 0 for no&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_list_items&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;list&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of corresponding pgbouncer object&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_pool_active_cancel_clients&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;user&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;pool_mode&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Client connections that have forwarded query cancellations to the server and are waiting for the server response.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_pool_active_cancel_servers&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;user&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;pool_mode&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Server connections that are currently forwarding a cancel request&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_pool_active_clients&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;user&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;pool_mode&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Client connections that are linked to server connection and can process queries&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_pool_active_servers&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;user&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;pool_mode&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Server connections that are linked to a client&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_pool_cancel_clients&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;user&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;pool_mode&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Client connections that have not forwarded query cancellations to the server yet.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_pool_cancel_servers&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;user&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;pool_mode&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;cancel requests have completed that were sent to cancel a query on this server&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_pool_idle_servers&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;user&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;pool_mode&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Server connections that are unused and immediately usable for client queries&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_pool_login_servers&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;user&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;pool_mode&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Server connections currently in the process of logging in&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_pool_maxwait&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;user&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;pool_mode&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;How long the first(oldest) client in the queue has waited, in seconds, key metric&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_pool_maxwait_us&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;user&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;pool_mode&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Microsecond part of the maximum waiting time.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_pool_tested_servers&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;user&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;pool_mode&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Server connections that are currently running reset or check query&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_pool_used_servers&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;user&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;pool_mode&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Server connections that have been idle for more than server_check_delay (means have to run check query)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_pool_waiting_clients&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;user&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, &lt;code&gt;pool_mode&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Client connections that have sent queries but have not yet got a server connection&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_stat_avg_query_count&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Average queries per second in last stat period&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_stat_avg_query_time&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Average query duration, in seconds&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_stat_avg_recv&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Average received (from clients) bytes per second&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_stat_avg_sent&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Average sent (to clients) bytes per second&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_stat_avg_wait_time&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time spent by clients waiting for a server, in seconds (average per second).&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_stat_avg_xact_count&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Average transactions per second in last stat period&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_stat_avg_xact_time&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Average transaction duration, in seconds&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_stat_total_query_count&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total number of SQL queries pooled by pgbouncer&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_stat_total_query_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total number of seconds spent when executing queries&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_stat_total_received&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total volume in bytes of network traffic received by pgbouncer&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_stat_total_sent&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total volume in bytes of network traffic sent by pgbouncer&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_stat_total_wait_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Time spent by clients waiting for a server, in seconds&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_stat_total_xact_count&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total number of SQL transactions pooled by pgbouncer&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_stat_total_xact_time&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;datname&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total number of seconds spent when in a transaction&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_up&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;last scrape was able to connect to the server: 1 for yes, 0 for no&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgbouncer_version&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;server version number&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;process_cpu_seconds_total&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total user and system CPU time spent in seconds.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;process_max_fds&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Maximum number of open file descriptors.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;process_open_fds&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of open file descriptors.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;process_resident_memory_bytes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Resident memory size in bytes.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;process_start_time_seconds&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Start time of the process since unix epoch in seconds.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;process_virtual_memory_bytes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Virtual memory size in bytes.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;process_virtual_memory_max_bytes&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Maximum amount of virtual memory available in bytes.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;promhttp_metric_handler_requests_in_flight&lt;/td&gt;&#xA;      &lt;td&gt;gauge&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Current number of scrapes being served.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;promhttp_metric_handler_requests_total&lt;/td&gt;&#xA;      &lt;td&gt;counter&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;code&lt;/code&gt;, &lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Total number of scrapes by HTTP status code.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;scrape_duration_seconds&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;scrape_samples_post_metric_relabeling&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;scrape_samples_scraped&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;scrape_series_added&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;up&lt;/td&gt;&#xA;      &lt;td&gt;Unknown&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;N/A&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>Accidental Deletion</title>
        <link>https://pgsty.pro/docs/pgsql/tutorial/drop/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/tutorial/drop/</guid>
        <description>&lt;h2 id=&#34;accidental-data-deletion&#34;&gt;Accidental Data Deletion&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;If it&amp;rsquo;s a small-scale &lt;code&gt;DELETE&lt;/code&gt; misoperation, you can consider using the &lt;a href=&#34;https://pigsty.io/ext/e/pg_surgery&#34;&gt;&lt;code&gt;pg_surgery&lt;/code&gt;&lt;/a&gt; or &lt;a href=&#34;https://pigsty.io/ext/e/pg_dirtyread&#34;&gt;&lt;code&gt;pg_dirtyread&lt;/code&gt;&lt;/a&gt; extension for in-place surgical recovery.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-23c560be-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;5&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-23c560be-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Immediately disable Auto Vacuum on this table and abort Auto Vacuum worker processes for this table&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;ALTER&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TABLE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;public&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;some_table&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SET&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;autovacuum_enabled&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;off&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;toast&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;autovacuum_enabled&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;off&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;EXTENSION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pg_dirtyread&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pg_dirtyread&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;tablename&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;AS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;col1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;type1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;col2&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;type2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;...);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;If the deleted data has already been reclaimed by VACUUM, then use the general accidental deletion recovery process.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Playbook</title>
        <link>https://pgsty.pro/docs/pgsql/playbook/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/playbook/</guid>
        <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Pigsty provides a series of playbooks for cluster provisioning, scaling, user/database management, monitoring, backup &amp;amp; recovery, and migration.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Playbook&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Function&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/playbook/#pgsqlyml&#34;&gt;&lt;code&gt;pgsql.yml&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Initialize PostgreSQL cluster or add new replicas&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/playbook/#pgsql-rmyml&#34;&gt;&lt;code&gt;pgsql-rm.yml&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Remove PostgreSQL cluster or specific instances&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/playbook/#pgsql-useryml&#34;&gt;&lt;code&gt;pgsql-user.yml&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Add new business user to existing PostgreSQL cluster&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/playbook/#pgsql-dbyml&#34;&gt;&lt;code&gt;pgsql-db.yml&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Add new business database to existing PostgreSQL cluster&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/playbook/#pgsql-monitoryml&#34;&gt;&lt;code&gt;pgsql-monitor.yml&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Monitor remote PostgreSQL instances&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/playbook/#pgsql-migrationyml&#34;&gt;&lt;code&gt;pgsql-migration.yml&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Generate migration manual and scripts for existing PostgreSQL&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/playbook/#pgsql-pitryml&#34;&gt;&lt;code&gt;pgsql-pitr.yml&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Perform Point-In-Time Recovery (PITR)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;safeguard&#34;&gt;Safeguard&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Be &lt;strong&gt;extra cautious&lt;/strong&gt; when using &lt;a href=&#34;https://pgsty.pro/docs/pgsql/&#34;&gt;&lt;code&gt;PGSQL&lt;/code&gt;&lt;/a&gt; playbooks. Misuse of &lt;a href=&#34;https://pgsty.pro/docs/pgsql/playbook/#pgsqlyml&#34;&gt;&lt;code&gt;pgsql.yml&lt;/code&gt;&lt;/a&gt; and &lt;a href=&#34;https://pgsty.pro/docs/pgsql/playbook/#pgsql-rmyml&#34;&gt;&lt;code&gt;pgsql-rm.yml&lt;/code&gt;&lt;/a&gt; can lead to accidental database deletion!&lt;/p&gt;</description>
      </item>
    <item>
        <title>Extensions</title>
        <link>https://pgsty.pro/docs/pgsql/ext/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/ext/</guid>
        <description>&lt;p&gt;Pigsty provides &lt;a href=&#34;https://pigsty.io/ext/list&#34;&gt;&lt;strong&gt;575 packaged extensions&lt;/strong&gt;&lt;/a&gt;, covering 16 major categories including time-series, geospatial, vector, full-text search, analytics, and feature enhancements, ready to use out-of-the-box.&lt;/p&gt;&#xA;&lt;p&gt;Using extensions in Pigsty involves four core steps: &lt;a href=&#34;https://pgsty.pro/docs/pgsql/ext/download/&#34;&gt;&lt;strong&gt;Download&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/pgsql/ext/install/&#34;&gt;&lt;strong&gt;Install&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&#34;https://pgsty.pro/docs/pgsql/ext/config/&#34;&gt;&lt;strong&gt;Config/Load&lt;/strong&gt;&lt;/a&gt;, and &lt;a href=&#34;https://pgsty.pro/docs/pgsql/ext/create/&#34;&gt;&lt;strong&gt;Create&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-089252d4-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;yaml&#34; data-td-line-count=&#34;9&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-089252d4-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;pg-meta&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;hosts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;{&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;10.10.10.10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;{&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_seq&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;1, pg_role&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;primary } }&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;vars&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_cluster&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;pg-meta&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_databases&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;meta&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;extensions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;postgis, timescaledb, vector ]  &lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Create: Create extensions in database&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_libs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;timescaledb, pg_stat_statements, auto_explain&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Config: Preload extension libraries&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_extensions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;postgis, timescaledb, pgvector ] &lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Install: Install extension packages&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://pgsty.pro/img/pigsty/ecosystem.png&#34; alt=&#34;Pigsty PostgreSQL extension ecosystem&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;</description>
      </item>
    <item>
        <title>HA Drill: Handling 2-of-3 Node Failure</title>
        <link>https://pgsty.pro/docs/pgsql/tutorial/drill/</link>
        <pubDate>Sat, 11 Jan 2025 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/tutorial/drill/</guid>
        <description>&lt;p&gt;If a classic 3-node HA deployment experiences simultaneous failure of two nodes (majority), the system typically cannot complete automatic failover and requires manual intervention.&lt;/p&gt;&#xA;&lt;p&gt;First, assess the status of the other two servers. If they can be brought up quickly, prioritize recovering those two servers. Otherwise, enter the &lt;strong&gt;Emergency Recovery Procedure&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;The Emergency Recovery Procedure assumes your admin node has failed&lt;/strong&gt; and only a single regular database node survives. In this case, the fastest recovery process is:&lt;/p&gt;</description>
      </item>
    <item>
        <title>PostgreSQL</title>
        <link>https://pgsty.pro/docs/pgsql/kernel/postgres/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/kernel/postgres/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://www.postgresql.org/&#34;&gt;PostgreSQL&lt;/a&gt; is the world&amp;rsquo;s most advanced and popular open-source database.&lt;/p&gt;&#xA;&lt;p&gt;Pigsty installs PostgreSQL 18 by default, supports PostgreSQL 14 ~ 18, and provides 575 PG extensions.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;quick-start&#34;&gt;Quick Start&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://pgsty.pro/docs/setup/install/&#34;&gt;&lt;strong&gt;Install&lt;/strong&gt;&lt;/a&gt; Pigsty using the &lt;a href=&#34;https://github.com/pgsty/pigsty/blob/main/conf/pgsql.yml&#34;&gt;&lt;code&gt;pgsql&lt;/code&gt;&lt;/a&gt; configuration template.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-84a1449b-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-84a1449b-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./configure -c pgsql     &lt;span class=&#34;c1&#34;&gt;# Use postgres kernel&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./deploy.yml             &lt;span class=&#34;c1&#34;&gt;# Deploy the Pigsty core chain with native PostgreSQL&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Most &lt;a href=&#34;https://pgsty.pro/docs/conf/&#34;&gt;configuration templates&lt;/a&gt; use PostgreSQL kernel by default, for example:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/pigsty/blob/main/conf/meta.yml&#34;&gt;&lt;code&gt;meta&lt;/code&gt;&lt;/a&gt; : &lt;strong&gt;Default&lt;/strong&gt;, postgres with core extensions (vector, postgis, timescale)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/pigsty/blob/main/conf/rich.yml&#34;&gt;&lt;code&gt;rich&lt;/code&gt;&lt;/a&gt; : postgres with all extensions installed&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/pigsty/blob/main/conf/slim.yml&#34;&gt;&lt;code&gt;slim&lt;/code&gt;&lt;/a&gt; : postgres only, no monitoring infrastructure&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/pigsty/blob/main/conf/ha/full.yml&#34;&gt;&lt;code&gt;ha/full&lt;/code&gt;&lt;/a&gt; : 4-node sandbox for HA demonstration&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/pigsty/blob/main/conf/pgsql.yml&#34;&gt;&lt;code&gt;pgsql&lt;/code&gt;&lt;/a&gt; : minimal postgres kernel configuration example&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;configuration&#34;&gt;Configuration&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Vanilla PostgreSQL kernel requires no special adjustments:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Bind a L2 VIP to PostgreSQL Primary with VIP-Manager</title>
        <link>https://pgsty.pro/docs/pgsql/tutorial/pg-vip/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/tutorial/pg-vip/</guid>
        <description>&lt;p&gt;You can define an &lt;strong&gt;OPTIONAL&lt;/strong&gt; L2 VIP on a PostgreSQL cluster, provided that all nodes in the cluster are in the same L2 network.&lt;/p&gt;&#xA;&lt;p&gt;This VIP works on Master-Backup mode and always points to the node where the primary instance of the database cluster is located.&lt;/p&gt;&#xA;&lt;p&gt;This VIP is managed by the &lt;a href=&#34;https://github.com/cybertec-postgresql/vip-manager&#34;&gt;VIP-Manager&lt;/a&gt;, which reads the Leader Key written by Patroni from DCS (etcd) to determine whether it is the master.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Deploy HA Citus Cluster</title>
        <link>https://pgsty.pro/docs/pgsql/tutorial/citus/</link>
        <pubDate>Sat, 11 Jan 2025 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/tutorial/citus/</guid>
        <description>&lt;p&gt;Citus is a PostgreSQL extension that transforms PostgreSQL into a distributed database, enabling horizontal scaling across multiple nodes to handle large amounts of data and queries.&lt;/p&gt;&#xA;&lt;p&gt;Patroni v3.0+ provides native high-availability support for Citus, simplifying the setup of Citus clusters. Pigsty also provides native support for this.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.citusdata.com/en/stable/get_started/what_is_citus.html&#34;&gt;What is Citus&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://patroni.readthedocs.io/en/latest/citus.html&#34;&gt;Patroni Citus Support&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;td-callout td-callout--note&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-info&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Note&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;Citus 13.x supports PostgreSQL 18, 17, 16, 15, and 14. The Pigsty extension repository provides Citus ARM64 packages.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Babelfish</title>
        <link>https://pgsty.pro/docs/pgsql/kernel/babelfish/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/kernel/babelfish/</guid>
        <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://babelfishpg.org/&#34;&gt;Babelfish&lt;/a&gt; is a PostgreSQL-based SQL Server compatibility layer, open-sourced by AWS.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Pigsty lets you deploy Babelfish in &lt;code&gt;mssql&lt;/code&gt; mode and provide, on top of PostgreSQL:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;SQL Server wire protocol compatibility (TDS, &lt;code&gt;1433&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;li&gt;T-SQL compatibility&lt;/li&gt;&#xA;&lt;li&gt;Unified integration with Pigsty capabilities (HA, backup, monitoring, IaC)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In Pigsty v4, Babelfish supports &lt;strong&gt;PostgreSQL 17/18&lt;/strong&gt;. The default template uses &lt;code&gt;pg_version: 17&lt;/code&gt;, and Babelfish is part of Pigsty&amp;rsquo;s standard delivery path with support for all Linux platforms.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Percona</title>
        <link>https://pgsty.pro/docs/pgsql/kernel/percona/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/kernel/percona/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://www.percona.com/postgresql/software/postgresql-distribution&#34;&gt;Percona Postgres&lt;/a&gt; is a patched Postgres kernel with &lt;a href=&#34;https://docs.percona.com/pg-tde/index.html&#34;&gt;&lt;code&gt;pg_tde&lt;/code&gt;&lt;/a&gt; (Transparent Data Encryption) extension.&lt;/p&gt;&#xA;&lt;p&gt;Starting with v4.4.0, Pigsty packages Percona PostgreSQL under the private &lt;code&gt;/usr/pgtde-$v&lt;/code&gt;; v4.5.0 keeps this layout&#xA;prefix (&lt;code&gt;/usr/pgtde-18&lt;/code&gt; for PostgreSQL 18). The &lt;code&gt;pgtde&lt;/code&gt; package alias installs&#xA;both the kernel package and its contrib package, including &lt;code&gt;pg_tde&lt;/code&gt;, PostGIS,&#xA;pgvector, wal2json, pg_repack, pgaudit, and pg_stat_monitor.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://andreas.scherbaum.la/post/2025-06-30_performance-test-for-percona-transparent-data-encryption-tde/&#34;&gt;Performance Test for Percona Transparent Data Encryption (TDE)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;quick-start&#34;&gt;Quick Start&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Use Pigsty&amp;rsquo;s &lt;a href=&#34;https://pgsty.pro/docs/setup/install/&#34;&gt;&lt;strong&gt;standard installation process&lt;/strong&gt;&lt;/a&gt; with the &lt;a href=&#34;https://github.com/pgsty/pigsty/blob/main/conf/pgtde.yml&#34;&gt;&lt;code&gt;pgtde&lt;/code&gt;&lt;/a&gt; configuration template.&lt;/p&gt;</description>
      </item>
    <item>
        <title>openHalo</title>
        <link>https://pgsty.pro/docs/pgsql/kernel/openhalo/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/kernel/openhalo/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://www.openhalo.org/&#34;&gt;OpenHalo&lt;/a&gt; is an open-source PostgreSQL kernel that provides MySQL wire-protocol compatibility.&lt;/p&gt;&#xA;&lt;p&gt;openHalo is based on PostgreSQL 14.18 and provides wire-level compatibility with MySQL 5.7.32-log / 8.0. Pigsty delivers it through &lt;code&gt;pg_mode: mysql&lt;/code&gt; and the &lt;code&gt;openhalo&lt;/code&gt; package alias.&lt;/p&gt;&#xA;&lt;p&gt;Pigsty supports OpenHalo deployment on all supported Linux platforms.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;RPM build spec: &lt;a href=&#34;https://github.com/pgsty/rpm/blob/main/rpmbuild/SPECS/openhalodb.spec&#34;&gt;github.com/pgsty/rpm/rpmbuild/specs/openhalodb.spec&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;DEB build spec: &lt;a href=&#34;https://github.com/pgsty/deb/tree/main/debbuild/openhalodb&#34;&gt;github.com/pgsty/deb/debbuild/openhalodb&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;quick-start&#34;&gt;Quick Start&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Use Pigsty&amp;rsquo;s &lt;a href=&#34;https://pgsty.pro/docs/setup/install/&#34;&gt;&lt;strong&gt;standard installation flow&lt;/strong&gt;&lt;/a&gt; with the &lt;a href=&#34;https://pgsty.pro/docs/conf/mysql/&#34;&gt;&lt;code&gt;mysql&lt;/code&gt;&lt;/a&gt; template.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-7cb98979-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-7cb98979-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://repo.pigsty.io/get &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/pigsty&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./configure -c mysql    &lt;span class=&#34;c1&#34;&gt;# Use MySQL (openHalo) template&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./deploy.yml            &lt;span class=&#34;c1&#34;&gt;# Install (change passwords in pigsty.yml before production use)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;cluster-config&#34;&gt;Cluster Config&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-7cb98979-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;yaml&#34; data-td-line-count=&#34;19&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-7cb98979-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;pg-meta&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;hosts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;10.10.10.10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;{&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_seq&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;1, pg_role&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;primary }&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;vars&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_cluster&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;pg-meta&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_users&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- {&lt;span class=&#34;nt&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;dbuser_meta ,password&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;DBUser.Meta   ,pgbouncer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;true ,roles&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;[dbrole_admin]    ,comment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;pigsty admin user }&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- {&lt;span class=&#34;nt&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;dbuser_view ,password&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;DBUser.Viewer ,pgbouncer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;true ,roles&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;[dbrole_readonly] ,comment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;read-only viewer for meta database }&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_databases&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- {&lt;span class=&#34;nt&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;postgres, extensions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;aux_mysql ]}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# mysql-compatible database&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- {&lt;span class=&#34;nt&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;meta ,baseline&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;cmdb.sql ,comment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pigsty meta database ,schemas&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;l&#34;&gt;pigsty]}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_hba_rules&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- {&lt;span class=&#34;nt&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;dbuser_view , db&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;all ,addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;infra ,auth&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pwd ,title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;allow grafana dashboard access cmdb from infra nodes&amp;#39;&lt;/span&gt;}&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_crontab&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;00 01 * * * /pg/bin/pg-backup full&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# full backup at 1 AM daily&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# OpenHalo specific settings&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_mode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;mysql&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;14&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pg_packages&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;openhalo, pgsql-common ]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;OpenHalo provides a dedicated extension, &lt;code&gt;aux_mysql&lt;/code&gt;, which includes functions and types needed for MySQL compatibility. Enable it in the &lt;code&gt;postgres&lt;/code&gt; database to get full compatibility behavior.&lt;/p&gt;</description>
      </item>
    <item>
        <title>OrioleDB</title>
        <link>https://pgsty.pro/docs/pgsql/kernel/orioledb/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/kernel/orioledb/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://orioledb.com/&#34;&gt;OrioleDB&lt;/a&gt; is a PostgreSQL storage engine extension that claims to provide 4x OLTP performance, no xid wraparound and table bloat issues, and &amp;ldquo;cloud-native&amp;rdquo; (data stored in S3) capabilities.&lt;/p&gt;&#xA;&lt;p&gt;Pigsty ships OrioleDB as a patched PostgreSQL kernel plus the &lt;a href=&#34;https://github.com/orioledb/orioledb&#34;&gt;OrioleDB extension&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;You can run OrioleDB as an RDS using Pigsty. Current packages support PostgreSQL 16, 17, and 18 on supported Linux platforms. &lt;code&gt;pg_mode&lt;/code&gt; still uses &lt;code&gt;oriole&lt;/code&gt; for the &lt;code&gt;/usr/oriole-$v&lt;/code&gt; install path, while the &lt;code&gt;orioledb&lt;/code&gt; package alias resolves to versioned kernel packages such as &lt;code&gt;orioledb-16&lt;/code&gt;, &lt;code&gt;orioledb-17&lt;/code&gt;, and &lt;code&gt;orioledb-18&lt;/code&gt;.&#xA;The current Pigsty package line is OrioleDB 1.8 beta16.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Cloudberry</title>
        <link>https://pgsty.pro/docs/pgsql/kernel/cloudberry/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/kernel/cloudberry/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://cloudberry.apache.org/&#34;&gt;Cloudberry&lt;/a&gt; is an open-source MPP data warehouse kernel derived from the Greenplum ecosystem, suitable for large-scale parallel analytics workloads.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;In Pigsty, Cloudberry uses &lt;code&gt;gpsql&lt;/code&gt; mode and shares the same identity model, monitoring logic, and directory conventions as Greenplum / MatrixDB.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Kernel package: &lt;code&gt;cloudberry&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Mode identifier: &lt;code&gt;pg_mode: gpsql&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Role flag: &lt;code&gt;gp_role: master | segment&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Current repo version: &lt;code&gt;Cloudberry 2.1.0&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Current main package version: DEB &lt;code&gt;2.1.0-2PIGSTY&lt;/code&gt;, RPM &lt;code&gt;2.1.0-3PIGSTY&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Default binary directory: &lt;code&gt;/usr/cloudberry&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The important boundary is this: Pigsty currently focuses on package delivery, node management, monitoring onboarding, access control, and configuration orchestration for Cloudberry.&#xA;For MPP cluster initialization, scale-out, rebalance, and other upstream-specific operational actions, you should still use the official Cloudberry toolchain.&lt;/p&gt;</description>
      </item>
    <item>
        <title>AgensGraph</title>
        <link>https://pgsty.pro/docs/pgsql/kernel/agensgraph/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/kernel/agensgraph/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://github.com/skaiworldwide-oss/agensgraph&#34;&gt;AgensGraph&lt;/a&gt; is a property graph database kernel built on PostgreSQL, supporting openCypher queries and mixed Cypher/SQL workflows.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Pigsty integrates AgensGraph through &lt;code&gt;pg_mode: agens&lt;/code&gt; while preserving most of the standard PostgreSQL operational model.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Kernel package: &lt;code&gt;agensgraph&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Mode identifier: &lt;code&gt;pg_mode: agens&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Current template version: &lt;code&gt;AgensGraph 2.17.0&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Current version string: &lt;code&gt;PostgreSQL 17.10 (AgensGraph 2.17.0)&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Built-in template: &lt;code&gt;agens&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Typical use cases: graph relationship analysis, path queries, knowledge graphs, and risk/association analysis layered onto relational data&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;From the client side, AgensGraph still speaks the PostgreSQL wire protocol, so normal PostgreSQL clients, drivers, and connection pools can connect directly.&#xA;The real difference from vanilla PostgreSQL is not how you connect, but that the database now contains graph objects, Cypher syntax, and the &lt;code&gt;agtype&lt;/code&gt; data type.&lt;/p&gt;</description>
      </item>
    <item>
        <title>pgEdge</title>
        <link>https://pgsty.pro/docs/pgsql/kernel/pgedge/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/kernel/pgedge/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://www.pgedge.com/&#34;&gt;&lt;strong&gt;pgEdge&lt;/strong&gt;&lt;/a&gt; is a distributed PostgreSQL distribution for edge scenarios, built on &lt;a href=&#34;https://docs.pgedge.com/spock-v5&#34;&gt;&lt;strong&gt;Spock&lt;/strong&gt;&lt;/a&gt; multi-master logical replication.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Pigsty integrates pgEdge through &lt;code&gt;pg_mode: pgedge&lt;/code&gt; and delivers it through the standard PostgreSQL cluster workflow:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;pgedge&lt;/code&gt;: a PG15, PG16, PG17, and PG18 compatible kernel; the template defaults to PG18&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pigsty.io/ext/e/spock/&#34;&gt;&lt;code&gt;spock&lt;/code&gt;&lt;/a&gt;: Active-active multi-master logical replication&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pigsty.io/ext/e/snowflake/&#34;&gt;&lt;code&gt;snowflake&lt;/code&gt;&lt;/a&gt;: Distributed unique sequences&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pigsty.io/ext/e/lolor/&#34;&gt;&lt;code&gt;lolor&lt;/code&gt;&lt;/a&gt;: Large object logical replication compatibility layer&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The current Pigsty repository ships versioned pgEdge kernel packages for &lt;code&gt;pgedge-15&lt;/code&gt;, &lt;code&gt;pgedge-16&lt;/code&gt;, &lt;code&gt;pgedge-17&lt;/code&gt;, and &lt;code&gt;pgedge-18&lt;/code&gt;; the template defaults to &lt;code&gt;pg_version: 18&lt;/code&gt;. The &lt;code&gt;spock&lt;/code&gt;, &lt;code&gt;snowflake&lt;/code&gt;, and &lt;code&gt;lolor&lt;/code&gt; control files, SQL files, and shared libraries are bundled in the &lt;code&gt;pgedge-$v&lt;/code&gt; kernel package, so they are no longer listed as separate &lt;code&gt;pg_extensions&lt;/code&gt; packages to install.&#xA;From the client side, pgEdge is still PostgreSQL wire compatible, so &lt;code&gt;psql&lt;/code&gt;, JDBC/ODBC, DBeaver, and similar tools work as usual.&lt;/p&gt;</description>
      </item>
    <item>
        <title>DocumentDB</title>
        <link>https://pgsty.pro/docs/pgsql/kernel/documentdb/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/kernel/documentdb/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://pigsty.io/ext/e/documentdb&#34;&gt;&lt;strong&gt;DocumentDB&lt;/strong&gt;&lt;/a&gt; is an open-source PostgreSQL document database extension maintained by Microsoft. &lt;a href=&#34;https://github.com/FerretDB/FerretDB&#34;&gt;&lt;strong&gt;FerretDB&lt;/strong&gt;&lt;/a&gt; is a stateless protocol translation proxy built on top of it.&#xA;Together, they expose a MongoDB wire-compatible endpoint from a standard PostgreSQL kernel: applications using MongoDB drivers can connect directly, while requests are translated into PostgreSQL operations.&lt;/p&gt;&#xA;&lt;p&gt;Unlike other kernel variants, this is not a standalone PostgreSQL fork. The data layer runs native PostgreSQL 16–18 and is managed by the standard &lt;code&gt;PGSQL&lt;/code&gt; module.&#xA;Persistence, transactions, high availability, backup, monitoring, and access control remain PostgreSQL responsibilities; FerretDB is deployed as a Pigsty Docker APP and handles only protocol translation.&lt;/p&gt;</description>
      </item>
    <item>
        <title>PG Kernels</title>
        <link>https://pgsty.pro/docs/pgsql/kernel/</link>
        <pubDate>Sun, 23 Jun 2024 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/kernel/</guid>
        <description>&lt;p&gt;In Pigsty, you can replace the native PostgreSQL kernel with different PostgreSQL &amp;ldquo;flavors&amp;rdquo; to unlock specialized capabilities.&lt;/p&gt;&#xA;&lt;p&gt;Pigsty supports multiple PostgreSQL kernels and compatibility branches so you can get compatibility layers, multi-master replication, graph queries, MPP warehousing, transparent encryption, and more inside one operational framework.&lt;/p&gt;&#xA;&lt;p&gt;One thing to keep in mind is that not every kernel has the same delivery depth in Pigsty:&#xA;PostgreSQL, Citus, Babelfish, IvorySQL, PolarDB, AgensGraph, and pgEdge already have relatively clear templates and configuration paths;&#xA;Cloudberry and Greenplum, by contrast, are more often managed through &lt;code&gt;gpsql&lt;/code&gt; mode, and their MPP initialization plus scale-out operations are still better handled with upstream tooling.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Param Templates</title>
        <link>https://pgsty.pro/docs/pgsql/template/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/template/</guid>
        <description>&lt;p&gt;Pigsty provides four preset Patroni/PostgreSQL config templates optimized for different workloads:&lt;/p&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--full td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;full-width&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Template&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;CPU Cores&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Use Case&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Characteristics&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/template/oltp/&#34;&gt;&lt;strong&gt;&lt;code&gt;/docs/pgsql/template/oltp.yml&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;4-128C&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;OLTP transactions&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;High concurrency, low latency&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/template/olap/&#34;&gt;&lt;strong&gt;&lt;code&gt;/docs/pgsql/template/olap.yml&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;4-128C&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;OLAP analytics&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Large queries, high parallelism&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/template/crit/&#34;&gt;&lt;strong&gt;&lt;code&gt;/docs/pgsql/template/crit.yml&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;4-128C&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Consistency-first&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Consistency-first, detailed auditing&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/template/tiny/&#34;&gt;&lt;strong&gt;&lt;code&gt;/docs/pgsql/template/tiny.yml&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;1-3C&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Tiny instances&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Resource-constrained envs&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Use &lt;a href=&#34;https://pgsty.pro/docs/pgsql/param/#pg_conf&#34;&gt;&lt;strong&gt;&lt;code&gt;pg_conf&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; to select a template; default is &lt;a href=&#34;https://pgsty.pro/docs/pgsql/template/oltp/&#34;&gt;&lt;strong&gt;&lt;code&gt;/docs/pgsql/template/oltp.yml&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;The database tuning template &lt;a href=&#34;https://pgsty.pro/docs/pgsql/param/#pg_conf&#34;&gt;&lt;strong&gt;&lt;code&gt;pg_conf&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; should be paired with the OS tuning template &lt;a href=&#34;https://pgsty.pro/docs/node/param/#node_tune&#34;&gt;&lt;strong&gt;&lt;code&gt;node_tune&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;All four standard templates set &lt;code&gt;wal_level&lt;/code&gt; to &lt;code&gt;logical&lt;/code&gt;. PostgreSQL 18.6 adds the &lt;code&gt;output_plugin_libraries&lt;/code&gt; security allowlist; Pigsty permits the built-in &lt;code&gt;pgoutput&lt;/code&gt; and &lt;code&gt;test_decoding&lt;/code&gt; plugins plus &lt;code&gt;wal2json&lt;/code&gt;, which is installed by the default &lt;code&gt;pgsql-main&lt;/code&gt; package set. To use another logical-decoding output plugin, review its code and privilege boundary, then add its exact library name through &lt;a href=&#34;https://pgsty.pro/docs/pgsql/param/#pg_parameters&#34;&gt;&lt;code&gt;pg_parameters&lt;/code&gt;&lt;/a&gt;. Patroni filters the template setting on older PostgreSQL versions that do not support it.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Quick Start</title>
        <link>https://pgsty.pro/docs/pgsql/ext/start/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/ext/start/</guid>
        <description>&lt;p&gt;Using extensions in Pigsty requires four steps: &lt;strong&gt;Download&lt;/strong&gt;, &lt;strong&gt;Install&lt;/strong&gt;, &lt;strong&gt;Config&lt;/strong&gt;, and &lt;strong&gt;Create&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Download&lt;/strong&gt;: Download extension packages to the local repository (the default local repository only guarantees the base kernel and &lt;code&gt;pgsql-main&lt;/code&gt; package set)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Install&lt;/strong&gt;: Install extension packages on cluster nodes&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Config&lt;/strong&gt;: Some extensions need to be preloaded or configured with parameters&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Create&lt;/strong&gt;: Execute &lt;code&gt;CREATE EXTENSION&lt;/code&gt; in the database to create the extension&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;declarative-configuration&#34;&gt;Declarative Configuration&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Declare extensions in the Pigsty configuration manifest, and they will be automatically installed and created during cluster initialization:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Introduction</title>
        <link>https://pgsty.pro/docs/pgsql/ext/intro/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/ext/intro/</guid>
        <description>&lt;p&gt;Extensions are the soul of PostgreSQL. Pigsty includes 575 pre-compiled, out-of-the-box extension plugins, fully unleashing PostgreSQL&amp;rsquo;s potential.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;what-are-extensions&#34;&gt;What are Extensions&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;PostgreSQL extensions are a modular mechanism that allows enhancing database functionality without modifying the core code.&#xA;An extension typically consists of three parts:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Control file&lt;/strong&gt; (&lt;code&gt;.control&lt;/code&gt;): Required, contains extension metadata&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;SQL scripts&lt;/strong&gt; (&lt;code&gt;.sql&lt;/code&gt;): Optional, defines functions, types, operators, and other database objects&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Dynamic library&lt;/strong&gt; (&lt;code&gt;.so&lt;/code&gt;): Optional, provides high-performance functionality implemented in C&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Extensions can add to PostgreSQL: new data types, index methods, functions and operators, foreign data access, procedural languages, performance monitoring, security auditing, and more.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Packages</title>
        <link>https://pgsty.pro/docs/pgsql/ext/pkg/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/ext/pkg/</guid>
        <description>&lt;p&gt;Pigsty uses a &lt;strong&gt;package alias&lt;/strong&gt; mechanism to simplify extension installation and management.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;package-alias-mechanism&#34;&gt;Package Alias Mechanism&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Managing extensions involves multiple layers of name mapping:&lt;/p&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Layer&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Example &lt;code&gt;pgvector&lt;/code&gt;&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Example &lt;code&gt;postgis&lt;/code&gt;&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Extension Name&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;vector&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;postgis&lt;/code&gt;, &lt;code&gt;postgis_topology&lt;/code&gt;, &amp;hellip;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Package Alias&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pgvector&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;postgis&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;RPM Package Name&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pgvector_18&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;postgis36_18*&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;DEB Package Name&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;postgresql-18-pgvector&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;postgresql-18-postgis-3*&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Pigsty provides a &lt;strong&gt;package alias&lt;/strong&gt; abstraction layer, so users don&amp;rsquo;t need to worry about specific RPM/DEB package names:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Download</title>
        <link>https://pgsty.pro/docs/pgsql/ext/download/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/ext/download/</guid>
        <description>&lt;p&gt;Before installing extensions, ensure that extension packages are downloaded to the local repository or available from upstream.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;default-behavior&#34;&gt;Default Behavior&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Pigsty downloads the base PostgreSQL 18 kernel packages to the local software repository by default. The default extra download set is &lt;code&gt;repo_extra_packages_default: [ pgsql-main ]&lt;/code&gt;, which includes the PostgreSQL kernel, client, procedural languages, and basic extension packages such as &lt;code&gt;pg_repack&lt;/code&gt;, &lt;code&gt;wal2json&lt;/code&gt;, and &lt;code&gt;pgvector&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;If you need other extensions from the 575-extension catalog, explicitly add them to &lt;a href=&#34;https://pgsty.pro/docs/infra/param/#repo_extra_packages&#34;&gt;&lt;code&gt;repo_extra_packages&lt;/code&gt;&lt;/a&gt;. Pigsty does not download every extension to the local repository by default.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Install</title>
        <link>https://pgsty.pro/docs/pgsql/ext/install/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/ext/install/</guid>
        <description>&lt;p&gt;Pigsty uses the operating system&amp;rsquo;s package manager (yum/apt) to install extension packages.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;related-parameters&#34;&gt;Related Parameters&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Two parameters are used to specify extensions to install:&lt;/p&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Parameter&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Purpose&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Default Behavior&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/param/#pg_packages&#34;&gt;&lt;code&gt;pg_packages&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Global common packages&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Ensure present (no upgrade)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/pgsql/param/#pg_extensions&#34;&gt;&lt;code&gt;pg_extensions&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Cluster-specific extensions&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Install latest version&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;&lt;code&gt;pg_packages&lt;/code&gt; is typically used to specify base components needed by all clusters (PostgreSQL kernel, Patroni, pgBouncer, etc.) and essential extensions.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;pg_extensions&lt;/code&gt; is used to specify extensions needed by specific clusters.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Config</title>
        <link>https://pgsty.pro/docs/pgsql/ext/config/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/ext/config/</guid>
        <description>&lt;p&gt;Some extensions require preloading dynamic libraries or configuring parameters before use. This section describes how to configure extensions.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;preload-extensions&#34;&gt;Preload Extensions&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Most extensions can be enabled directly with &lt;code&gt;CREATE EXTENSION&lt;/code&gt; after installation, but some extensions using PostgreSQL&amp;rsquo;s Hook mechanism require &lt;strong&gt;preloading&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Preloading is specified via the &lt;code&gt;shared_preload_libraries&lt;/code&gt; parameter and requires a &lt;strong&gt;database restart&lt;/strong&gt; to take effect.&lt;/p&gt;&#xA;&lt;h3 id=&#34;extensions-requiring-preload&#34;&gt;Extensions Requiring Preload&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Common extensions that require preloading:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Create</title>
        <link>https://pgsty.pro/docs/pgsql/ext/create/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/ext/create/</guid>
        <description>&lt;p&gt;After installing extension packages, you need to execute &lt;code&gt;CREATE EXTENSION&lt;/code&gt; in the database to use extension features.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;view-available-extensions&#34;&gt;View Available Extensions&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;After installing extension packages, you can view available extensions:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-4d5f3b71-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;8&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-4d5f3b71-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- View all available extensions&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pg_available_extensions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- View specific extension&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pg_available_extensions&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;WHERE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;vector&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- View enabled extensions&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pg_extension&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;create-extensions&#34;&gt;Create Extensions&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Use &lt;code&gt;CREATE EXTENSION&lt;/code&gt; to enable extensions in the database:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Update</title>
        <link>https://pgsty.pro/docs/pgsql/ext/update/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/ext/update/</guid>
        <description>&lt;p&gt;Extension updates involve two levels: &lt;strong&gt;package updates&lt;/strong&gt; (operating system level) and &lt;strong&gt;extension object updates&lt;/strong&gt; (database level).&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;update-packages&#34;&gt;Update Packages&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Use package managers to update extension packages:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-7f55e18a-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;5&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-7f55e18a-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# EL systems&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo yum update pgvector_18*&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Debian/Ubuntu systems&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt upgrade postgresql-18-pgvector&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Batch update using Pigsty:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-7f55e18a-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;5&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-7f55e18a-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Update extension packages for specified cluster&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./pgsql.yml -l pg-meta -t pg_extension -e &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;pg_extensions&amp;#34;:[&amp;#34;pgvector&amp;#34;]}&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Using pig package manager&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig update pgvector&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;update-extension-objects&#34;&gt;Update Extension Objects&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;After package updates, extension objects in the database may need to be synchronized.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Remove</title>
        <link>https://pgsty.pro/docs/pgsql/ext/remove/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/ext/remove/</guid>
        <description>&lt;p&gt;Removing extensions involves two levels: &lt;strong&gt;dropping extension objects&lt;/strong&gt; (database level) and &lt;strong&gt;uninstalling packages&lt;/strong&gt; (operating system level).&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;drop-extension-objects&#34;&gt;Drop Extension Objects&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Use &lt;code&gt;DROP EXTENSION&lt;/code&gt; to remove extensions from the database:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-b69cc747-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;5&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-b69cc747-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Drop extension&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;DROP&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;EXTENSION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pgvector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- If there are dependent objects, cascade delete is required&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;DROP&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;EXTENSION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pgvector&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;CASCADE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Warning&lt;/strong&gt;: &lt;code&gt;CASCADE&lt;/code&gt; will drop all objects that depend on this extension (tables, functions, views, etc.). Use with caution.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Default Extensions</title>
        <link>https://pgsty.pro/docs/pgsql/ext/extension/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/ext/extension/</guid>
        <description>&lt;p&gt;Pigsty installs and enables some core extensions by default when initializing PostgreSQL clusters.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;default-installed-extensions&#34;&gt;Default Installed Extensions&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Extensions installed by default via &lt;a href=&#34;https://pgsty.pro/docs/pgsql/param/#pg_packages&#34;&gt;&lt;code&gt;pg_packages&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Extension&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg_repack&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Handle table bloat online, important maintenance tool&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;wal2json&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Logical decoding outputs JSON format changes, commonly used in CDC scenarios&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pgvector&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Vector data type and indexes, installed with &lt;code&gt;pgsql-main&lt;/code&gt; by default&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;The default value of &lt;a href=&#34;https://pgsty.pro/docs/pgsql/param/#pg_extensions&#34;&gt;&lt;code&gt;pg_extensions&lt;/code&gt;&lt;/a&gt; is an empty array &lt;code&gt;[]&lt;/code&gt;. Declare additional extensions as needed, for example:&lt;/p&gt;</description>
      </item>
    <item>
        <title>FAQ</title>
        <link>https://pgsty.pro/docs/pgsql/faq/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/faq/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;why-cant-my-current-user-use-the-pg-admin-alias&#34;&gt;Why can&amp;rsquo;t my current user use the &lt;code&gt;pg&lt;/code&gt; admin alias?&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Starting from Pigsty v4.0, permissions to manage global Patroni / PostgreSQL clusters using the &lt;code&gt;pg&lt;/code&gt; admin alias have been tightened to the admin group (&lt;code&gt;admin&lt;/code&gt;) on admin nodes.&lt;/p&gt;&#xA;&lt;p&gt;The admin user (&lt;code&gt;dba&lt;/code&gt;) created by the &lt;a href=&#34;https://pgsty.pro/docs/node/playbook/#nodeyml&#34;&gt;&lt;strong&gt;&lt;code&gt;node.yml&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; playbook has this permission by default. If your current user wants this permission, you need to explicitly add them to the &lt;code&gt;admin&lt;/code&gt; group:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Repository</title>
        <link>https://pgsty.pro/docs/pgsql/ext/repo/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/ext/repo/</guid>
        <description>&lt;p&gt;Pigsty provides supplementary extension repositories, offering additional extension packages on top of the PGDG official repository.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;yum-repository&#34;&gt;YUM Repository&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Applicable to EL 8/9/10 and compatible systems (RHEL, Rocky, AlmaLinux, CentOS, etc.).&lt;/p&gt;&#xA;&lt;h3 id=&#34;add-repository&#34;&gt;Add Repository&#xA;&lt;/h3&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-4120da50-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;8&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-4120da50-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Add GPG public key&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://repo.pigsty.io/key &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-pigsty &amp;gt;/dev/null&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Add repository configuration&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://repo.pigsty.io/yum/repo &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee /etc/yum.repos.d/pigsty.repo &amp;gt;/dev/null&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Refresh cache&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo yum makecache&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;china-mainland-mirror&#34;&gt;China Mainland Mirror&#xA;&lt;/h3&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-4120da50-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-4120da50-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://repo.pigsty.cc/key &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-pigsty &amp;gt;/dev/null&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://repo.pigsty.cc/yum/repo &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee /etc/yum.repos.d/pigsty.repo &amp;gt;/dev/null&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;repository-urls&#34;&gt;Repository URLs&#xA;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;International: &lt;a href=&#34;https://repo.pigsty.io/yum/&#34;&gt;https://repo.pigsty.io/yum/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;China: &lt;a href=&#34;https://repo.pigsty.cc/yum/&#34;&gt;https://repo.pigsty.cc/yum/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;apt-repository&#34;&gt;APT Repository&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Applicable to Debian 12/13 and Ubuntu 22.04/24.04/26.04 and compatible systems.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Misc</title>
        <link>https://pgsty.pro/docs/pgsql/misc/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/misc/</guid>
        <description></description>
      </item>
    <item>
        <title>Citus</title>
        <link>https://pgsty.pro/docs/pgsql/kernel/citus/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/kernel/citus/</guid>
        <description>&lt;p&gt;Pigsty natively supports Citus. This is a distributed horizontal scaling extension based on the native PostgreSQL kernel.&lt;/p&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://pgsty.pro/img/pigsty/citus.jpg&#34; alt=&#34;Citus&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;installation&#34;&gt;Installation&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Citus is a PostgreSQL &lt;a href=&#34;https://pgsty.pro/docs/pgsql/ext/&#34;&gt;extension plugin&lt;/a&gt; that can be installed and enabled on a native PostgreSQL cluster following the standard plugin installation process.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-87ea6f73-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-87ea6f73-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./pgsql.yml -t pg_extension -e &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;pg_extensions&amp;#34;:[&amp;#34;citus&amp;#34;]}&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;configuration&#34;&gt;Configuration&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;To define a citus cluster, you need to specify the following parameters:&lt;/p&gt;</description>
      </item>
    <item>
        <title>IvorySQL</title>
        <link>https://pgsty.pro/docs/pgsql/kernel/ivorysql/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/kernel/ivorysql/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://www.ivorysql.org/&#34;&gt;IvorySQL&lt;/a&gt; is an open-source PostgreSQL kernel fork that aims to provide &amp;ldquo;Oracle compatibility&amp;rdquo; based on PG.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The Pigsty PGSQL repository directly provides IvorySQL 5.4 packages compatible with PostgreSQL 18.4 across the currently supported EL, Debian, Ubuntu, and dual-architecture platforms.&#xA;Online installation uses Pigsty&amp;rsquo;s &lt;code&gt;pgsql&lt;/code&gt; repository; the Professional Edition also provides offline delivery for the corresponding platforms.&lt;/p&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://pgsty.pro/img/pigsty/ivory.jpg&#34; alt=&#34;IvorySQL&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;p&gt;Pigsty&amp;rsquo;s &lt;code&gt;ivorysql&lt;/code&gt; package alias points to IvorySQL 5, compatible with PostgreSQL 18. Real package names are mapped by platform variables under &lt;code&gt;roles/node_id/vars/&lt;/code&gt;; for example, EL uses &lt;code&gt;ivorysql5&lt;/code&gt;, while Debian/Ubuntu uses &lt;code&gt;ivorysql-5&lt;/code&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>PolarDB PG</title>
        <link>https://pgsty.pro/docs/pgsql/kernel/polardb/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/kernel/polardb/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Pigsty allows you to create PostgreSQL clusters with &amp;ldquo;domestic innovation qualification&amp;rdquo; credentials using PolarDB!&lt;/p&gt;&#xA;&lt;p&gt;PolarDB for PostgreSQL now uses PostgreSQL 17 as its base. The &lt;code&gt;polar&lt;/code&gt; template, default path, and extension notes in Pigsty have all been updated to PG17. Any client tool compatible with the PostgreSQL wire protocol can access PolarDB clusters.&lt;/p&gt;&#xA;&lt;p&gt;Pigsty&amp;rsquo;s PGSQL repository provides PolarDB PG open-source installation packages, but they are not downloaded to the local software repository during Pigsty installation.&lt;/p&gt;</description>
      </item>
    <item>
        <title>PolarDB Oracle</title>
        <link>https://pgsty.pro/docs/pgsql/kernel/polardb-o/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/kernel/polardb-o/</guid>
        <description>&lt;p&gt;Pigsty allows you to create PolarDB for Oracle clusters with &amp;ldquo;domestic innovation qualification&amp;rdquo; credentials using PolarDB!&lt;/p&gt;&#xA;&lt;p&gt;According to the &lt;a href=&#34;http://www.itsec.gov.cn/aqkkcp/cpgg/202312/t20231226_162074.html&#34;&gt;Security and Reliability Evaluation Results Announcement (No. 1, 2023)&lt;/a&gt;, Appendix 3, Centralized Database. PolarDB v2.0 is an autonomous, controllable, secure, and reliable domestic innovation database.&lt;/p&gt;&#xA;&lt;p&gt;PolarDB for Oracle is an Oracle-compatible version developed based on PolarDB for PostgreSQL. Both share the same kernel, distinguished by the &lt;code&gt;--compatibility-mode&lt;/code&gt; parameter.&lt;/p&gt;&#xA;&lt;p&gt;We collaborate with the Alibaba Cloud kernel team to provide a complete database solution based on PolarDB v2.0 kernel and Pigsty. Please contact sales for inquiries, or purchase on Alibaba Cloud Marketplace.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Greenplum</title>
        <link>https://pgsty.pro/docs/pgsql/kernel/greenplum/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/kernel/greenplum/</guid>
        <description>&lt;p&gt;Pigsty supports deploying Greenplum clusters and its derivative distribution YMatrixDB, and provides the capability to integrate existing Greenplum deployments into Pigsty monitoring.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Greenplum / YMatrix cluster deployment capabilities are only available in the professional/enterprise editions and are not currently open source.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;installation&#34;&gt;Installation&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Pigsty provides installation packages for Greenplum 6 (@el7) and Greenplum 7 (@el8). Open source users can install and configure them manually.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Neon</title>
        <link>https://pgsty.pro/docs/pgsql/kernel/neon/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/pgsql/kernel/neon/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://github.com/neondatabase/neon&#34;&gt;&lt;strong&gt;Neon&lt;/strong&gt;&lt;/a&gt; adopts a storage and compute separation architecture, providing seamless autoscaling, scale to zero, and unique database branching capabilities.&lt;/p&gt;&#xA;&lt;p&gt;Neon official website: &lt;a href=&#34;https://neon.tech/&#34;&gt;https://neon.tech/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Neon binaries are currently too large to include in the open-source package set. This support path remains in pilot stage; contact Pigsty sales if you need it.&lt;/p&gt;</description>
      </item>
    
  </channel>
</rss>
