<?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</title><link>https://pigsty.io/module/pgsql/</link><description>Recent content in PGSQL on PIGSTY</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sun, 03 May 2026 17:21:02 +0800</lastBuildDate><atom:link href="https://pigsty.io/module/pgsql/index.xml" rel="self" type="application/rss+xml"/><item><title>Cluster / Instance</title><link>https://pigsty.io/docs/pgsql/config/cluster/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/config/cluster/</guid><description>&lt;blockquote&gt;
&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;
&lt;/blockquote&gt;
&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;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#primary"&gt;Primary&lt;/a&gt;: Define a single instance cluster.&lt;/li&gt;
&lt;li&gt;&lt;a href="#replica"&gt;Replica&lt;/a&gt;: Define a basic HA cluster with one primary and one replica.&lt;/li&gt;
&lt;li&gt;&lt;a href="#offline"&gt;Offline&lt;/a&gt;: Define an instance dedicated to OLAP/ETL/interactive queries&lt;/li&gt;
&lt;li&gt;&lt;a href="#sync-standby"&gt;Sync Standby&lt;/a&gt;: Enable synchronous commit to ensure no data loss.&lt;/li&gt;
&lt;li&gt;&lt;a href="#quorum-commit"&gt;Quorum Commit&lt;/a&gt;: Use quorum sync commit for a higher consistency level.&lt;/li&gt;
&lt;li&gt;&lt;a href="#standby-cluster"&gt;Standby Cluster&lt;/a&gt;: Clone an existing cluster and follow it&lt;/li&gt;
&lt;li&gt;&lt;a href="#delayed-cluster"&gt;Delayed Cluster&lt;/a&gt;: Clone an existing cluster for emergency data recovery&lt;/li&gt;
&lt;li&gt;&lt;a href="#citus-cluster"&gt;Citus Cluster&lt;/a&gt;: Define a Citus distributed database cluster&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="primary"&gt;Primary&lt;/h2&gt;
&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://pigsty.io/docs/pgsql/admin/cluster/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/admin/cluster/</guid><description>&lt;h2 id="quick-reference"&gt;Quick Reference&lt;/h2&gt;
&lt;table class="full-width"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Action&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Command&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="#create-cluster"&gt;&lt;strong&gt;Create Cluster&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;bin/pgsql-add &amp;lt;cls&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Create a new PostgreSQL cluster&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="#expand-cluster"&gt;&lt;strong&gt;Expand Cluster&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;bin/pgsql-add &amp;lt;cls&amp;gt; &amp;lt;ip...&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Add replica to existing cluster&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="#shrink-cluster"&gt;&lt;strong&gt;Shrink Cluster&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;bin/pgsql-rm &amp;lt;cls&amp;gt; &amp;lt;ip...&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Remove instance from cluster&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="#remove-cluster"&gt;&lt;strong&gt;Remove Cluster&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;bin/pgsql-rm &amp;lt;cls&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Destroy entire PostgreSQL cluster&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="#reload-service"&gt;&lt;strong&gt;Reload Service&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;bin/pgsql-svc &amp;lt;cls&amp;gt; [ip...]&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Reload cluster load balancer config&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="#reload-hba"&gt;&lt;strong&gt;Reload HBA&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;bin/pgsql-hba &amp;lt;cls&amp;gt; [ip...]&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Reload cluster HBA access rules&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="#clone-cluster"&gt;&lt;strong&gt;Clone Cluster&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;-&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Clone via standby cluster or PITR&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For other management tasks, see: &lt;a href="https://pigsty.io/docs/pgsql/admin/patroni"&gt;&lt;strong&gt;HA Management&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://pigsty.io/docs/pgsql/admin/user/"&gt;&lt;strong&gt;Manage Users&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://pigsty.io/docs/pgsql/admin/db/"&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://pigsty.io/docs/concept/ha/failure/passive/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/concept/ha/failure/passive/</guid><description>&lt;div id="infographic-6fbe6cd143520c2b9887aeafd910401a" class="infographic-container td-max-width-on-larger-screens"&gt;&lt;/div&gt;

&lt;script&gt;
(function() {
 var containerId = 'infographic-6fbe6cd143520c2b9887aeafd910401a';
 var syntax = "````\ninfographic list-row-simple-horizontal-arrow\ndata\n\n desc Lease Expiration Stages\n items\n - label Lease Expiration\n - label Replica Detect\n - label Elect \u0026 Promote\n - label Haproxy Up\ntheme light\n palette antv\n````";

 function renderInfographic() {
 var dom = document.getElementById(containerId);
 if (!dom) { console.error('Infographic: container not found:', containerId); return; }
 try {
 var ig = new AntVInfographic.Infographic({
 container: '#' + containerId,
 width: dom.offsetWidth || '100%',
 height: 'auto',
 });
 ig.render(syntax);
 } catch (e) {
 console.error('Infographic render error:', e);
 dom.innerHTML = '&lt;pre style="color: red;"&gt;Infographic Error: ' + e.message + '&lt;/pre&gt;';
 }
 }

 
 if (typeof AntVInfographic !== 'undefined') {
 renderInfographic();
 } else if (!window._infographicLoading) {
 window._infographicLoading = true;
 window._infographicCallbacks = [renderInfographic];
 var script = document.createElement('script');
 script.src = '/js/infographic.min.js';
 script.onload = function() {
 window._infographicCallbacks.forEach(function(cb) { cb(); });
 };
 document.head.appendChild(script);
 } else {
 window._infographicCallbacks.push(renderInfographic);
 }
})();
&lt;/script&gt;

&lt;hr&gt;
&lt;h2 id="rto-timeline"&gt;RTO Timeline&lt;/h2&gt;
&lt;div id="echarts-0f45ad1cb9c0c76384b068caaba7bbfe" class="echarts-container td-max-width-on-larger-screens" style="height: 520px;"&gt;&lt;/div&gt;

&lt;script&gt;
(function() {
 var dom = document.getElementById('echarts-0f45ad1cb9c0c76384b068caaba7bbfe');
 if (!dom) return;

 
 window._echartsFns = window._echartsFns || {};

var fmt = function(params) { if (!params || !params.length || params[0].name === '') return ''; return '&lt;b&gt;' + params[0].name + '&lt;/b&gt;&lt;br/&gt;' + params.filter(p =&gt; p.value !== '-' &amp;&amp; p.value != null).map(p =&gt; p.marker + ' ' + p.seriesName + ': ' + p.value + 's').join('&lt;br/&gt;'); };

 window._echartsFns['fmt'] = fmt;
 var theme = document.documentElement.getAttribute('data-bs-theme') === 'dark' ? 'dark' : null;

 var chart = echarts.init(dom, theme);
 var optionsJson = {"grid":{"bottom":32,"left":64,"right":24,"top":40},"legend":{"data":["Lease Expiration","Replica Detection","Lock Contest \u0026 Promote","Health Check"],"itemGap":12,"top":0},"series":[{"barWidth":20,"data":[120,110,100,"-",60,55,50,"-",30,27,25,"-",20,17,15],"emphasis":{"focus":"series"},"itemStyle":{"color":"#e15759"},"name":"Lease Expire","stack":"main","type":"bar","z":2},{"data":[20,10,0,"-",10,5,0,"-",5,3,0,"-",5,3,0],"emphasis":{"focus":"series"},"itemStyle":{"color":"#edc949"},"name":"Replica Detect","stack":"main","type":"bar","z":2},{"data":[2,1,0,"-",2,1,0,"-",2,1,0,"-",2,1,0],"emphasis":{"focus":"series"},"itemStyle":{"color":"#59a14f"},"name":"Elect \u0026 Promote","stack":"main","type":"bar","z":2},{"data":[8,6,4,"-",6,5,3,"-",4,3,2,"-",2,2,1],"emphasis":{"focus":"series"},"itemStyle":{"color":"#4e79a7"},"name":"HAProxy Check","stack":"main","type":"bar","z":2},{"barGap":"-100%","barWidth":20,"data":[150,127,104,"-",78,66,53,"-",41,34,27,"-",29,23,16],"emphasis":{"itemStyle":{"opacity":0}},"itemStyle":{"color":"#888","opacity":0},"name":"Total RTO","type":"bar","z":1},{"barGap":"-100%","barWidth":20,"data":[150,150,150,"-",90,90,90,"-",45,45,45,"-",30,30,30],"emphasis":{"itemStyle":{"color":"rgba(0,0,0,0.12)"}},"itemStyle":{"color":"rgba(0,0,0,0.08)"},"name":"RTO Budget","type":"bar","z":0}],"tooltip":{"axisPointer":{"type":"shadow"},"formatter":"$fn:fmt","trigger":"axis"},"xAxis":{"axisLine":{"show":true},"axisTick":{"show":true},"max":160,"minorSplitLine":{"lineStyle":{"opacity":0.2,"type":"dotted"},"show":true},"minorTick":{"show":true,"splitNumber":5},"name":"Seconds","nameLocation":"end","splitLine":{"lineStyle":{"opacity":0.5,"type":"dashed"},"show":true},"type":"value"},"yAxis":{"axisLabel":{"fontFamily":"monospace","fontSize":10},"axisLine":{"show":true},"axisTick":{"show":true},"data":["wide-max","wide-avg","wide-min","","safe-max","safe-avg","safe-min","","norm-max","norm-avg","norm-min","","fast-max","fast-avg","fast-min"],"splitLine":{"show":false},"type":"category"}};

 
 function replaceFnRefs(obj) {
 if (typeof obj === 'string' &amp;&amp; obj.startsWith('$fn:')) {
 var fnName = obj.substring(4);
 return window._echartsFns[fnName];
 }
 if (Array.isArray(obj)) {
 return obj.map(replaceFnRefs);
 }
 if (obj &amp;&amp; typeof obj === 'object') {
 var result = {};
 for (var key in obj) {
 result[key] = replaceFnRefs(obj[key]);
 }
 return result;
 }
 return obj;
 }

 var options = replaceFnRefs(optionsJson);
 chart.setOption(options);

 
 window.addEventListener('resize', function() {
 chart.resize();
 });
 var observer = new MutationObserver(function(mutations) {
 mutations.forEach(function(mutation) {
 if (mutation.attributeName === 'data-bs-theme') {
 var newTheme = document.documentElement.getAttribute('data-bs-theme') === 'dark' ? 'dark' : null;
 chart.dispose();
 chart = echarts.init(dom, newTheme);
 chart.setOption(options);
 }
 });
 });
 observer.observe(document.documentElement, { attributes: true, attributeFilter: ['data-bs-theme'] });
})();
&lt;/script&gt;

&lt;hr&gt;
&lt;h2 id="failure-model"&gt;Failure Model&lt;/h2&gt;
&lt;table class="full-width"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: center"&gt;Phase&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Best&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Worst&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Average&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;strong&gt;Lease Expiration&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ttl - loop&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ttl&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ttl - loop/2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Best: crash just before refresh&lt;br/&gt;Worst: crash right after refresh&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;strong&gt;Replica Detect&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;loop&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;loop / 2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Best: exactly at check point&lt;br/&gt;Worst: just missed check point&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;strong&gt;Election Promote&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Best: direct lock and promote&lt;br/&gt;Worst: API timeout + Promote&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;strong&gt;HAProxy Check&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;(rise-1) × fastinter&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;(rise-1) × fastinter + inter&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;(rise-1) × fastinter + inter/2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Best: state change before check&lt;br/&gt;Worst: state change right after check&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&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://pigsty.io/docs/pgsql/template/tune/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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="https://pigsty.io/docs/pgsql/param#pg_conf"&gt;&lt;code&gt;pg_conf&lt;/code&gt;&lt;/a&gt; parameter.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tiny.yml&lt;/code&gt;: Optimized for small nodes, VMs, and small demos (1-8 cores, 1-16GB)&lt;/li&gt;
&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;
&lt;li&gt;&lt;code&gt;olap.yml&lt;/code&gt;: Optimized for OLAP workloads and throughput (4C8G+)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;crit.yml&lt;/code&gt;: Optimized for data consistency and critical applications (4C8G+)&lt;/li&gt;
&lt;/ul&gt;
&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://pigsty.io/docs/concept/ha/rpo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&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;
&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.
For typical scenarios, some data loss is acceptable (e.g., up to 1MB) in exchange for higher availability and performance.&lt;/p&gt;</description></item><item><title>Model of Patroni Active Failure</title><link>https://pigsty.io/docs/concept/ha/failure/active/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/concept/ha/failure/active/</guid><description>&lt;div id="infographic-83f086194aaa6ee6523bab9450341f7b" class="infographic-container td-max-width-on-larger-screens"&gt;&lt;/div&gt;

&lt;script&gt;
(function() {
 var containerId = 'infographic-83f086194aaa6ee6523bab9450341f7b';
 var syntax = "````\ninfographic list-row-simple-horizontal-arrow\ndata\n desc When Patroni is healthy but PostgreSQL crashes\n items\n - label Crash Found\n - label Restart Timeout\n - label Replica Detect\n - label Elect Promote\n - label HAProxy Check\ntheme light\n palette antv\n````";

 function renderInfographic() {
 var dom = document.getElementById(containerId);
 if (!dom) { console.error('Infographic: container not found:', containerId); return; }
 try {
 var ig = new AntVInfographic.Infographic({
 container: '#' + containerId,
 width: dom.offsetWidth || '100%',
 height: 'auto',
 });
 ig.render(syntax);
 } catch (e) {
 console.error('Infographic render error:', e);
 dom.innerHTML = '&lt;pre style="color: red;"&gt;Infographic Error: ' + e.message + '&lt;/pre&gt;';
 }
 }

 
 if (typeof AntVInfographic !== 'undefined') {
 renderInfographic();
 } else if (!window._infographicLoading) {
 window._infographicLoading = true;
 window._infographicCallbacks = [renderInfographic];
 var script = document.createElement('script');
 script.src = '/js/infographic.min.js';
 script.onload = function() {
 window._infographicCallbacks.forEach(function(cb) { cb(); });
 };
 document.head.appendChild(script);
 } else {
 window._infographicCallbacks.push(renderInfographic);
 }
})();
&lt;/script&gt;

&lt;hr&gt;
&lt;h2 id="rto-timeline"&gt;RTO Timeline&lt;/h2&gt;
&lt;div id="echarts-f4f61a909b7c83448b5c4f436a069fec" class="echarts-container td-max-width-on-larger-screens" style="height: 520px;"&gt;&lt;/div&gt;

&lt;script&gt;
(function() {
 var dom = document.getElementById('echarts-f4f61a909b7c83448b5c4f436a069fec');
 if (!dom) return;

 
 window._echartsFns = window._echartsFns || {};

var fmt = function(params) { if (!params || !params.length || params[0].name === '') return ''; return '&lt;b&gt;' + params[0].name + '&lt;/b&gt;&lt;br/&gt;' + params.filter(p =&gt; p.value !== '-' &amp;&amp; p.value != null).map(p =&gt; p.marker + ' ' + p.seriesName + ': ' + p.value + 's').join('&lt;br/&gt;'); };

 window._echartsFns['fmt'] = fmt;
 var theme = document.documentElement.getAttribute('data-bs-theme') === 'dark' ? 'dark' : null;

 var chart = echarts.init(dom, theme);
 var optionsJson = {"grid":{"bottom":32,"left":64,"right":24,"top":40},"legend":{"data":["Crash Found","Restart Timeout","Replica Detection","Elect Promote","HAProxy Check"],"itemGap":12,"top":0},"series":[{"barWidth":20,"data":[20,10,0,"-",10,5,0,"-",5,3,0,"-",5,3,0],"emphasis":{"focus":"series"},"itemStyle":{"color":"#b07aa1"},"name":"Crash Found","stack":"main","type":"bar","z":2},{"data":[95,95,0,"-",45,45,0,"-",25,25,0,"-",15,15,0],"emphasis":{"focus":"series"},"itemStyle":{"color":"#f28e2c"},"name":"Restart Timeout","stack":"main","type":"bar","z":2},{"data":[20,10,0,"-",10,5,0,"-",5,3,0,"-",5,3,0],"emphasis":{"focus":"series"},"itemStyle":{"color":"#edc949"},"name":"Replica Detect","stack":"main","type":"bar","z":2},{"data":[2,1,0,"-",2,1,0,"-",2,1,0,"-",2,1,0],"emphasis":{"focus":"series"},"itemStyle":{"color":"#59a14f"},"name":"Elect Promote","stack":"main","type":"bar","z":2},{"data":[8,6,4,"-",6,5,3,"-",4,3,2,"-",2,2,1],"emphasis":{"focus":"series"},"itemStyle":{"color":"#4e79a7"},"name":"HAProxy Check","stack":"main","type":"bar","z":2},{"barGap":"-100%","barWidth":20,"data":[145,122,4,"-",73,61,3,"-",41,35,2,"-",29,24,1],"emphasis":{"itemStyle":{"opacity":0}},"itemStyle":{"color":"#888","opacity":0},"name":"RTO Total","type":"bar","z":1},{"barGap":"-100%","barWidth":20,"data":[150,150,150,"-",90,90,90,"-",45,45,45,"-",30,30,30],"emphasis":{"itemStyle":{"color":"rgba(0,0,0,0.12)"}},"itemStyle":{"color":"rgba(0,0,0,0.08)"},"name":"RTO Budget","type":"bar","z":0}],"tooltip":{"axisPointer":{"type":"shadow"},"formatter":"$fn:fmt","trigger":"axis"},"xAxis":{"axisLine":{"show":true},"axisTick":{"show":true},"max":160,"minorSplitLine":{"lineStyle":{"opacity":0.2,"type":"dotted"},"show":true},"minorTick":{"show":true,"splitNumber":5},"name":"Seconds","nameLocation":"end","splitLine":{"lineStyle":{"opacity":0.5,"type":"dashed"},"show":true},"type":"value"},"yAxis":{"axisLabel":{"fontFamily":"monospace","fontSize":10},"axisLine":{"show":true},"axisTick":{"show":true},"data":["wide-max","wide-avg","wide-min","","safe-max","safe-avg","safe-min","","norm-max","norm-avg","norm-min","","fast-max","fast-avg","fast-min"],"splitLine":{"show":false},"type":"category"}};

 
 function replaceFnRefs(obj) {
 if (typeof obj === 'string' &amp;&amp; obj.startsWith('$fn:')) {
 var fnName = obj.substring(4);
 return window._echartsFns[fnName];
 }
 if (Array.isArray(obj)) {
 return obj.map(replaceFnRefs);
 }
 if (obj &amp;&amp; typeof obj === 'object') {
 var result = {};
 for (var key in obj) {
 result[key] = replaceFnRefs(obj[key]);
 }
 return result;
 }
 return obj;
 }

 var options = replaceFnRefs(optionsJson);
 chart.setOption(options);

 
 window.addEventListener('resize', function() {
 chart.resize();
 });
 var observer = new MutationObserver(function(mutations) {
 mutations.forEach(function(mutation) {
 if (mutation.attributeName === 'data-bs-theme') {
 var newTheme = document.documentElement.getAttribute('data-bs-theme') === 'dark' ? 'dark' : null;
 chart.dispose();
 chart = echarts.init(dom, newTheme);
 chart.setOption(options);
 }
 });
 });
 observer.observe(document.documentElement, { attributes: true, attributeFilter: ['data-bs-theme'] });
})();
&lt;/script&gt;

&lt;hr&gt;
&lt;h2 id="failure-model"&gt;Failure Model&lt;/h2&gt;
&lt;table class="full-width"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: center"&gt;Item&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Best&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Worst&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Average&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;strong&gt;Crash Found&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;loop&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;loop/2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Best: PG crashes right before check&lt;br/&gt;Worst: PG crashes right after check&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;strong&gt;Restart Timeout&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;start&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;start&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Best: PG recovers instantly&lt;br/&gt;Worst: Wait full start timeout before releasing lease&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;strong&gt;Replica Detect&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;loop&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;loop/2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Best: Right at check point&lt;br/&gt;Worst: Just missed check point&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;strong&gt;Elect Promote&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Best: Acquire lock and promote directly&lt;br/&gt;Worst: API timeout + Promote&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;strong&gt;HAProxy Check&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;(rise-1) × fastinter&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;(rise-1) × fastinter + inter&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;(rise-1) × fastinter + inter/2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Best: State changes before check&lt;br/&gt;Worst: State changes right after check&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&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://pigsty.io/docs/pgsql/config/kernel/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/config/kernel/</guid><description>&lt;blockquote&gt;
&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;
&lt;/blockquote&gt;
&lt;p&gt;Pigsty v4.3 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;
&lt;hr&gt;
&lt;h2 id="major-version-and-packages"&gt;Major Version and Packages&lt;/h2&gt;
&lt;ul&gt;
&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;
&lt;li&gt;&lt;code&gt;pg_packages&lt;/code&gt;: Define the core package set to install, supports using &lt;a href="https://pigsty.io/docs/pgsql/config/alias"&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;
&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;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;all&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;vars&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;18&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_packages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;pgsql-main pgsql-common ]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_extensions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;postgis, timescaledb, pgvector, pgml ]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&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://pigsty.io/docs/pgsql/template/oltp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&lt;blockquote&gt;
&lt;p&gt;Pair with &lt;a href="https://pigsty.io/docs/node/param#node_tune"&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;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="use-cases"&gt;Use Cases&lt;/h2&gt;
&lt;p&gt;OLTP template is ideal for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;E-commerce&lt;/strong&gt;: Order processing, inventory, user transactions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Social apps&lt;/strong&gt;: User feeds, messaging, following relationships&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gaming backends&lt;/strong&gt;: Player data, leaderboards, game state&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SaaS applications&lt;/strong&gt;: Multi-tenant business systems&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web apps&lt;/strong&gt;: CRUD-intensive workloads&lt;/li&gt;
&lt;/ul&gt;
&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://pigsty.io/docs/concept/model/pgsql/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&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;
&lt;p&gt;There are four core entities in Pigsty&amp;rsquo;s PGSQL module:&lt;/p&gt;
&lt;ul&gt;
&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;
&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;
&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;
&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;
&lt;/ul&gt;
&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://pigsty.io/docs/pgsql/admin/user/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/admin/user/</guid><description>&lt;h2 id="quick-start"&gt;Quick Start&lt;/h2&gt;
&lt;p&gt;Pigsty uses declarative management: first &lt;a href="https://pigsty.io/docs/pgsql/config/user"&gt;&lt;strong&gt;define users&lt;/strong&gt;&lt;/a&gt; in the &lt;a href="https://pigsty.io/docs/concept/iac/inventory"&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;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;pg-meta&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;hosts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;10.10.10.10&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_seq: 1, pg_role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;primary } }&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;vars&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_cluster&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;pg-meta&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_users&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;{&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name: dbuser_app, password: &amp;#39;DBUser.App&amp;#39;, pgbouncer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;}&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# &amp;lt;--- Define user list here!&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;ul class="nav nav-tabs" id="tabs-0" role="tablist"&gt;
 &lt;li class="nav-item"&gt;
 &lt;button class="nav-link active"
 id="tabs-00-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-00" role="tab"
 data-td-tp-persist="script" aria-controls="tabs-00-00" aria-selected="true"&gt;
 Script
 &lt;/button&gt;
 &lt;/li&gt;&lt;li class="nav-item"&gt;
 &lt;button class="nav-link"
 id="tabs-00-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-01" role="tab"
 data-td-tp-persist="playbook" aria-controls="tabs-00-01" aria-selected="false"&gt;
 Playbook
 &lt;/button&gt;
 &lt;/li&gt;&lt;li class="nav-item"&gt;
 &lt;button class="nav-link"
 id="tabs-00-02-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-02" role="tab"
 data-td-tp-persist="example" aria-controls="tabs-00-02" aria-selected="false"&gt;
 Example
 &lt;/button&gt;
 &lt;/li&gt;
&lt;/ul&gt;

&lt;div class="tab-content" id="tabs-0-content"&gt;
 &lt;div class="tab-body tab-pane fade show active"
 id="tabs-00-00" role="tabpanel" aria-labelled-by="tabs-00-00-tab" tabindex="0"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bin/pgsql-user &amp;lt;cls&amp;gt; &amp;lt;username&amp;gt; &lt;span class="c1"&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;
 &lt;div class="tab-body tab-pane fade"
 id="tabs-00-01" role="tabpanel" aria-labelled-by="tabs-00-01-tab" tabindex="0"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./pgsql-user.yml -l pg-meta -e &lt;span class="nv"&gt;username&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;dbuser_app &lt;span class="c1"&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;
 &lt;div class="tab-body tab-pane fade"
 id="tabs-00-02" role="tabpanel" aria-labelled-by="tabs-00-02-tab" tabindex="0"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bin/pgsql-user pg-meta dbuser_app &lt;span class="c1"&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;
&lt;/div&gt;

&lt;p&gt;For complete user definition reference, see &lt;a href="https://pigsty.io/docs/pgsql/config/user"&gt;&lt;strong&gt;User Configuration&lt;/strong&gt;&lt;/a&gt;. For access permissions, see &lt;a href="https://pigsty.io/docs/concept/sec/ac/#default-roles"&gt;&lt;strong&gt;ACL: Role Privileges&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Managing PostgreSQL Databases</title><link>https://pigsty.io/docs/pgsql/admin/db/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/admin/db/</guid><description>&lt;h2 id="quick-start"&gt;Quick Start&lt;/h2&gt;
&lt;p&gt;Pigsty uses declarative management: first &lt;a href="https://pigsty.io/docs/pgsql/config/db"&gt;&lt;strong&gt;define databases&lt;/strong&gt;&lt;/a&gt; in the &lt;a href="https://pigsty.io/docs/concept/iac/inventory"&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;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;pg-meta&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;hosts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;10.10.10.10&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_seq: 1, pg_role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;primary } }&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;vars&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_cluster&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;pg-meta&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_databases&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;{&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;some_db }] &lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# &amp;lt;--- Define database list here!&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;ul class="nav nav-tabs" id="tabs-0" role="tablist"&gt;
 &lt;li class="nav-item"&gt;
 &lt;button class="nav-link active"
 id="tabs-00-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-00" role="tab"
 data-td-tp-persist="script" aria-controls="tabs-00-00" aria-selected="true"&gt;
 Script
 &lt;/button&gt;
 &lt;/li&gt;&lt;li class="nav-item"&gt;
 &lt;button class="nav-link"
 id="tabs-00-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-01" role="tab"
 data-td-tp-persist="playbook" aria-controls="tabs-00-01" aria-selected="false"&gt;
 Playbook
 &lt;/button&gt;
 &lt;/li&gt;&lt;li class="nav-item"&gt;
 &lt;button class="nav-link"
 id="tabs-00-02-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-02" role="tab"
 data-td-tp-persist="example" aria-controls="tabs-00-02" aria-selected="false"&gt;
 Example
 &lt;/button&gt;
 &lt;/li&gt;
&lt;/ul&gt;

&lt;div class="tab-content" id="tabs-0-content"&gt;
 &lt;div class="tab-body tab-pane fade show active"
 id="tabs-00-00" role="tabpanel" aria-labelled-by="tabs-00-00-tab" tabindex="0"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bin/pgsql-db &amp;lt;cls&amp;gt; &amp;lt;dbname&amp;gt; &lt;span class="c1"&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;
 &lt;div class="tab-body tab-pane fade"
 id="tabs-00-01" role="tabpanel" aria-labelled-by="tabs-00-01-tab" tabindex="0"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./pgsql-db.yml -l pg-meta -e &lt;span class="nv"&gt;dbname&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;some_db &lt;span class="c1"&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;
 &lt;div class="tab-body tab-pane fade"
 id="tabs-00-02" role="tabpanel" aria-labelled-by="tabs-00-02-tab" tabindex="0"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bin/pgsql-db pg-meta some_db &lt;span class="c1"&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;
&lt;/div&gt;

&lt;p&gt;For complete database definition reference, see &lt;a href="https://pigsty.io/docs/pgsql/config/db"&gt;&lt;strong&gt;Database Configuration&lt;/strong&gt;&lt;/a&gt;. For access permissions, see &lt;a href="https://pigsty.io/docs/concept/sec/ac/#database-privileges"&gt;&lt;strong&gt;ACL: Database Privileges&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Failure Model</title><link>https://pigsty.io/docs/concept/ha/failure/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&lt;table class="full-width"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;#&lt;/th&gt;
 &lt;th&gt;Failure Scenario&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Final Path&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;PG process crash&lt;/td&gt;
 &lt;td&gt;crash, OOM killed&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;Active Detection&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;PG connection refused&lt;/td&gt;
 &lt;td&gt;max_connections&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;Active Detection&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;3&lt;/td&gt;
 &lt;td&gt;PG zombie&lt;/td&gt;
 &lt;td&gt;Process alive but unresponsive&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;Active Detection&lt;/strong&gt; (timeout)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;Patroni process crash&lt;/td&gt;
 &lt;td&gt;kill -9, OOM&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;Passive Detection&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;5&lt;/td&gt;
 &lt;td&gt;Patroni zombie&lt;/td&gt;
 &lt;td&gt;Process alive but stuck&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;Watchdog&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;6&lt;/td&gt;
 &lt;td&gt;Node down&lt;/td&gt;
 &lt;td&gt;Power outage, hardware failure&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;Passive Detection&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;7&lt;/td&gt;
 &lt;td&gt;Node zombie&lt;/td&gt;
 &lt;td&gt;IO hang, CPU starvation&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;Watchdog&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;8&lt;/td&gt;
 &lt;td&gt;Primary ↔ DCS network failure&lt;/td&gt;
 &lt;td&gt;Firewall, switch failure&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;Network Partition&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;9&lt;/td&gt;
 &lt;td&gt;Storage failure&lt;/td&gt;
 &lt;td&gt;Disk failure, disk full, mount failure&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;Active Detection&lt;/strong&gt; or &lt;strong&gt;Watchdog&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;10&lt;/td&gt;
 &lt;td&gt;Manual switchover&lt;/td&gt;
 &lt;td&gt;Switchover/Failover&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;Manual Trigger&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&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://pigsty.io/docs/pgsql/template/olap/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&lt;blockquote&gt;
&lt;p&gt;Pair with &lt;a href="https://pigsty.io/docs/node/param#node_tune"&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;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="use-cases"&gt;Use Cases&lt;/h2&gt;
&lt;p&gt;OLAP template is ideal for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Data warehouses&lt;/strong&gt;: Historical data storage, multidimensional analysis&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BI reports&lt;/strong&gt;: Complex report queries, dashboard data sources&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ETL processing&lt;/strong&gt;: Data extraction, transformation, loading&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data analysis&lt;/strong&gt;: Ad-hoc queries, data exploration&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HTAP mixed workloads&lt;/strong&gt;: Analytical replicas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Workload characteristics&lt;/strong&gt;:&lt;/p&gt;</description></item><item><title>Package Alias</title><link>https://pigsty.io/docs/pgsql/config/alias/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/config/alias/</guid><description>&lt;p&gt;PostgreSQL package naming conventions vary significantly across different operating systems:&lt;/p&gt;
&lt;ul&gt;
&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;
&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;
&lt;/ul&gt;
&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;
&lt;h2 id="package-alias"&gt;Package Alias&lt;/h2&gt;
&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://pigsty.io/docs/pgsql/template/crit/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/template/crit/</guid><description>&lt;p&gt;&lt;code&gt;crit.yml&lt;/code&gt; is optimized for &lt;strong&gt;critical/financial workloads&lt;/strong&gt;. Designed for 4-128 core CPUs with forced sync replication, data checksums, full audit logging, and strict security. Trades performance for maximum data safety.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Pair with &lt;a href="https://pigsty.io/docs/node/param#node_tune"&gt;&lt;strong&gt;&lt;code&gt;node_tune&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; = &lt;code&gt;crit&lt;/code&gt; for OS-level tuning, optimizing dirty page management.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="use-cases"&gt;Use Cases&lt;/h2&gt;
&lt;p&gt;CRIT template is ideal for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Financial transactions&lt;/strong&gt;: Bank transfers, payment settlement, securities trading&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Core accounting&lt;/strong&gt;: General ledger systems, accounting systems&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compliance audit&lt;/strong&gt;: Businesses requiring complete operation records&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Critical business&lt;/strong&gt;: Any scenario that cannot tolerate data loss&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Requirements&lt;/strong&gt;:&lt;/p&gt;</description></item><item><title>Patroni HA Management</title><link>https://pigsty.io/docs/pgsql/admin/patroni/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/admin/patroni/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&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;
&lt;p&gt;To use Patroni for management, you need one of the following identities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;From &lt;a href="https://pigsty.io/docs/concept/arch/node#admin-node"&gt;&lt;strong&gt;INFRA node&lt;/strong&gt;&lt;/a&gt; as &lt;a href="https://pigsty.io/docs/deploy/admin"&gt;&lt;strong&gt;admin user&lt;/strong&gt;&lt;/a&gt;, managing all clusters in the environment.&lt;/li&gt;
&lt;li&gt;From &lt;a href="https://pigsty.io/docs/concept/arch/node#pgsql-node"&gt;&lt;strong&gt;PGSQL node&lt;/strong&gt;&lt;/a&gt; as &lt;a href="https://pigsty.io/docs/pgsql/param#pg_dbsu"&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;
&lt;/ul&gt;
&lt;p&gt;Patroni provides &lt;a href="https://patroni.readthedocs.io/en/latest/patronictl.html"&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;
&lt;details&gt;&lt;summary&gt;Using patronictl via pg alias&lt;/summary&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pg &lt;span class="o"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;local&lt;/span&gt; &lt;span class="nv"&gt;patroni_conf&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;/infra/conf/patronictl.yml&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; ! -r &lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;patroni_conf&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;patroni_conf&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;/etc/patroni/patroni.yml&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; ! -r &lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;patroni_conf&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;error: patronictl config not found&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; 1&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;fi&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;fi&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; patronictl -c &lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;patroni_conf&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$@&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;
&lt;hr&gt;
&lt;h2 id="available-commands"&gt;Available Commands&lt;/h2&gt;
&lt;table class="full-width"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Command&lt;/th&gt;
 &lt;th&gt;Function&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#edit-config"&gt;&lt;strong&gt;&lt;code&gt;edit-config&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Edit Config&lt;/td&gt;
 &lt;td&gt;Interactively edit cluster Patroni/PostgreSQL config&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#list-status"&gt;&lt;strong&gt;&lt;code&gt;list&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;List Status&lt;/td&gt;
 &lt;td&gt;List cluster members and their status&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#switchover"&gt;&lt;strong&gt;&lt;code&gt;switchover&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Switchover&lt;/td&gt;
 &lt;td&gt;Switch primary role to specified replica (planned)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#failover"&gt;&lt;strong&gt;&lt;code&gt;failover&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Failover&lt;/td&gt;
 &lt;td&gt;Force failover to specified replica (emergency)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#restart"&gt;&lt;strong&gt;&lt;code&gt;restart&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Restart&lt;/td&gt;
 &lt;td&gt;Restart PostgreSQL instance to apply restart-required params&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#reload"&gt;&lt;strong&gt;&lt;code&gt;reload&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Reload&lt;/td&gt;
 &lt;td&gt;Reload Patroni config (no restart needed)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#reinit-replica"&gt;&lt;strong&gt;&lt;code&gt;reinit&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Reinit Replica&lt;/td&gt;
 &lt;td&gt;Reinitialize replica (wipe data and re-clone)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#pause"&gt;&lt;strong&gt;&lt;code&gt;pause&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Pause Auto-Failover&lt;/td&gt;
 &lt;td&gt;Pause Patroni automatic failover&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#resume"&gt;&lt;strong&gt;&lt;code&gt;resume&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Resume Auto-Failover&lt;/td&gt;
 &lt;td&gt;Resume Patroni automatic failover&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#history"&gt;&lt;strong&gt;&lt;code&gt;history&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;View History&lt;/td&gt;
 &lt;td&gt;Show cluster failover history&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#show-config"&gt;&lt;strong&gt;&lt;code&gt;show-config&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Show Config&lt;/td&gt;
 &lt;td&gt;Display current cluster config (read-only)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#query"&gt;&lt;strong&gt;&lt;code&gt;query&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Execute Query&lt;/td&gt;
 &lt;td&gt;Execute SQL query on cluster members&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#topology"&gt;&lt;strong&gt;&lt;code&gt;topology&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;View Topology&lt;/td&gt;
 &lt;td&gt;Display cluster replication topology&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#version"&gt;&lt;strong&gt;&lt;code&gt;version&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;View Version&lt;/td&gt;
 &lt;td&gt;Display Patroni version info&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#remove"&gt;&lt;strong&gt;&lt;code&gt;remove&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Remove Member&lt;/td&gt;
 &lt;td&gt;Remove cluster member from DCS (dangerous)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="edit-config"&gt;Edit Config&lt;/h2&gt;
&lt;p&gt;Use &lt;a href="https://patroni.readthedocs.io/en/latest/patronictl.html#patronictl-edit-config"&gt;&lt;strong&gt;&lt;code&gt;edit-config&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; to interactively edit cluster Patroni and PostgreSQL config. This opens an editor to modify config stored in DCS, automatically applying changes to all members. You can change Patroni params (&lt;code&gt;ttl&lt;/code&gt;, &lt;code&gt;loop_wait&lt;/code&gt;, &lt;code&gt;synchronous_mode&lt;/code&gt;, etc.) and PostgreSQL params in &lt;code&gt;postgresql.parameters&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>User/Role</title><link>https://pigsty.io/docs/pgsql/config/user/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/config/user/</guid><description>&lt;blockquote&gt;
&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;
&lt;/blockquote&gt;
&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;
&lt;p&gt;Pigsty defines roles and users through two config parameters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/param#pg_default_roles"&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;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/param#pg_users"&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;
&lt;/ul&gt;
&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.
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://pigsty.io/docs/pgsql/config/db/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/config/db/</guid><description>&lt;blockquote&gt;
&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;
&lt;/blockquote&gt;
&lt;p&gt;A PostgreSQL cluster can serve multiple &lt;strong&gt;databases&lt;/strong&gt; simultaneously. In Pigsty, you can &lt;a href="#define-database"&gt;&lt;strong&gt;define&lt;/strong&gt;&lt;/a&gt; required databases in cluster configuration.&lt;/p&gt;
&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;.
You can also specify other template databases via &lt;a href="#template"&gt;&lt;strong&gt;&lt;code&gt;template&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; for instant &lt;a href="https://pigsty.io/docs/pgsql/admin/db#clone-database"&gt;&lt;strong&gt;database cloning&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;By default, all business databases are 1:1 added to &lt;a href="https://pigsty.io/docs/concept/arch/pgsql#pgbouncer"&gt;&lt;strong&gt;Pgbouncer&lt;/strong&gt;&lt;/a&gt; &lt;a href="#connection-pool"&gt;&lt;strong&gt;connection pool&lt;/strong&gt;&lt;/a&gt;; &lt;a href="https://pigsty.io/docs/concept/arch/pgsql#pg_exporter"&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.
All databases are also registered as PostgreSQL datasources in &lt;a href="https://pigsty.io/docs/concept/arch/infra#grafana"&gt;&lt;strong&gt;Grafana&lt;/strong&gt;&lt;/a&gt; on all &lt;a href="https://pigsty.io/docs/concept/arch/node#infra-node"&gt;&lt;strong&gt;INFRA nodes&lt;/strong&gt;&lt;/a&gt; for PGCAT dashboards.&lt;/p&gt;</description></item><item><title>Pgbouncer Connection Pooling</title><link>https://pigsty.io/docs/pgsql/admin/pgbouncer/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/admin/pgbouncer/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Pigsty uses &lt;a href="https://www.pgbouncer.org/"&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;
&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;
&lt;hr&gt;
&lt;h2 id="user--database-management"&gt;User &amp;amp; Database Management&lt;/h2&gt;
&lt;p&gt;Pgbouncer users and databases are auto-managed by Pigsty, applying &lt;a href="https://pigsty.io/docs/pgsql/config/db"&gt;&lt;strong&gt;database config&lt;/strong&gt;&lt;/a&gt; and &lt;a href="https://pigsty.io/docs/pgsql/config/user"&gt;&lt;strong&gt;user config&lt;/strong&gt;&lt;/a&gt; when &lt;a href="https://pigsty.io/docs/pgsql/admin/db"&gt;&lt;strong&gt;creating databases&lt;/strong&gt;&lt;/a&gt; and &lt;a href="https://pigsty.io/docs/pgsql/admin/user"&gt;&lt;strong&gt;creating users&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>TINY Template</title><link>https://pigsty.io/docs/pgsql/template/tiny/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&lt;blockquote&gt;
&lt;p&gt;Pair with &lt;a href="https://pigsty.io/docs/node/param#node_tune"&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;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="use-cases"&gt;Use Cases&lt;/h2&gt;
&lt;p&gt;TINY template is ideal for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dev/test&lt;/strong&gt;: Local development, CI/CD testing&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Low-spec VMs&lt;/strong&gt;: 1-2 core CPU, 1-4GB RAM cloud instances&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Edge computing&lt;/strong&gt;: Raspberry Pi, embedded devices&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Demos&lt;/strong&gt;: Quick Pigsty experience&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Personal projects&lt;/strong&gt;: Resource-limited blogs, small apps&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Resource constraints&lt;/strong&gt;:&lt;/p&gt;</description></item><item><title>HBA Rules</title><link>https://pigsty.io/docs/pgsql/config/hba/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/config/hba/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;HBA (Host-Based Authentication) controls &amp;ldquo;who can connect to the database from where and how&amp;rdquo;.
Pigsty manages HBA rules declaratively through &lt;a href="#pg_default_hba_rules"&gt;&lt;strong&gt;&lt;code&gt;pg_default_hba_rules&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; and &lt;a href="#pg_hba_rules"&gt;&lt;strong&gt;&lt;code&gt;pg_hba_rules&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Pigsty renders the following config files during cluster init or HBA refresh:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Config File&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Path&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;PostgreSQL HBA&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;/pg/data/pg_hba.conf&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostgreSQL server HBA rules&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Pgbouncer HBA&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;/etc/pgbouncer/pgb_hba.conf&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Connection pool HBA rules&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;HBA rules are controlled by these parameters:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Parameter&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Level&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="#pg_default_hba_rules"&gt;&lt;code&gt;pg_default_hba_rules&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;G&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostgreSQL global default HBA&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="#pg_hba_rules"&gt;&lt;code&gt;pg_hba_rules&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;G/C/I&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostgreSQL cluster/instance add&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="#pgb_default_hba_rules"&gt;&lt;code&gt;pgb_default_hba_rules&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;G&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Pgbouncer global default HBA&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="#pgb_hba_rules"&gt;&lt;code&gt;pgb_hba_rules&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;G/C/I&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Pgbouncer cluster/instance add&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Rule features:&lt;/p&gt;</description></item><item><title>Access Control</title><link>https://pigsty.io/docs/pgsql/config/acl/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/config/acl/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Access control is determined by the combination of &amp;ldquo;role system + privilege templates + HBA&amp;rdquo;. This section focuses on how to declare roles and object privileges through configuration parameters.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Pigsty provides a streamlined ACL model, fully described by the following parameters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pg_default_roles&lt;/code&gt;: System roles and system users.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pg_users&lt;/code&gt;: Business users and roles.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pg_default_privileges&lt;/code&gt;: Default privileges for objects created by administrators/owners.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pg_revoke_public&lt;/code&gt;, &lt;code&gt;pg_default_schemas&lt;/code&gt;, &lt;code&gt;pg_default_extensions&lt;/code&gt;: Control the default behavior of &lt;code&gt;template1&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After understanding these parameters, you can write fully reproducible privilege configurations.&lt;/p&gt;</description></item><item><title>Managing PostgreSQL Component Services</title><link>https://pigsty.io/docs/pgsql/admin/component/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/admin/component/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Pigsty&amp;rsquo;s PGSQL module consists of multiple components, each running as a systemd service on nodes. (&lt;a href="https://pigsty.io/docs/concept/arch/pgsql#pgbackrest"&gt;&lt;strong&gt;pgbackrest&lt;/strong&gt;&lt;/a&gt; is an exception)&lt;/p&gt;
&lt;p&gt;Understanding these components and their management is essential for maintaining production PostgreSQL clusters.&lt;/p&gt;
&lt;table class="full-width"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Component&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Port&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Service Name&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Patroni&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;&lt;code&gt;8008&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;patroni&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;HA manager, manages PostgreSQL lifecycle&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;PostgreSQL&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;&lt;code&gt;5432&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;postgres&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Placeholder service, not used, for emergency&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Pgbouncer&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;&lt;code&gt;6432&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pgbouncer&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Connection pooling middleware, traffic entry&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;PgBackRest&lt;/td&gt;
 &lt;td style="text-align: left"&gt;-&lt;/td&gt;
 &lt;td style="text-align: left"&gt;-&lt;/td&gt;
 &lt;td style="text-align: left"&gt;pgBackRest has no daemon service&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;HAProxy&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;&lt;code&gt;543x&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;haproxy&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Load balancer, exposes database services&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;pg_exporter&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;&lt;code&gt;9630&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pg_exporter&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostgreSQL metrics exporter&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;pgbouncer_exporter&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;&lt;code&gt;9631&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pgbouncer_exporter&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Pgbouncer metrics exporter&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;vip-manager&lt;/td&gt;
 &lt;td style="text-align: left"&gt;-&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;vip-manager&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Optional, manages L2 VIP address floating&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="alert alert-warning" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Important&lt;/div&gt;
&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="https://pigsty.io/docs/pgsql/admin/patroni"&gt;&lt;strong&gt;&lt;code&gt;patronictl&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; commands instead.
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://pigsty.io/docs/pgsql/config/param/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/config/param/</guid><description>&lt;p&gt;PostgreSQL parameters can be configured at multiple levels with different scopes and precedence.
Pigsty supports four configuration levels, from global to local:&lt;/p&gt;
&lt;table class="full-width"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Level&lt;/th&gt;
 &lt;th&gt;Scope&lt;/th&gt;
 &lt;th&gt;Configuration Method&lt;/th&gt;
 &lt;th&gt;Storage Location&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#cluster-level"&gt;&lt;strong&gt;Cluster&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;All instances in cluster&lt;/td&gt;
 &lt;td&gt;Patroni DCS / Tuning Templates&lt;/td&gt;
 &lt;td&gt;etcd + &lt;code&gt;postgresql.conf&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#instance-level"&gt;&lt;strong&gt;Instance&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Single PG instance&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;pg_parameters&lt;/code&gt; / &lt;code&gt;ALTER SYSTEM&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;postgresql.auto.conf&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#database-level"&gt;&lt;strong&gt;Database&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;All sessions in a DB&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;pg_databases[].parameters&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;pg_db_role_setting&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#user-level"&gt;&lt;strong&gt;User&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;All sessions of a user&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;pg_users[].parameters&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;pg_db_role_setting&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&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).
Higher priority settings override lower ones.&lt;/p&gt;</description></item><item><title>Manage PostgreSQL Cron Jobs</title><link>https://pigsty.io/docs/pgsql/admin/crontab/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&lt;h2 id="quick-reference"&gt;Quick Reference&lt;/h2&gt;
&lt;table class="full-width"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Operation&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Quick Command&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="#configure-cron-jobs"&gt;&lt;strong&gt;Configure Cron Jobs&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;./pgsql.yml -t pg_crontab -l &amp;lt;cls&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Apply pg_crontab config&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="#view-cron-jobs"&gt;&lt;strong&gt;View Cron Jobs&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;crontab -l&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;View as postgres user&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="#pg-backup"&gt;&lt;strong&gt;Physical Backup&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pg-backup [full|diff|incr]&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Execute backup with pgBackRest&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="#pg-vacuum"&gt;&lt;strong&gt;Transaction Freeze&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pg-vacuum [database...]&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Freeze aging transactions, prevent XID wraparound&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="#pg-repack"&gt;&lt;strong&gt;Bloat Maintenance&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pg-repack [database...]&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Online reorganize bloated tables and indexes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For other management tasks, see: &lt;a href="https://pigsty.io/docs/pgsql/backup/"&gt;&lt;strong&gt;Backup Management&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://pigsty.io/docs/pgsql/monitor/"&gt;&lt;strong&gt;Monitoring System&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://pigsty.io/docs/pgsql/admin/patroni"&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://pigsty.io/docs/pgsql/admin/ext/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/admin/ext/</guid><description>&lt;h2 id="quick-start"&gt;Quick Start&lt;/h2&gt;
&lt;p&gt;Pigsty provides &lt;a href="https://pigsty.io/ext/list"&gt;&lt;strong&gt;510 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;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;pg-meta&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;hosts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;10.10.10.10&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_seq: 1, pg_role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;primary } }&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;vars&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_cluster&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;pg-meta&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_extensions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;postgis, timescaledb, pgvector ] &lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# &amp;lt;--- Install extension packages&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_libs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;timescaledb, pg_stat_statements, auto_explain&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# &amp;lt;--- Configure preload extensions&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_databases&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;meta&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;extensions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;postgis, timescaledb, vector ] &lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# &amp;lt;--- Enable in database&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;ul class="nav nav-tabs" id="tabs-0" role="tablist"&gt;
 &lt;li class="nav-item"&gt;
 &lt;button class="nav-link active"
 id="tabs-00-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-00" role="tab"
 data-td-tp-persist="script" aria-controls="tabs-00-00" aria-selected="true"&gt;
 Script
 &lt;/button&gt;
 &lt;/li&gt;&lt;li class="nav-item"&gt;
 &lt;button class="nav-link"
 id="tabs-00-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-01" role="tab"
 data-td-tp-persist="playbook" aria-controls="tabs-00-01" aria-selected="false"&gt;
 Playbook
 &lt;/button&gt;
 &lt;/li&gt;&lt;li class="nav-item"&gt;
 &lt;button class="nav-link"
 id="tabs-00-02-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-02" role="tab"
 data-td-tp-persist="example" aria-controls="tabs-00-02" aria-selected="false"&gt;
 Example
 &lt;/button&gt;
 &lt;/li&gt;
&lt;/ul&gt;

&lt;div class="tab-content" id="tabs-0-content"&gt;
 &lt;div class="tab-body tab-pane fade show active"
 id="tabs-00-00" role="tabpanel" aria-labelled-by="tabs-00-00-tab" tabindex="0"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bin/pgsql-ext &amp;lt;cls&amp;gt; &lt;span class="c1"&gt;# Install extensions defined in config on &amp;lt;cls&amp;gt; cluster&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bin/pgsql-ext &amp;lt;cls&amp;gt; &lt;span class="o"&gt;[&lt;/span&gt;ext...&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="c1"&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;
 &lt;div class="tab-body tab-pane fade"
 id="tabs-00-01" role="tabpanel" aria-labelled-by="tabs-00-01-tab" tabindex="0"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./pgsql.yml -l pg-meta -t pg_ext &lt;span class="c1"&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;
 &lt;div class="tab-body tab-pane fade"
 id="tabs-00-02" role="tabpanel" aria-labelled-by="tabs-00-02-tab" tabindex="0"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bin/pgsql-ext pg-meta &lt;span class="c1"&gt;# Install defined extensions on pg-meta cluster&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bin/pgsql-ext pg-meta pg_duckdb pg_mooncake &lt;span class="c1"&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;
&lt;/div&gt;

&lt;p&gt;For complete extension reference, see &lt;a href="https://pigsty.io/docs/pgsql/ext/"&gt;&lt;strong&gt;Extensions&lt;/strong&gt;&lt;/a&gt;. For available extensions, see &lt;a href="https://pigsty.io/ext/list"&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://pigsty.io/docs/pgsql/admin/upgrade/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/admin/upgrade/</guid><description>&lt;h2 id="quick-start"&gt;Quick Start&lt;/h2&gt;
&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;
&lt;table class="full-width"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Type&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Example&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Downtime&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Data Compatibility&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Risk&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Minor upgrade&lt;/td&gt;
 &lt;td style="text-align: left"&gt;17.2 → 17.3&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Seconds (rolling)&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Fully compatible&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Low&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Major upgrade&lt;/td&gt;
 &lt;td style="text-align: left"&gt;17 → 18&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Minutes&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Requires data dir upgrade&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Medium&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;




&lt;ul class="nav nav-tabs" id="tabs-0" role="tablist"&gt;
 &lt;li class="nav-item"&gt;
 &lt;button class="nav-link active"
 id="tabs-00-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-00" role="tab"
 data-td-tp-persist="minor" aria-controls="tabs-00-00" aria-selected="true"&gt;
 Minor
 &lt;/button&gt;
 &lt;/li&gt;&lt;li class="nav-item"&gt;
 &lt;button class="nav-link"
 id="tabs-00-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-01" role="tab"
 data-td-tp-persist="major" aria-controls="tabs-00-01" aria-selected="false"&gt;
 Major
 &lt;/button&gt;
 &lt;/li&gt;&lt;li class="nav-item"&gt;
 &lt;button class="nav-link"
 id="tabs-00-02-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-02" role="tab"
 data-td-tp-persist="extension" aria-controls="tabs-00-02" aria-selected="false"&gt;
 Extension
 &lt;/button&gt;
 &lt;/li&gt;
&lt;/ul&gt;

&lt;div class="tab-content" id="tabs-0-content"&gt;
 &lt;div class="tab-body tab-pane fade show active"
 id="tabs-00-00" role="tabpanel" aria-labelled-by="tabs-00-00-tab" tabindex="0"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Rolling upgrade: replicas first, then primary&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ansible &amp;lt;cls&amp;gt; -b -a &lt;span class="s1"&gt;&amp;#39;yum upgrade -y postgresql17*&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pg restart --role replica --force &amp;lt;cls&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pg switchover &amp;lt;cls&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&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;
 &lt;div class="tab-body tab-pane fade"
 id="tabs-00-01" role="tabpanel" aria-labelled-by="tabs-00-01-tab" tabindex="0"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Recommended: Logical replication migration&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bin/pgsql-add pg-new &lt;span class="c1"&gt;# Create new version cluster&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Configure logical replication to sync data...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&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;
 &lt;div class="tab-body tab-pane fade"
 id="tabs-00-02" role="tabpanel" aria-labelled-by="tabs-00-02-tab" tabindex="0"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ansible &amp;lt;cls&amp;gt; -b -a &lt;span class="s1"&gt;&amp;#39;yum upgrade -y postgis36_17*&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;psql -c &lt;span class="s1"&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;
&lt;/div&gt;

&lt;p&gt;For detailed online migration process, see &lt;a href="https://pigsty.io/docs/pgsql/migration"&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://pigsty.io/docs/concept/ha/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/concept/ha/</guid><description>&lt;hr&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Pigsty&amp;rsquo;s PostgreSQL clusters come with out-of-the-box high availability, powered by &lt;a href="https://patroni.readthedocs.io/en/latest/"&gt;&lt;strong&gt;Patroni&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://etcd.io/"&gt;&lt;strong&gt;Etcd&lt;/strong&gt;&lt;/a&gt;, and &lt;a href="http://www.haproxy.org/"&gt;&lt;strong&gt;HAProxy&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&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;
&lt;p&gt;With default configuration, the primary failure Recovery Time Objective (RTO) ≈ 45s, and Recovery Point Objective (RPO) &amp;lt; 1MB; for replica failures, RPO = 0 and RTO ≈ 0 (brief interruption). In consistency-first mode, failover can guarantee zero data loss: RPO = 0. All these metrics can be &lt;a href="https://pigsty.io/docs/concept/ha/rto"&gt;&lt;strong&gt;configured as needed&lt;/strong&gt;&lt;/a&gt; based on your actual hardware conditions and reliability requirements.&lt;/p&gt;</description></item><item><title>PGSQL Arch</title><link>https://pigsty.io/docs/concept/arch/pgsql/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&lt;hr&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;The &lt;a href="https://pigsty.io/docs/pgsql"&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;
&lt;table class="full-width"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Component&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="#postgresql"&gt;&lt;strong&gt;&lt;code&gt;postgres&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Database&lt;/td&gt;
 &lt;td style="text-align: left"&gt;The world&amp;rsquo;s most advanced open-source relational database, PGSQL core&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="#patroni"&gt;&lt;strong&gt;&lt;code&gt;patroni&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;HA&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Manages PostgreSQL, coordinates failover, leader election, config changes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="#pgbouncer"&gt;&lt;strong&gt;&lt;code&gt;pgbouncer&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Pool&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Lightweight connection pooling middleware, reduces overhead, adds flexibility&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="#pgbackrest"&gt;&lt;strong&gt;&lt;code&gt;pgbackrest&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Backup&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Full/incremental backup and WAL archiving, supports local and object storage&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="#pg_exporter"&gt;&lt;strong&gt;&lt;code&gt;pg_exporter&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Metrics&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Exports PostgreSQL monitoring metrics for Prometheus scraping&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="#pgbouncer_exporter"&gt;&lt;strong&gt;&lt;code&gt;pgbouncer_exporter&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Metrics&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Exports Pgbouncer connection pool metrics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="#pgbackrest_exporter"&gt;&lt;strong&gt;&lt;code&gt;pgbackrest_exporter&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Metrics&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Exports backup status metrics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="#vip-manager"&gt;&lt;strong&gt;&lt;code&gt;vip-manager&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;VIP&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Binds L2 VIP to current primary node for transparent failover [Optional]&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The &lt;a href="#vip-manager"&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</title><link>https://pigsty.io/docs/concept/pitr/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/concept/pitr/</guid><description>&lt;blockquote&gt;
&lt;p&gt;When you accidentally delete data, tables, or even the entire database, PITR lets you return to any point in time and avoid data loss from software defects and human error.&lt;/p&gt;
&lt;p&gt;— This &amp;ldquo;magic&amp;rdquo; once reserved for senior DBAs is now available out of the box to everyone.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Pigsty&amp;rsquo;s PostgreSQL clusters come with auto-configured Point-in-Time Recovery (PITR) capability, powered by the backup component &lt;a href="https://pgbackrest.org/"&gt;&lt;strong&gt;pgBackRest&lt;/strong&gt;&lt;/a&gt; and optional object storage repository &lt;a href="https://min.io/"&gt;&lt;strong&gt;MinIO&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://pigsty.io/docs/concept/ha"&gt;&lt;strong&gt;High availability solutions&lt;/strong&gt;&lt;/a&gt; can address hardware failures but are powerless against data deletion/overwriting/database drops caused by software defects and human errors.
For such situations, Pigsty provides out-of-the-box &lt;strong&gt;Point-in-Time Recovery&lt;/strong&gt; (PITR) capability, enabled by default without additional configuration.&lt;/p&gt;</description></item><item><title>RTO Trade-offs</title><link>https://pigsty.io/docs/concept/ha/rto/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&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;
&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.
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://pigsty.io/docs/concept/pitr/mechanism/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/concept/pitr/mechanism/</guid><description>&lt;p&gt;The core principle of PITR is: &lt;strong&gt;base backup + WAL archiving = recover to any point in time&lt;/strong&gt;.
In Pigsty, this is implemented by &lt;strong&gt;pgBackRest&lt;/strong&gt;, running &lt;strong&gt;scheduled backups + WAL archiving&lt;/strong&gt; automatically.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="three-elements"&gt;Three Elements&lt;/h2&gt;
&lt;table class="full-width"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Element&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Purpose&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Pigsty Implementation&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;Base Backup&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Provides a consistent physical snapshot, recovery starting point&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pg-backup&lt;/code&gt; + &lt;code&gt;pgbackrest&lt;/code&gt; + &lt;a href="https://pigsty.io/docs/pgsql/param#pg_crontab"&gt;&lt;code&gt;pg_crontab&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;WAL Archiving&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Records all changes after backup, defines recovery path&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;archive_mode=on&lt;/code&gt; + &lt;code&gt;archive_command=pgbackrest ... archive-push&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;Recovery Target&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Specifies where to stop recovery&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pg_pitr&lt;/code&gt; params / &lt;code&gt;pg-pitr&lt;/code&gt; script / &lt;code&gt;pgbackrest restore&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="base-backup"&gt;Base Backup&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Base backup&lt;/strong&gt; is a physical snapshot at a point in time, the starting point of PITR. Pigsty uses &lt;code&gt;pgBackRest&lt;/code&gt; and provides &lt;code&gt;pg-backup&lt;/code&gt; wrapper for common ops.&lt;/p&gt;</description></item><item><title>PITR Architecture</title><link>https://pigsty.io/docs/concept/pitr/arch/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/concept/pitr/arch/</guid><description>&lt;p&gt;Pigsty uses &lt;a href="https://pgbackrest.org/"&gt;&lt;strong&gt;pgBackRest&lt;/strong&gt;&lt;/a&gt; as the PostgreSQL backup and recovery engine, providing out-of-the-box Point-in-Time Recovery (PITR).&lt;/p&gt;
&lt;p&gt;This page explains the architecture: &lt;strong&gt;who runs backups, where data flows, how repositories are organized, and how continuity is kept after failover&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;PITR architecture has three main pipelines: &lt;strong&gt;backup execution&lt;/strong&gt;, &lt;strong&gt;WAL archiving&lt;/strong&gt;, &lt;strong&gt;restore execution&lt;/strong&gt;.&lt;/p&gt;
&lt;table class="full-width"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Pipeline&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Entry&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Engine&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Destination&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Backup&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pg-backup&lt;/code&gt; + &lt;code&gt;pg_crontab&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pgbackrest backup&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;repo &lt;code&gt;backup/&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;WAL Archive&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostgreSQL &lt;code&gt;archive_command&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pgbackrest archive-push&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;repo &lt;code&gt;archive/&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Restore&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pg_pitr&lt;/code&gt; / &lt;code&gt;pg-pitr&lt;/code&gt; / &lt;code&gt;pgsql-pitr.yml&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pgbackrest restore&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;target data directory&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;See &lt;a href="https://pigsty.io/docs/pgsql/backup/mechanism/"&gt;&lt;strong&gt;Backup Mechanism&lt;/strong&gt;&lt;/a&gt; and &lt;a href="https://pigsty.io/docs/pgsql/backup/restore/"&gt;&lt;strong&gt;Restore Operations&lt;/strong&gt;&lt;/a&gt; for details.&lt;/p&gt;</description></item><item><title>PITR Tradeoffs</title><link>https://pigsty.io/docs/concept/pitr/tradeoff/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/concept/pitr/tradeoff/</guid><description>&lt;p&gt;When designing a PITR strategy, the core tradeoffs are:
&lt;strong&gt;backup repository location&lt;/strong&gt;, &lt;strong&gt;recovery window length&lt;/strong&gt;, and &lt;strong&gt;restore speed vs storage cost&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This page helps you make practical choices across these dimensions.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="local-vs-remote"&gt;Local vs Remote&lt;/h2&gt;
&lt;p&gt;Repository location is the first decision in PITR strategy.&lt;/p&gt;
&lt;h3 id="local-repository"&gt;Local Repository&lt;/h3&gt;
&lt;p&gt;Store backups on primary local disk (&lt;code&gt;pgbackrest_method = local&lt;/code&gt;):&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Simple, out-of-the-box&lt;/li&gt;
&lt;li&gt;Fast restore (local I/O)&lt;/li&gt;
&lt;li&gt;No external dependency&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No geo-DR; backups may be lost with host&lt;/li&gt;
&lt;li&gt;Limited by local disk capacity&lt;/li&gt;
&lt;li&gt;Same failure domain as production data&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="remote-repository"&gt;Remote Repository&lt;/h3&gt;
&lt;p&gt;Store backups on MinIO / S3 (&lt;code&gt;pgbackrest_method = minio|s3&lt;/code&gt;):&lt;/p&gt;</description></item><item><title>PITR Scenarios</title><link>https://pigsty.io/docs/concept/pitr/scenarios/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/concept/pitr/scenarios/</guid><description>&lt;p&gt;The value of PITR is not just “rolling back a database”, but &lt;strong&gt;turning irreversible human/software mistakes into recoverable problems&lt;/strong&gt;.
It covers cases from “drop one table” to “entire site down”, addressing &lt;strong&gt;logical errors and disaster recovery&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;PITR addresses these scenarios:&lt;/p&gt;
&lt;table class="full-width"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Scenario Type&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Typical Problem&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Recommended Strategy&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Recovery Target&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Accidental DML&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;DELETE/UPDATE&lt;/code&gt; without &lt;code&gt;WHERE&lt;/code&gt;, script mistake&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Branch restore first&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;time&lt;/code&gt; / &lt;code&gt;xid&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;DDL drops&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;DROP TABLE/DATABASE&lt;/code&gt;, bad migration&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Branch restore&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;time&lt;/code&gt; / &lt;code&gt;name&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Batch errors / bad release&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Buggy release pollutes data&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Branch restore + verify&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;time&lt;/code&gt; / &lt;code&gt;xid&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Audit / investigation&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Need to inspect historical state&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Branch restore (read-only)&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;time&lt;/code&gt; / &lt;code&gt;lsn&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Site disaster / total loss&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Hardware failure, ransomware, power outage&lt;/td&gt;
 &lt;td style="text-align: left"&gt;In-place or rebuild&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;latest&lt;/code&gt; / &lt;code&gt;time&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="a-simple-rule-of-thumb"&gt;A Simple Rule of Thumb&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;If writes already caused business errors, consider PITR.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Need online verification or partial recovery → branch restore.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Need service restored ASAP → in-place restore&lt;/strong&gt; (accept downtime).&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="mermaid"&gt;flowchart TD
 A[&amp;#34;Issue discovered&amp;#34;] --&amp;gt; B{&amp;#34;Downtime allowed?&amp;#34;}
 B --&amp;gt;|Yes| C[&amp;#34;In-place restore&amp;lt;br/&amp;gt;shortest path&amp;#34;]
 B --&amp;gt;|No| D[&amp;#34;Branch restore&amp;lt;br/&amp;gt;verify then switch&amp;#34;]
 C --&amp;gt; E[&amp;#34;Rebuild backups after restore&amp;#34;]
 D --&amp;gt; F[&amp;#34;Verify / export / cut traffic&amp;#34;]&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id="scenario-details"&gt;Scenario Details&lt;/h2&gt;
&lt;h3 id="accidental-dml-deleteupdate"&gt;Accidental DML (Delete/Update)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Typical issues&lt;/strong&gt;:&lt;/p&gt;</description></item><item><title>Service Access</title><link>https://pigsty.io/docs/concept/ha/svc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/concept/ha/svc/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Split read and write operations, route traffic correctly, and deliver PostgreSQL cluster capabilities reliably.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="#service-overview"&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;
&lt;p&gt;Services are crucial for &lt;a href="#access-services"&gt;stable access&lt;/a&gt; in production environments, showing their value during automatic failover in &lt;a href="https://pigsty.io/docs/concept/ha"&gt;high availability&lt;/a&gt; clusters. &lt;a href="#personal-users"&gt;Personal users&lt;/a&gt; typically don&amp;rsquo;t need to worry about this concept.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="personal-users"&gt;Personal Users&lt;/h2&gt;
&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://pigsty.io/docs/concept/sec/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/concept/sec/</guid><description>&lt;p&gt;Pigsty&amp;rsquo;s security goals are the &lt;strong&gt;CIA triad&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Confidentiality&lt;/strong&gt;: prevent unauthorized access and leakage&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integrity&lt;/strong&gt;: prevent tampering or silent corruption&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Availability&lt;/strong&gt;: prevent outages from failures&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pigsty&amp;rsquo;s security philosophy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Secure by default&lt;/strong&gt;: out-of-the-box baseline with minimal config and broad coverage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Defense in depth&lt;/strong&gt;: layered protections so one breach does not collapse the system.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Least privilege&lt;/strong&gt;: roles and privileges enforce least-privilege by default.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compliance-ready&lt;/strong&gt;: security capabilities plus process can meet audits.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="default-security-baseline-what-problems-it-solves"&gt;Default Security Baseline (What Problems It Solves)&lt;/h2&gt;
&lt;table class="full-width"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Security Option&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Default&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Problems Solved&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Password encryption&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pg_pwd_enc: scram-sha-256&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Prevent weak hashes and plaintext leakage&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Data checksums&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pg_checksum: true&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Detect silent data corruption&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;HBA layering&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Admin from internet must use &lt;code&gt;ssl&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Prevent plaintext access from the public network&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Local CA&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;ca_create: true&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Unified certificate trust chain&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Backup &amp;amp; recovery&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pgbackrest_enabled: true&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Prevent data loss from mistakes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Nginx HTTPS&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;nginx_sslmode: enable&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Prevent plaintext web ingress&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;MinIO HTTPS&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;minio_https: true&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Prevent backup traffic snooping&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;OS baseline&lt;/td&gt;
 &lt;td style="text-align: left"&gt;SELinux &lt;code&gt;permissive&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Baseline for enforcing mode&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;Defaults prioritize usability and scalability. Production should be hardened to meet compliance needs.&lt;/p&gt;</description></item><item><title>Seven-Layer Security Model</title><link>https://pigsty.io/docs/concept/sec/level/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/concept/sec/level/</guid><description>&lt;p&gt;Security is not a wall, but a city. Pigsty adopts a &lt;strong&gt;defense-in-depth&lt;/strong&gt; strategy and builds multiple protections across seven layers. Even if one layer is breached, other layers still protect the system.&lt;/p&gt;
&lt;p&gt;This layered approach addresses three core risks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Perimeter breach&lt;/strong&gt;: reduce the chance that one breach compromises everything.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Internal abuse&lt;/strong&gt;: even if an internal account is compromised, least privilege limits damage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unpredictable failures&lt;/strong&gt;: hardware, software, and human errors all get multi-layer fallbacks.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;div id="infographic-2b8a98a4fbecac1e9b86580f72ea842f" class="infographic-container td-max-width-on-larger-screens"&gt;&lt;/div&gt;

&lt;script&gt;
(function() {
 var containerId = 'infographic-2b8a98a4fbecac1e9b86580f72ea842f';
 var syntax = "````\ninfographic sequence-pyramid-simple\ndata\n title Seven-Layer Security Model\n desc Pigsty defense-in-depth: multi-layer protection from physical to user\n items\n - label Physical and Media\n value 100\n desc Data checksums · media theft protection\n time L1\n icon mingcute/building-4-fill\n illus server-cluster\n - label Network Security\n value 95\n desc Firewall · listen hardening · TLS\n time L2\n icon mingcute/earth-2-fill\n illus secure-server\n - label Perimeter Security\n value 90\n desc HAProxy · Nginx · unified ingress\n time L3\n icon mingcute/shield-fill\n illus firewall-protection\n - label Host Security\n value 85\n desc SELinux · least privilege · system hardening\n time L4\n icon mingcute/computer-fill\n illus server-status\n - label Application Security\n value 80\n desc HBA · SCRAM · password policy\n time L5\n icon mingcute/safe-box-fill\n illus database-security\n - label Data Security\n value 75\n desc Backup encryption · PITR · audit\n time L6\n icon mingcute/lock-fill\n illus data-encryption\n - label User Security\n value 70\n desc RBAC · default privileges · isolation\n time L7\n icon mingcute/user-security-fill\n illus user-flow\ntheme light\n palette pigsty\n````";

 function renderInfographic() {
 var dom = document.getElementById(containerId);
 if (!dom) { console.error('Infographic: container not found:', containerId); return; }
 try {
 var ig = new AntVInfographic.Infographic({
 container: '#' + containerId,
 width: dom.offsetWidth || '100%',
 height: 'auto',
 });
 ig.render(syntax);
 } catch (e) {
 console.error('Infographic render error:', e);
 dom.innerHTML = '&lt;pre style="color: red;"&gt;Infographic Error: ' + e.message + '&lt;/pre&gt;';
 }
 }

 
 if (typeof AntVInfographic !== 'undefined') {
 renderInfographic();
 } else if (!window._infographicLoading) {
 window._infographicLoading = true;
 window._infographicCallbacks = [renderInfographic];
 var script = document.createElement('script');
 script.src = '/js/infographic.min.js';
 script.onload = function() {
 window._infographicCallbacks.forEach(function(cb) { cb(); });
 };
 document.head.appendChild(script);
 } else {
 window._infographicCallbacks.push(renderInfographic);
 }
})();
&lt;/script&gt;

&lt;hr&gt;
&lt;h2 id="l1-physical-and-media-security"&gt;L1 Physical and Media Security&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;When the physical layer falls, the only defense is the data itself.&lt;/p&gt;</description></item><item><title>Authentication</title><link>https://pigsty.io/docs/concept/sec/auth/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/concept/sec/auth/</guid><description>&lt;p&gt;Authentication answers three core questions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Who you are&lt;/strong&gt;: is the identity unique and recognizable?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How you prove it&lt;/strong&gt;: are passwords/certs strong enough?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Where you come from&lt;/strong&gt;: is the source controlled?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pigsty uses &lt;strong&gt;HBA rules + password/certificates&lt;/strong&gt; for authentication, with SCRAM as the default password hash.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="authentication-flow"&gt;Authentication Flow&lt;/h2&gt;
&lt;pre class="mermaid"&gt;flowchart LR
 C[Client] --&amp;gt; HBA[HBA Rules]
 HBA --&amp;gt; A1[Password SCRAM]
 HBA --&amp;gt; A2[Certificate Auth]
 HBA --&amp;gt; A3[Local ident/peer]
 A1 --&amp;gt; RBAC[Roles and Privileges]
 A2 --&amp;gt; RBAC
 A3 --&amp;gt; RBAC&lt;/pre&gt;
&lt;p&gt;HBA decides &amp;ldquo;&lt;strong&gt;who can come from where&lt;/strong&gt;&amp;rdquo;, and the auth method decides &amp;ldquo;&lt;strong&gt;how identity is proven&lt;/strong&gt;&amp;rdquo;.&lt;/p&gt;</description></item><item><title>Access Control</title><link>https://pigsty.io/docs/concept/sec/ac/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/concept/sec/ac/</guid><description>&lt;p&gt;Access control answers two core questions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;What you can do&lt;/strong&gt;: boundaries for read/write/DDL&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What data you can access&lt;/strong&gt;: isolation across databases and schemas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pigsty enforces least privilege with &lt;strong&gt;RBAC roles + default privileges&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="four-tier-role-model"&gt;Four-Tier Role Model&lt;/h2&gt;
&lt;pre class="mermaid"&gt;flowchart TB
 subgraph Admin[&amp;#34;dbrole_admin (Admin)&amp;#34;]
 A1[&amp;#34;Can run DDL / CREATE / ALTER&amp;#34;]
 A2[&amp;#34;Inherits dbrole_readwrite&amp;#34;]
 end
 subgraph RW[&amp;#34;dbrole_readwrite (Read-Write)&amp;#34;]
 RW1[&amp;#34;Can INSERT/UPDATE/DELETE&amp;#34;]
 RW2[&amp;#34;Inherits dbrole_readonly&amp;#34;]
 end
 subgraph RO[&amp;#34;dbrole_readonly (Read-Only)&amp;#34;]
 RO1[&amp;#34;Can SELECT all tables&amp;#34;]
 end
 subgraph Offline[&amp;#34;dbrole_offline (Offline)&amp;#34;]
 OFF1[&amp;#34;Only for offline instances&amp;#34;]
 end

 Admin --&amp;gt; RW --&amp;gt; RO&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Problems solved&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Encrypted Communication and Local CA</title><link>https://pigsty.io/docs/concept/sec/ca/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/concept/sec/ca/</guid><description>&lt;p&gt;Encrypted communication solves three problems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Eavesdropping&lt;/strong&gt;: prevent plaintext traffic sniffing&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tampering&lt;/strong&gt;: prevent MITM modification&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impersonation&lt;/strong&gt;: prevent fake servers/clients&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pigsty uses a &lt;strong&gt;local CA + TLS&lt;/strong&gt; to provide a unified trust root for databases and infrastructure components.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="role-of-the-local-ca"&gt;Role of the Local CA&lt;/h2&gt;
&lt;p&gt;Pigsty generates a self-signed CA on the admin node by default:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;files/pki/ca/ca.key # CA private key (must be protected)
files/pki/ca/ca.crt # CA root certificate (distributable)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Default values in source:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ca_create: true&lt;/code&gt;: auto-generate if CA not found.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ca_cn: pigsty-ca&lt;/code&gt;: CA certificate CN fixed to &lt;code&gt;pigsty-ca&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Root cert validity about 100 years (self-signed).&lt;/li&gt;
&lt;li&gt;Server/client cert validity &lt;code&gt;cert_validity: 7300d&lt;/code&gt; (20 years).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="certificate-coverage"&gt;Certificate Coverage&lt;/h2&gt;
&lt;p&gt;The local CA issues certs for multiple components with a unified trust chain:&lt;/p&gt;</description></item><item><title>Data Security</title><link>https://pigsty.io/docs/concept/sec/data/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/concept/sec/data/</guid><description>&lt;p&gt;Data security focuses on three things: &lt;strong&gt;integrity, recoverability, confidentiality&lt;/strong&gt;. Pigsty enables key capabilities by default and supports further hardening.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="data-integrity"&gt;Data Integrity&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Problems solved&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Silent corruption from bad disks or memory errors&lt;/li&gt;
&lt;li&gt;Accidental writes causing data pollution&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Pigsty support&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Data checksums&lt;/strong&gt;: default &lt;code&gt;pg_checksum: true&lt;/code&gt;, enables &lt;code&gt;data-checksums&lt;/code&gt; at init.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Replica fallback&lt;/strong&gt;: recover bad blocks from replicas (with HA).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="recoverability-backup-and-pitr"&gt;Recoverability (Backup and PITR)&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Problems solved&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Accidental deletion or modification&lt;/li&gt;
&lt;li&gt;Disaster-level data loss&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Pigsty support&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Compliance Checklist</title><link>https://pigsty.io/docs/concept/sec/compliance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/concept/sec/compliance/</guid><description>&lt;p&gt;Compliance is not a switch, but a combination of &lt;strong&gt;configuration + process + evidence&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Configuration&lt;/strong&gt;: are security capabilities enabled (HBA/TLS/audit/backup)?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Process&lt;/strong&gt;: access management, change control, backup drills&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evidence&lt;/strong&gt;: logs, config snapshots, backup reports, monitoring alerts&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This page uses SOC2 and MLPS Level 3 as entry points to map Pigsty&amp;rsquo;s security capabilities and compliance evidence.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="default-credentials-checklist-must-change"&gt;Default Credentials Checklist (Must Change)&lt;/h2&gt;
&lt;p&gt;From source defaults:&lt;/p&gt;
&lt;table class="full-width"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Component&lt;/th&gt;
 &lt;th&gt;Default Username&lt;/th&gt;
 &lt;th&gt;Default Password&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;PostgreSQL Admin&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;dbuser_dba&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;DBUser.DBA&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;PostgreSQL Monitor&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;dbuser_monitor&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;DBUser.Monitor&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;PostgreSQL Replication&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;replicator&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;DBUser.Replicator&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Patroni API&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;postgres&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Patroni.API&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;HAProxy Admin&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;admin&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;pigsty&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Grafana Admin&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;admin&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;pigsty&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;MinIO Root&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;minioadmin&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;S3User.MinIO&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;etcd Root&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;root&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Etcd.Root&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Must change all defaults in production.&lt;/p&gt;</description></item><item><title>Getting Started with PostgreSQL</title><link>https://pigsty.io/docs/setup/pgsql/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/setup/pgsql/</guid><description>&lt;p&gt;&lt;a href="https://www.postgresql.org/"&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;
&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;
&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="https://pigsty.io/docs/pgsql/service/"&gt;&lt;strong&gt;Prod Service Access&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="basics"&gt;Basics&lt;/h2&gt;
&lt;p&gt;In the default &lt;a href="https://pigsty.io/docs/setup/install"&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>Extensions</title><link>https://pigsty.io/docs/ref/extension/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/ref/extension/</guid><description>&lt;p&gt;Pigsty extension data is synchronized from &lt;code&gt;~/pgsty/pgext/content/list/ext.md&lt;/code&gt; and &lt;code&gt;~/pgsty/pgext/db/extension.csv&lt;/code&gt;. For full details, see &lt;a href="https://pigsty.io/ext/list/"&gt;&lt;strong&gt;PGEXT.CLOUD&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There are currently &lt;strong&gt;510&lt;/strong&gt; available PostgreSQL extensions.&lt;/p&gt;
&lt;h3 id="time"&gt;TIME&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Extension&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Version&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Category&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/timescaledb/"&gt;timescaledb&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.25.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TIME&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Enables scalable inserts and complex queries for time-series data&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/timescaledb_toolkit/"&gt;timescaledb_toolkit&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.22.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TIME&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Library of analytical hyperfunctions, time-series pipelining, and other SQL utilities&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/timeseries/"&gt;timeseries&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.2.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TIME&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Convenience API for time series stack&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/periods/"&gt;periods&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.2.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TIME&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Provide Standard SQL functionality for PERIODs and SYSTEM VERSIONING&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/temporal_tables/"&gt;temporal_tables&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.2.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TIME&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;temporal tables&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/emaj/"&gt;emaj&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;4.7.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TIME&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Enables fine-grained write logging and time travel on subsets of the database.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/table_version/"&gt;table_version&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.11.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TIME&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostgreSQL table versioning extension&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_cron/"&gt;pg_cron&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.6.7&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TIME&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Job scheduler for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_task/"&gt;pg_task&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TIME&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;execute any sql command at any specific time at background&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_later/"&gt;pg_later&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.4.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TIME&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Run queries now and get results later&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_background/"&gt;pg_background&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.8&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TIME&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Run SQL queries in the background&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="gis"&gt;GIS&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Extension&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Version&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Category&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/postgis/"&gt;postgis&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;3.6.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;GIS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostGIS geometry and geography spatial types and functions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/postgis_topology/"&gt;postgis_topology&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;3.6.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;GIS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostGIS topology spatial types and functions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/postgis_raster/"&gt;postgis_raster&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;3.6.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;GIS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostGIS raster types and functions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/postgis_sfcgal/"&gt;postgis_sfcgal&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;3.6.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;GIS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostGIS SFCGAL functions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/postgis_tiger_geocoder/"&gt;postgis_tiger_geocoder&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;3.6.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;GIS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostGIS tiger geocoder and reverse geocoder&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/address_standardizer/"&gt;address_standardizer&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;3.6.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;GIS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Used to parse an address into constituent elements. Generally used to support geocoding address normalization step.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/address_standardizer_data_us/"&gt;address_standardizer_data_us&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;3.6.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;GIS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Address Standardizer US dataset example&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgrouting/"&gt;pgrouting&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;4.0.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;GIS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;pgRouting Extension&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pointcloud/"&gt;pointcloud&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.2.5&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;GIS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;data type for lidar point clouds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pointcloud_postgis/"&gt;pointcloud_postgis&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.2.5&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;GIS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;integration for pointcloud LIDAR data and PostGIS geometry data&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/h3/"&gt;h3&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;4.2.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;GIS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;H3 bindings for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/h3_postgis/"&gt;h3_postgis&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;4.2.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;GIS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;H3 PostGIS integration&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/q3c/"&gt;q3c&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.0.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;GIS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;q3c sky indexing plugin&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/ogr_fdw/"&gt;ogr_fdw&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1.7&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;GIS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;foreign-data wrapper for GIS data access&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/geoip/"&gt;geoip&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.3.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;GIS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;IP-based geolocation query&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_polyline/"&gt;pg_polyline&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.0.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;GIS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Fast Google Encoded Polyline encoding &amp;amp; decoding for postgres&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_eviltransform/"&gt;pg_eviltransform&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.0.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;GIS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;BD09/GCJ02 coordinate transformation based on PostGIS ST_Transform&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_geohash/"&gt;pg_geohash&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;GIS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Handle geohash based functionality for spatial coordinates&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/mobilitydb/"&gt;mobilitydb&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.3.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;GIS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;MobilityDB geospatial trajectory data management &amp;amp; analysis platform&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/mobilitydb_datagen/"&gt;mobilitydb_datagen&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.3.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;GIS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;MobilityDB random data generator functions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/tzf/"&gt;tzf&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.2.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;GIS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Fast lookup timezone name by GPS coordinates&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/earthdistance/"&gt;earthdistance&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;GIS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;calculate great-circle distances on the surface of the Earth&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="rag"&gt;RAG&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Extension&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Version&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Category&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/vector/"&gt;vector&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.8.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;RAG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;vector data type and ivfflat and hnsw access methods&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/vchord/"&gt;vchord&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;RAG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Vector database plugin for Postgres, written in Rust&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/vectorscale/"&gt;vectorscale&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.9.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;RAG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Advanced indexing for vector data with DiskANN&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/vectorize/"&gt;vectorize&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.26.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;RAG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;The simplest way to do vector search on Postgres&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_similarity/"&gt;pg_similarity&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;RAG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;support similarity queries&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/smlar/"&gt;smlar&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;RAG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Effective similarity search&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_summarize/"&gt;pg_summarize&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.0.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;RAG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Text Summarization using LLMs. Built using pgrx&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_tiktoken/"&gt;pg_tiktoken&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.0.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;RAG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;tiktoken tokenizer for use with OpenAI models in postgres&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg4ml/"&gt;pg4ml&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;RAG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Machine learning framework for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgml/"&gt;pgml&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.10.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;RAG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Run AL/ML workloads with SQL interface&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="fts"&gt;FTS&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Extension&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Version&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Category&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_search/"&gt;pg_search&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.21.12&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FTS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Full text search for PostgreSQL using BM25&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgroonga/"&gt;pgroonga&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;4.0.4&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FTS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Use Groonga as index, fast full text search platform for all languages!&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgroonga_database/"&gt;pgroonga_database&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;4.0.4&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FTS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PGroonga database management module&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_bigm/"&gt;pg_bigm&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FTS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;create 2-gram (bigram) index for faster full text search.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/zhparser/"&gt;zhparser&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FTS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;a parser for full-text search of Chinese&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_bestmatch/"&gt;pg_bestmatch&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.0.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FTS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Generate BM25 sparse vector inside PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/vchord_bm25/"&gt;vchord_bm25&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.3.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FTS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;A postgresql extension for bm25 ranking algorithm&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_tokenizer/"&gt;pg_tokenizer&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FTS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Tokenizers for full-text search&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/biscuit/"&gt;biscuit&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.2.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FTS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;IAM-LIKE pattern matching with bitmap indexing&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_textsearch/"&gt;pg_textsearch&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.5.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FTS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Full-text search with BM25 ranking&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_pinyin/"&gt;pg_pinyin&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.0.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FTS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostgreSQL Pinyin transliteration and search extension&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/hunspell_cs_cz/"&gt;hunspell_cs_cz&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FTS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Czech Hunspell Dictionary&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/hunspell_de_de/"&gt;hunspell_de_de&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FTS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;German Hunspell Dictionary&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/hunspell_en_us/"&gt;hunspell_en_us&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FTS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;en_US Hunspell Dictionary&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/hunspell_fr/"&gt;hunspell_fr&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FTS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;French Hunspell Dictionary&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/hunspell_ne_np/"&gt;hunspell_ne_np&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FTS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Nepali Hunspell Dictionary&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/hunspell_nl_nl/"&gt;hunspell_nl_nl&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FTS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Dutch Hunspell Dictionary&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/hunspell_nn_no/"&gt;hunspell_nn_no&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FTS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Norwegian (norsk) Hunspell Dictionary&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/hunspell_pt_pt/"&gt;hunspell_pt_pt&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FTS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Portuguese Hunspell Dictionary&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/hunspell_ru_ru/"&gt;hunspell_ru_ru&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FTS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Russian Hunspell Dictionary&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/hunspell_ru_ru_aot/"&gt;hunspell_ru_ru_aot&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FTS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Russian Hunspell Dictionary (from AOT.ru group)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/fuzzystrmatch/"&gt;fuzzystrmatch&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FTS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;determine similarities and distance between strings&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_trgm/"&gt;pg_trgm&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.6&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FTS&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;text similarity measurement and index searching based on trigrams&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="olap"&gt;OLAP&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Extension&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Version&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Category&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/citus/"&gt;citus&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;14.0.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;OLAP&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Distributed PostgreSQL as an extension&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/citus_columnar/"&gt;citus_columnar&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;14.0.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;OLAP&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Citus columnar storage engine&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/columnar/"&gt;columnar&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;OLAP&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Hydra Columnar extension&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_analytics/"&gt;pg_analytics&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.3.7&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;OLAP&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Postgres for analytics, powered by DuckDB&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_duckdb/"&gt;pg_duckdb&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;OLAP&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;DuckDB Embedded in Postgres&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_mooncake/"&gt;pg_mooncake&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.2.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;OLAP&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Columnstore Table in Postgres&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_clickhouse/"&gt;pg_clickhouse&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.4&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;OLAP&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Interfaces to query ClickHouse databases from PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/duckdb_fdw/"&gt;duckdb_fdw&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;OLAP&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;DuckDB Foreign Data Wrapper&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_parquet/"&gt;pg_parquet&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.5.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;OLAP&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;copy data between Postgres and Parquet&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_fkpart/"&gt;pg_fkpart&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.7.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;OLAP&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Table partitioning by foreign key utility&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_partman/"&gt;pg_partman&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;5.4.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;OLAP&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Extension to manage partitioned tables by time or ID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/plproxy/"&gt;plproxy&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.11.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;OLAP&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Database partitioning implemented as procedural language&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_strom/"&gt;pg_strom&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;6.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;OLAP&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PG-Strom - big-data processing acceleration using GPU and NVME&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/tablefunc/"&gt;tablefunc&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;OLAP&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;functions that manipulate whole tables, including crosstab&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="feat"&gt;FEAT&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Extension&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Version&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Category&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/age/"&gt;age&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.7.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;AGE graph database extension&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/hll/"&gt;hll&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.19&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;type for storing hyperloglog data&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/rum/"&gt;rum&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.3.15&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;RUM index access method&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_ai_query/"&gt;pg_ai_query&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;AI-powered SQL query generation for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_ttl_index/"&gt;pg_ttl_index&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.0.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Automatic data expiration with TTL indexes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_graphql/"&gt;pg_graphql&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.5.12&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Add in-database GraphQL support&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_jsonschema/"&gt;pg_jsonschema&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.3.4&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostgreSQL extension providing JSON Schema validation&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/jsquery/"&gt;jsquery&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;data type for jsonb inspection&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_hint_plan/"&gt;pg_hint_plan&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.8.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Give PostgreSQL ability to manually force some decisions in execution plans.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/hypopg/"&gt;hypopg&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.4.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Hypothetical indexes for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/index_advisor/"&gt;index_advisor&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.2.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Query index advisor&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/plan_filter/"&gt;plan_filter&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.0.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;filter statements by their execution plans.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/imgsmlr/"&gt;imgsmlr&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Image similarity with haar&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_ivm/"&gt;pg_ivm&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.13&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;incremental view maintenance on PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_incremental/"&gt;pg_incremental&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.4.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Incremental Processing by Crunchy Data&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgmb/"&gt;pgmb&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;A simple PostgreSQL Message Broker system&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgmq/"&gt;pgmq&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.11.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;A lightweight message queue. Like AWS SQS and RSMQ but on Postgres.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgq/"&gt;pgq&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;3.5.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Generic queue for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/orioledb/"&gt;orioledb&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.6&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;OrioleDB, the next generation transactional engine&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_cardano/"&gt;pg_cardano&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;A suite of Cardano-related tools&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/rdkit/"&gt;rdkit&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;202503.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Cheminformatics functionality for PostgreSQL.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni/"&gt;omni&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.2.14&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Advanced adapter for Postgres extensions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_auth/"&gt;omni_auth&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Basic session management&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_aws/"&gt;omni_aws&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Amazon Web Services APIs (S3)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_cloudevents/"&gt;omni_cloudevents&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;CloudEvents support&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_containers/"&gt;omni_containers&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.2.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Docker container management&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_credentials/"&gt;omni_credentials&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.2.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Application credential management&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_csv/"&gt;omni_csv&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;CSV toolkit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_datasets/"&gt;omni_datasets&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Dataset provisioning&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_email/"&gt;omni_email&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;E-mail framework&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_http/"&gt;omni_http&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Basic HTTP types&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_httpc/"&gt;omni_httpc&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.10&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;HTTP client&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_httpd/"&gt;omni_httpd&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.4.11&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;HTTP server&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_id/"&gt;omni_id&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.4.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Identity types&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_json/"&gt;omni_json&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;JSON toolkit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_kube/"&gt;omni_kube&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.4.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Kubernetes (k8s) integration&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_ledger/"&gt;omni_ledger&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Financial ledger&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_manifest/"&gt;omni_manifest&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Package installation manifests&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_mimetypes/"&gt;omni_mimetypes&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;MIME types&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_os/"&gt;omni_os&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Operating system integration&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_polyfill/"&gt;omni_polyfill&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.2.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Postgres API polyfills&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_python/"&gt;omni_python&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;First-class Python support&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_regex/"&gt;omni_regex&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PCRE-compatible regular expressions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_rest/"&gt;omni_rest&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;REST API toolkit (with PostgREST support)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_schema/"&gt;omni_schema&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.3.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Advanced schema management tooling&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_seq/"&gt;omni_seq&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Distributed integer sequences&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_service/"&gt;omni_service&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Service management&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_session/"&gt;omni_session&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.2.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Session management&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_shmem/"&gt;omni_shmem&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Shared Memory Management&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_sql/"&gt;omni_sql&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.5.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Programmatic SQL manipulation&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_sqlite/"&gt;omni_sqlite&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.2.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Embedded SQLite&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_test/"&gt;omni_test&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.4.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Testing framework&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_txn/"&gt;omni_txn&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.5.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Transaction management&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_types/"&gt;omni_types&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.3.6&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Advanced types&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_var/"&gt;omni_var&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.3.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Scoped variables&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_vfs/"&gt;omni_vfs&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.2.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Virtual File System&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_vfs_types_v1/"&gt;omni_vfs_types_v1&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Virtual File System types (v1)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_web/"&gt;omni_web&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.3.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Common web stack primitives&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_worker/"&gt;omni_worker&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.2.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Generalized worker pool&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_xml/"&gt;omni_xml&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;XML toolkit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omni_yaml/"&gt;omni_yaml&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;YAML toolkit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/bloom/"&gt;bloom&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FEAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;bloom access method - signature file based index&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="lang"&gt;LANG&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Extension&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Version&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Category&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_tle/"&gt;pg_tle&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.5.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Trusted Language Extensions for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/plv8/"&gt;plv8&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;3.2.4&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PL/JavaScript (v8) trusted procedural language&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pljs/"&gt;pljs&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.5&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PL/JS trusted procedural language&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pllua/"&gt;pllua&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.0.12&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Lua as a procedural language&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/hstore_pllua/"&gt;hstore_pllua&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.0.12&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Hstore transform for Lua&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/plluau/"&gt;plluau&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.0.12&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Lua as an untrusted procedural language&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/hstore_plluau/"&gt;hstore_plluau&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.0.12&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Hstore transform for untrusted Lua&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/plprql/"&gt;plprql&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;18.0.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Use PRQL in PostgreSQL - Pipelined Relational Query Language&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pldbgapi/"&gt;pldbgapi&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.9&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;server-side support for debugging PL/pgSQL functions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/plpgsql_check/"&gt;plpgsql_check&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.8.11&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;extended check for plpgsql functions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/plprofiler/"&gt;plprofiler&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;4.2.5&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;server-side support for profiling PL/pgSQL functions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/plsh/"&gt;plsh&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.20220917&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PL/sh procedural language&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pljava/"&gt;pljava&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.6.10&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PL/Java procedural language&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/plr/"&gt;plr&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;8.4.8&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;load R interpreter and execute R script from within a database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/plxslt/"&gt;plxslt&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.20140221&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;XSLT procedural language for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgtap/"&gt;pgtap&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.3.4&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Unit testing for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/faker/"&gt;faker&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.5.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Wrapper for the Faker Python library&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/dbt2/"&gt;dbt2&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.61.7&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;OSDL-DBT-2 test kit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pltcl/"&gt;pltcl&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PL/Tcl procedural language&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pltclu/"&gt;pltclu&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PL/TclU untrusted procedural language&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/plperl/"&gt;plperl&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PL/Perl procedural language&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/bool_plperl/"&gt;bool_plperl&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;transform between bool and plperl&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/hstore_plperl/"&gt;hstore_plperl&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;transform between hstore and plperl&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/jsonb_plperl/"&gt;jsonb_plperl&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;transform between jsonb and plperl&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/plperlu/"&gt;plperlu&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PL/PerlU untrusted procedural language&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/bool_plperlu/"&gt;bool_plperlu&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;transform between bool and plperlu&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/jsonb_plperlu/"&gt;jsonb_plperlu&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;transform between jsonb and plperlu&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/hstore_plperlu/"&gt;hstore_plperlu&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;transform between hstore and plperlu&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/plpgsql/"&gt;plpgsql&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PL/pgSQL procedural language&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/plpython3u/"&gt;plpython3u&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PL/Python3U untrusted procedural language&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/jsonb_plpython3u/"&gt;jsonb_plpython3u&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;transform between jsonb and plpython3u&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/ltree_plpython3u/"&gt;ltree_plpython3u&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;transform between ltree and plpython3u&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/hstore_plpython3u/"&gt;hstore_plpython3u&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;LANG&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;transform between hstore and plpython3u&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="type"&gt;TYPE&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Extension&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Version&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Category&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/prefix/"&gt;prefix&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.2.10&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Prefix Range module for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/semver/"&gt;semver&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.41.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Semantic version data type&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/unit/"&gt;unit&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;7.10&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;SI units extension&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgpdf/"&gt;pgpdf&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PDF type with meta admin &amp;amp; Full-Text Search&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pglite_fusion/"&gt;pglite_fusion&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.0.6&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Embed an SQLite database in your PostgreSQL table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/md5hash/"&gt;md5hash&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;type for storing 128-bit binary data inline&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/asn1oid/"&gt;asn1oid&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.6&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;asn1oid extension&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/roaringbitmap/"&gt;roaringbitmap&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;support for Roaring Bitmaps&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgfaceting/"&gt;pgfaceting&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.2.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;fast faceting queries using an inverted index&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_sphere/"&gt;pg_sphere&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.5.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;spherical objects with useful functions, operators and index support&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/country/"&gt;country&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.0.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Country data type, ISO 3166-1&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_xenophile/"&gt;pg_xenophile&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.8.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;More than the bare necessities for PostgreSQL i18n and l10n.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/l10n_table_dependent_extension/"&gt;l10n_table_dependent_extension&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.8.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostgreSQL l10n toolbox&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/currency/"&gt;currency&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.0.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Custom PostgreSQL currency type in 1Byte&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/collection/"&gt;collection&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Memory optimized data type to be used inside of plpglsql func&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgmp/"&gt;pgmp&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.5&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Multiple Precision Arithmetic extension&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/numeral/"&gt;numeral&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;numeral datatypes extension&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_rational/"&gt;pg_rational&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.0.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;bigint fractions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/uint/"&gt;uint&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.20250815&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;unsigned integer types&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/uint128/"&gt;uint128&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.2.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Native uint128 type&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/hashtypes/"&gt;hashtypes&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.5&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;sha1, md5 and other data types for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/ip4r/"&gt;ip4r&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.4.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;IPv4/v6 and IPv4/v6 range index type for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_duration/"&gt;pg_duration&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;data type for representing durations&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/uri/"&gt;uri&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.20251029&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;URI Data type for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/emailaddr/"&gt;emailaddr&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Email address type for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/acl/"&gt;acl&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.4&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;ACL Data type&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/debversion/"&gt;debversion&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.2.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Debian version number data type&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_rrule/"&gt;pg_rrule&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.3.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;RRULE field type for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/timestamp9/"&gt;timestamp9&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.4.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;timestamp nanosecond resolution&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/chkpass/"&gt;chkpass&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;data type for auto-encrypted passwords&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/isn/"&gt;isn&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;data types for international product numbering standards&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/seg/"&gt;seg&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.4&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;data type for representing line segments or floating-point intervals&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/cube/"&gt;cube&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.5&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;data type for multidimensional cubes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/ltree/"&gt;ltree&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;data type for hierarchical tree-like structures&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/hstore/"&gt;hstore&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.8&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;data type for storing sets of (key, value) pairs&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/citext/"&gt;citext&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.6&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;data type for case-insensitive character strings&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/xml2/"&gt;xml2&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;TYPE&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;XPath querying and XSLT&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="util"&gt;UTIL&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Extension&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Version&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Category&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/gzip/"&gt;gzip&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;gzip and gunzip functions.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/bzip/"&gt;bzip&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Bzip compression and decompression&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/zstd/"&gt;zstd&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Zstandard compression algorithm implementation in PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/http/"&gt;http&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.7.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;HTTP client for PostgreSQL, allows web page retrieval inside the database.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_net/"&gt;pg_net&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.20.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Async HTTP Requests&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_curl/"&gt;pg_curl&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.4.5&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Run curl actions for data transfer in URL syntax&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_retry/"&gt;pg_retry&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Retry SQL statements on transient errors with exponential backoff&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgjq/"&gt;pgjq&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Use jq in Postgres&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgjwt/"&gt;pgjwt&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.2.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;JSON Web Token API for Postgresql&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_smtp_client/"&gt;pg_smtp_client&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.2.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostgreSQL extension to send email using SMTP&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_html5_email_address/"&gt;pg_html5_email_address&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.2.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostgreSQL email validation that is consistent with the HTML5 spec&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/url_encode/"&gt;url_encode&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.2.5&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;url_encode, url_decode functions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgsql_tweaks/"&gt;pgsql_tweaks&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Some functions and views for daily usage&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_extra_time/"&gt;pg_extra_time&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.0.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Some date time functions and operators that,&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgpcre/"&gt;pgpcre&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.20190509&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Perl Compatible Regular Expression functions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/icu_ext/"&gt;icu_ext&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.10.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Access ICU functions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgqr/"&gt;pgqr&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;QR Code generator from PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_protobuf/"&gt;pg_protobuf&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Protobuf support for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/envvar/"&gt;envvar&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Fetch the value of an environment variable&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/floatfile/"&gt;floatfile&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.3.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Simple file storage for arrays of floats&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_render/"&gt;pg_render&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Render HTML in SQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_readme/"&gt;pg_readme&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.7.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Generate a README.md document for a database extension or schema&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_readme_test_extension/"&gt;pg_readme_test_extension&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.7.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Test generating a README.md document for extension or schema&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/ddl_historization/"&gt;ddl_historization&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.0.7&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Historize the ddl changes inside PostgreSQL database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/data_historization/"&gt;data_historization&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PLPGSQL Script to historize data in partitioned table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/schedoc/"&gt;schedoc&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.0.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Cross documentation between Django and DBT projects&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/hashlib/"&gt;hashlib&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Stable hash functions for Postgres&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/xxhash/"&gt;xxhash&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.0.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;xxhash functions for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/shacrypt/"&gt;shacrypt&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Implements SHA256-CRYPT and SHA512-CRYPT password encryption schemes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/cryptint/"&gt;cryptint&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Encryption functions for int and bigint values&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pguecc/"&gt;pguecc&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;uECC bindings for Postgres&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/sparql/"&gt;sparql&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;UTIL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Query SPARQL datasource with SQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="func"&gt;FUNC&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Extension&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Version&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Category&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_idkit/"&gt;pg_idkit&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.4.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;multi-tool for generating new/niche universally unique identifiers (ex. UUIDv6, ULID, KSUID)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgx_ulid/"&gt;pgx_ulid&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.2.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;ulid type and methods&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_uuidv7/"&gt;pg_uuidv7&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.7.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Create UUIDv7 values in postgres&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/permuteseq/"&gt;permuteseq&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.2.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Pseudo-randomly permute sequences with a format-preserving encryption on elements&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_hashids/"&gt;pg_hashids&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Short unique id generator for PostgreSQL, using hashids&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/sequential_uuids/"&gt;sequential_uuids&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;generator of sequential UUIDs&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/typeid/"&gt;typeid&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.3.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Allows to use TypeIDs in Postgres natively&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/snowflake/"&gt;snowflake&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.4&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Snowflake-style 64-bit ID generation and sequence utilities&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/topn/"&gt;topn&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.7.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;type for top-n JSONB&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/quantile/"&gt;quantile&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1.8&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Quantile aggregation function&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/lower_quantile/"&gt;lower_quantile&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Lower quantile aggregate function&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/count_distinct/"&gt;count_distinct&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;3.0.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;An alternative to COUNT(DISTINCT …) aggregate, usable with HashAggregate&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/omnisketch/"&gt;omnisketch&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;data structure for on-line agg of data into approximate sketch&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/ddsketch/"&gt;ddsketch&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Provides ddsketch aggregate function&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/vasco/"&gt;vasco&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;discover hidden correlations in your data with MIC&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/xicor/"&gt;xicor&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;XI Correlation Coefficient in Postgres&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/weighted_statistics/"&gt;weighted_statistics&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;High-performance weighted statistics functions for sparse data&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/tdigest/"&gt;tdigest&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.4.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Provides tdigest aggregate function.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/first_last_agg/"&gt;first_last_agg&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.4&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;first() and last() aggregate functions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/extra_window_functions/"&gt;extra_window_functions&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Extra Window Functions for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/floatvec/"&gt;floatvec&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Math for vectors (arrays) of numbers&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/aggs_for_vecs/"&gt;aggs_for_vecs&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.4.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Aggregate functions for array inputs&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/aggs_for_arrays/"&gt;aggs_for_arrays&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.3.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Various functions for computing statistics on arrays of numbers&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_csv/"&gt;pg_csv&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Flexible CSV processing for Postgres&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/arraymath/"&gt;arraymath&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Array math and operators that work element by element on the contents of arrays&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_math/"&gt;pg_math&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;GSL statistical functions for postgresql&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/random/"&gt;random&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.0.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;random data generator&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/base36/"&gt;base36&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Integer Base36 types&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/base62/"&gt;base62&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.0.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Base62 extension for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_base58/"&gt;pg_base58&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.0.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Base58 Encoder/Decoder Extension for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/financial/"&gt;financial&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Financial aggregate functions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/convert/"&gt;convert&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;conversion functions for spatial, routing and other specialized uses&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/refint/"&gt;refint&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;functions for implementing referential integrity (obsolete)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/autoinc/"&gt;autoinc&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;functions for autoincrementing fields&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/insert_username/"&gt;insert_username&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;functions for tracking who changed a table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/moddatetime/"&gt;moddatetime&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;functions for tracking last modification time&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/tsm_system_time/"&gt;tsm_system_time&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;TABLESAMPLE method which accepts time in milliseconds as a limit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/dict_xsyn/"&gt;dict_xsyn&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;text search dictionary template for extended synonym processing&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/tsm_system_rows/"&gt;tsm_system_rows&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;TABLESAMPLE method which accepts number of rows as a limit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/tcn/"&gt;tcn&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Triggered change notifications&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/uuid-ossp/"&gt;uuid-ossp&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;generate universally unique identifiers (UUIDs)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/btree_gist/"&gt;btree_gist&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.7&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;support for indexing common datatypes in GiST&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/btree_gin/"&gt;btree_gin&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;support for indexing common datatypes in GIN&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/intarray/"&gt;intarray&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.5&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;functions, operators, and index support for 1-D arrays of integers&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/intagg/"&gt;intagg&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;integer aggregator and enumerator (obsolete)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/dict_int/"&gt;dict_int&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;text search dictionary template for integers&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/unaccent/"&gt;unaccent&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FUNC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;text search dictionary that removes accents&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="admin"&gt;ADMIN&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Extension&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Version&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Category&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_repack/"&gt;pg_repack&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.5.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Reorganize tables in PostgreSQL databases with minimal locks&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_rewrite/"&gt;pg_rewrite&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Tool allows read write to the table during the rewriting&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_squeeze/"&gt;pg_squeeze&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.9.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;A tool to remove unused space from a relation.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_dirtyread/"&gt;pg_dirtyread&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.7&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Read dead but unvacuumed rows from table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgfincore/"&gt;pgfincore&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.3.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;examine and manage the os buffer cache&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_cooldown/"&gt;pg_cooldown&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;remove buffered pages for specific relations&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/ddlx/"&gt;ddlx&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.30&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;DDL eXtractor functions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pglinter/"&gt;pglinter&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostgreSQL Linting and Analysis Extension&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/prioritize/"&gt;prioritize&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.4&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;get and set the priority of PostgreSQL backends&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_checksums/"&gt;pg_checksums&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Activate/deactivate/verify checksums in offline Postgres clusters&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_readonly/"&gt;pg_readonly&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.4&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;cluster database read only&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgdd/"&gt;pgdd&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.6.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Introspect pg data dictionary via standard SQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_permissions/"&gt;pg_permissions&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.4&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;view object permissions and compare them with the desired state&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgautofailover/"&gt;pgautofailover&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;pg_auto_failover&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_catcheck/"&gt;pg_catcheck&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.6.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Diagnosing system catalog corruption&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pre_prepare/"&gt;pre_prepare&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.9&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Pre Prepare your Statement server side&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_upless/"&gt;pg_upless&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.0.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Detect Useless UPDATE&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgcozy/"&gt;pgcozy&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Pre-warming shared buffers according to previous pg_buffercache snapshots for PostgreSQL.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_orphaned/"&gt;pg_orphaned&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Deal with orphaned files&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_crash/"&gt;pg_crash&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Send random signals to random processes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_cheat_funcs/"&gt;pg_cheat_funcs&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Provides cheat (but useful) functions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/fio/"&gt;fio&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostgreSQL File I/O Functions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/qos/"&gt;qos&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostgreSQL QoS resource governance extension (session &amp;amp; query throttling/isolation)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_savior/"&gt;pg_savior&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.0.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Postgres extension to save OOPS mistakes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/safeupdate/"&gt;safeupdate&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.5&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Require criteria for UPDATE and DELETE&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_strict/"&gt;pg_strict&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Prevent dangerous UPDATE and DELETE without WHERE clause&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_drop_events/"&gt;pg_drop_events&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;logs transaction ids of drop table, drop column, drop materialized view statements&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/table_log/"&gt;table_log&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.6.4&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;record table modification logs and PITR for table/row&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgagent/"&gt;pgagent&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;4.2.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;A PostgreSQL job scheduler&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_prewarm/"&gt;pg_prewarm&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;prewarm relation data&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgpool_adm/"&gt;pgpool_adm&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;4.7.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Administrative functions for pgPool&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgpool_recovery/"&gt;pgpool_recovery&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;4.7.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;recovery functions for pgpool-II for V4.3&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgpool_regclass/"&gt;pgpool_regclass&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;4.7.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;replacement for regclass&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/lo/"&gt;lo&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Large Object maintenance&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/basic_archive/"&gt;basic_archive&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;-&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;an example of an archive module&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/basebackup_to_shell/"&gt;basebackup_to_shell&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;-&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;adds a custom basebackup target called shell&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/old_snapshot/"&gt;old_snapshot&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;utilities in support of old_snapshot_threshold&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/adminpack/"&gt;adminpack&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;administrative functions for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/amcheck/"&gt;amcheck&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.4&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;functions for verifying relation integrity&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_surgery/"&gt;pg_surgery&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ADMIN&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;extension to perform surgery on a damaged relation&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="stat"&gt;STAT&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Extension&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Version&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Category&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_profile/"&gt;pg_profile&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;4.11&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostgreSQL load profile repository and report builder&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_tracing/"&gt;pg_tracing&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Distributed Tracing for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_show_plans/"&gt;pg_show_plans&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.1.7&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;show query plans of all currently running SQL statements&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_stat_kcache/"&gt;pg_stat_kcache&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.3.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Kernel statistics gathering&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_stat_monitor/"&gt;pg_stat_monitor&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.3.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;The pg_stat_monitor is a PostgreSQL Query Performance Monitoring tool, based on PostgreSQL contrib module pg_stat_statements. pg_stat_monitor provides aggregated statistics, client information, plan details including plan, and histogram information.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_qualstats/"&gt;pg_qualstats&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.1.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;An extension collecting statistics about quals&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_store_plans/"&gt;pg_store_plans&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.9&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;track plan statistics of all SQL statements executed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_track_settings/"&gt;pg_track_settings&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.1.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Track settings changes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_track_optimizer/"&gt;pg_track_optimizer&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.9.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Track planning decisions in comparison with execution reality&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_wait_sampling/"&gt;pg_wait_sampling&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1.9&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;sampling based statistics of wait events&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgsentinel/"&gt;pgsentinel&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.4.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;active session history&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/system_stats/"&gt;system_stats&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;3.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;EnterpriseDB system statistics for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/meta/"&gt;meta&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.4.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Normalized, friendlier system catalog for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgnodemx/"&gt;pgnodemx&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.7&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Capture node OS metrics via SQL queries&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_proctab/"&gt;pg_proctab&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.7&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostgreSQL extension to access the OS process table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_sqlog/"&gt;pg_sqlog&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.6&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Provide SQL interface to logs&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/bgw_replstatus/"&gt;bgw_replstatus&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.8&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Small PostgreSQL background worker to report whether a node is a replication master or standby&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgmeminfo/"&gt;pgmeminfo&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;show memory usage&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/toastinfo/"&gt;toastinfo&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.5&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;show details on toasted datums&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/explain_ui/"&gt;explain_ui&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.0.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;easily jump into a visual plan UI for any SQL query&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_relusage/"&gt;pg_relusage&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.0.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Log all the queries that reference a particular column&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pagevis/"&gt;pagevis&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Visualise database pages in ascii code&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/powa/"&gt;powa&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;5.1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostgreSQL Workload Analyser-core&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_overexplain/"&gt;pg_overexplain&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Allow EXPLAIN to dump even more details&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_logicalinspect/"&gt;pg_logicalinspect&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Logical decoding components inspection&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pageinspect/"&gt;pageinspect&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.12&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;inspect the contents of database pages at a low level&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgrowlocks/"&gt;pgrowlocks&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;show row-level locking information&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/sslinfo/"&gt;sslinfo&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;information about SSL certificates&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_buffercache/"&gt;pg_buffercache&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.5&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;examine the shared buffer cache&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_walinspect/"&gt;pg_walinspect&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;functions to inspect contents of PostgreSQL Write-Ahead Log&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_freespacemap/"&gt;pg_freespacemap&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;examine the free space map (FSM)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_visibility/"&gt;pg_visibility&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;examine the visibility map (VM) and page-level visibility info&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgstattuple/"&gt;pgstattuple&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.5&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;show tuple-level statistics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/auto_explain/"&gt;auto_explain&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;-&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Provides a means for logging execution plans of slow statements automatically&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_stat_statements/"&gt;pg_stat_statements&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.11&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;STAT&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;track planning and execution statistics of all SQL statements executed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="sec"&gt;SEC&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Extension&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Version&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Category&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/passwordcheck_cracklib/"&gt;passwordcheck_cracklib&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;3.1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Strengthen PostgreSQL user password checks with cracklib&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/supautils/"&gt;supautils&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;3.1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Extension that secures a cluster on a cloud environment&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgsodium/"&gt;pgsodium&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;3.1.9&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Postgres extension for libsodium functions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/supabase_vault/"&gt;supabase_vault&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.3.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Supabase Vault Extension&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_session_jwt/"&gt;pg_session_jwt&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.4.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Manage authentication sessions using JWTs&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/anon/"&gt;anon&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;3.0.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostgreSQL Anonymizer (anon) extension&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgsmcrypto/"&gt;pgsmcrypto&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostgreSQL SM Algorithm Extension&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_enigma/"&gt;pg_enigma&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.5.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Encrypted postgres data type&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgaudit/"&gt;pgaudit&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;18.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;provides auditing functionality&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgauditlogtofile/"&gt;pgauditlogtofile&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.8.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;pgAudit addon to redirect audit log to an independent file&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_auditor/"&gt;pg_auditor&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Audit data changes and provide flashback ability&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/logerrors/"&gt;logerrors&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.1.5&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Function for collecting statistics about messages in logfile&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_auth_mon/"&gt;pg_auth_mon&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;3.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;monitor connection attempts per user&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_jobmon/"&gt;pg_jobmon&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.4.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Extension for logging and monitoring functions in PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/credcheck/"&gt;credcheck&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;4.6&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;credcheck - postgresql plain text credential checker&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgcryptokey/"&gt;pgcryptokey&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.85&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;cryptographic key management&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_pwhash/"&gt;pg_pwhash&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Advanced password hashing methods for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/login_hook/"&gt;login_hook&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.7&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;login_hook - hook to execute login_hook.login() at login time&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/set_user/"&gt;set_user&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;4.2.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;similar to SET ROLE but with added logging&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_snakeoil/"&gt;pg_snakeoil&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.4&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;The PostgreSQL Antivirus&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgextwlist/"&gt;pgextwlist&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.19&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostgreSQL Extension Whitelisting&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/sslutils/"&gt;sslutils&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.4&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;A Postgres extension for managing SSL certificates through SQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/noset/"&gt;noset&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.3.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Module for blocking SET variables for non-super users.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_tde/"&gt;pg_tde&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Percona pg_tde access method&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/sepgsql/"&gt;sepgsql&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;-&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;label-based mandatory access control (MAC) based on SELinux security policy.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/auth_delay/"&gt;auth_delay&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;-&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;pause briefly before reporting authentication failure&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgcrypto/"&gt;pgcrypto&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;cryptographic functions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/passwordcheck/"&gt;passwordcheck&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;-&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SEC&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;checks user passwords and reject weak password&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="fdw"&gt;FDW&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Extension&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Version&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Category&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/wrappers/"&gt;wrappers&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.5.7&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FDW&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Foreign data wrappers developed by Supabase&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/multicorn/"&gt;multicorn&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;3.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FDW&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Fetch foreign data in Python in your PostgreSQL server.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/odbc_fdw/"&gt;odbc_fdw&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.5.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FDW&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Foreign data wrapper for accessing remote databases using ODBC&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/jdbc_fdw/"&gt;jdbc_fdw&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.4.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FDW&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;foreign-data wrapper for remote servers available over JDBC&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgspider_ext/"&gt;pgspider_ext&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.3.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FDW&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;foreign-data wrapper for remote PGSpider servers&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/mysql_fdw/"&gt;mysql_fdw&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.9.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FDW&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Foreign data wrapper for querying a MySQL server&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/oracle_fdw/"&gt;oracle_fdw&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.8.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FDW&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;foreign data wrapper for Oracle access&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/tds_fdw/"&gt;tds_fdw&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.0.5&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FDW&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Foreign data wrapper for querying a TDS database (Sybase or Microsoft SQL Server)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/db2_fdw/"&gt;db2_fdw&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;18.1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FDW&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;foreign data wrapper for DB2 access&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/sqlite_fdw/"&gt;sqlite_fdw&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.5.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FDW&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;SQLite Foreign Data Wrapper&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgbouncer_fdw/"&gt;pgbouncer_fdw&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.4.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FDW&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Extension for querying PgBouncer stats from normal SQL views &amp;amp; running pgbouncer commands from normal SQL functions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/etcd_fdw/"&gt;etcd_fdw&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.0.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FDW&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Foreign data wrapper for etcd&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/informix_fdw/"&gt;informix_fdw&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.6.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FDW&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Foreign data wrapper for Informix access&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/nominatim_fdw/"&gt;nominatim_fdw&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FDW&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Nominatim Foreign Data Wrapper for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/mongo_fdw/"&gt;mongo_fdw&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;5.5.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FDW&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;foreign data wrapper for MongoDB access&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/redis_fdw/"&gt;redis_fdw&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FDW&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Foreign data wrapper for querying a Redis server&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/redis/"&gt;redis&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.0.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FDW&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Send redis pub/sub messages to Redis from PostgreSQL Directly&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/kafka_fdw/"&gt;kafka_fdw&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.0.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FDW&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;kafka Foreign Data Wrapper for CSV formatted messages&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/hdfs_fdw/"&gt;hdfs_fdw&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.3.3&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FDW&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;foreign-data wrapper for remote hdfs servers&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/firebird_fdw/"&gt;firebird_fdw&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.4.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FDW&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Foreign data wrapper for Firebird&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/aws_s3/"&gt;aws_s3&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.0.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FDW&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;aws_s3 postgres extension to import/export data from/to s3&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/log_fdw/"&gt;log_fdw&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.4&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FDW&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;foreign-data wrapper for Postgres log file access&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/dblink/"&gt;dblink&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FDW&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;connect to other PostgreSQL databases from within a database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/file_fdw/"&gt;file_fdw&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FDW&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;foreign-data wrapper for flat file access&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/postgres_fdw/"&gt;postgres_fdw&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;FDW&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;foreign-data wrapper for remote PostgreSQL servers&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="sim"&gt;SIM&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Extension&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Version&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Category&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/documentdb/"&gt;documentdb&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.109&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;API surface for DocumentDB for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/documentdb_core/"&gt;documentdb_core&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.109&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Core API surface for DocumentDB for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/documentdb_distributed/"&gt;documentdb_distributed&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.109&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Multi-Node API surface for DocumentDB&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/documentdb_extended_rum/"&gt;documentdb_extended_rum&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.109&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;DocumentDB Extended RUM index access method&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/orafce/"&gt;orafce&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;4.16.4&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Functions and operators that emulate a subset of functions and packages from the Oracle RDBMS&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgtt/"&gt;pgtt&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;4.4&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Extension to add Global Temporary Tables feature to PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/session_variable/"&gt;session_variable&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;3.4&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Registration and manipulation of session variables and constants&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_statement_rollback/"&gt;pg_statement_rollback&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.5&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Server side rollback at statement level for PostgreSQL like Oracle or DB2&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/ivorysql_ora/"&gt;ivorysql_ora&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Oracle compatibility extension&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/ora_btree_gin/"&gt;ora_btree_gin&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;GIN index support for Oracle data types&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/ora_btree_gist/"&gt;ora_btree_gist&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;GiST index support for Oracle data types&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_get_functiondef/"&gt;pg_get_functiondef&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Get function definition&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/plisql/"&gt;plisql&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PL/iSQL procedural language&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/gb18030_2022/"&gt;gb18030_2022&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Support GB18030-2022 to UTF-8 encoding conversion&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_dbms_metadata/"&gt;pg_dbms_metadata&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Extension to add Oracle DBMS_METADATA compatibility to PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_dbms_lock/"&gt;pg_dbms_lock&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Extension to add Oracle DBMS_LOCK full compatibility to PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_dbms_job/"&gt;pg_dbms_job&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.5&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Extension to add Oracle DBMS_JOB full compatibility to PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_dbms_errlog/"&gt;pg_dbms_errlog&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Emulate DBMS_ERRLOG Oracle module to log DML errors in a dedicated table.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_utl_smtp/"&gt;pg_utl_smtp&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Oracle UTL_SMTP compatibility extension for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/babelfishpg_common/"&gt;babelfishpg_common&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;5.5.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;SQL Server Transact SQL Datatype Support&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/babelfishpg_tsql/"&gt;babelfishpg_tsql&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;5.5.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;SQL Server Transact SQL compatibility&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/babelfishpg_tds/"&gt;babelfishpg_tds&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;SQL Server TDS protocol extension&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/babelfishpg_money/"&gt;babelfishpg_money&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;SQL Server Money Data Type&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/spat/"&gt;spat&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;0.1.0a4&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Redis-like In-Memory DB Embedded in Postgres&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgmemcache/"&gt;pgmemcache&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.3.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;memcached interface&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/aux_mysql/"&gt;aux_mysql&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.5&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;SIM&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;MySQL compatibility auxiliary extension module&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="etl"&gt;ETL&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Extension&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Version&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Category&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pglogical/"&gt;pglogical&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.4.6&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ETL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostgreSQL Logical Replication&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pglogical_origin/"&gt;pglogical_origin&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.4.6&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ETL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Dummy extension for compatibility when upgrading from Postgres 9.4&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pglogical_ticker/"&gt;pglogical_ticker&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.4.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ETL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Have an accurate view on pglogical replication delay&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgl_ddl_deploy/"&gt;pgl_ddl_deploy&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.2.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ETL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;automated ddl deployment using pglogical&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_failover_slots/"&gt;pg_failover_slots&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.2.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ETL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PG Failover Slots extension&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/db_migrator/"&gt;db_migrator&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ETL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Tools to migrate other databases to PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgactive/"&gt;pgactive&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.1.7&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ETL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Active-Active Replication Extension for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/spock/"&gt;spock&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;5.0.5&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ETL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Multi-master logical replication extension for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/lolor/"&gt;lolor&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.2.2&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ETL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Extension to make PostgreSQL large objects compatible with logical replication&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/wal2json/"&gt;wal2json&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.6&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ETL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Changing data capture in JSON format&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/wal2mongo/"&gt;wal2mongo&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0.7&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ETL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostgreSQL logical decoding output plugin for MongoDB&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/decoderbufs/"&gt;decoderbufs&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;3.4.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ETL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Logical decoding plugin that delivers WAL stream changes using a Protocol Buffer format&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/decoder_raw/"&gt;decoder_raw&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ETL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Output plugin for logical replication in Raw SQL format&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/mimeo/"&gt;mimeo&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;1.5.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ETL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Extension for specialized, per-table replication between PostgreSQL instances&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/repmgr/"&gt;repmgr&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;5.5.0&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ETL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Replication manager for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_fact_loader/"&gt;pg_fact_loader&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;2.0.1&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ETL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;build fact tables with Postgres&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pg_bulkload/"&gt;pg_bulkload&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;3.1.23&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ETL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;pg_bulkload is a high speed data loading utility for PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/test_decoding/"&gt;test_decoding&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;-&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ETL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;SQL-based test/example module for WAL logical decoding&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/ext/e/pgoutput/"&gt;pgoutput&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;-&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;ETL&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Logical Replication output plugin&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>Module: PGSQL</title><link>https://pigsty.io/docs/pgsql/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The world&amp;rsquo;s most advanced open-source relational database!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Pigsty brings it to full potential: batteries-included, reliable, observable, maintainable, and scalable! &lt;a href="#config"&gt;Config&lt;/a&gt; | &lt;a href="https://pigsty.io/docs/pgsql/admin"&gt;Admin&lt;/a&gt; | &lt;a href="https://pigsty.io/docs/pgsql/playbook"&gt;Playbooks&lt;/a&gt; | &lt;a href="https://pigsty.io/docs/pgsql/monitor/dashboard"&gt;Dashboards&lt;/a&gt; | &lt;a href="#parameters"&gt;Parameters&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Learn key topics and concepts about PostgreSQL.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/config"&gt;Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/config"&gt;Cluster Config&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/ext/list"&gt;Extensions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/config/user"&gt;Users/Roles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/config/db"&gt;Databases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/service/"&gt;Services/Access&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/config/hba"&gt;Auth/HBA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/concept/sec/ac/"&gt;Access Control&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/admin"&gt;Admin SOP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/backup"&gt;Backup &amp;amp; Recovery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/monitor"&gt;Monitoring&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/migration"&gt;Migration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/monitor/dashboard"&gt;Dashboards&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="config"&gt;Config&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://pigsty.io/docs/pgsql/config"&gt;Describe&lt;/a&gt; your desired PostgreSQL cluster&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/config#identity-parameters"&gt;Identity Params&lt;/a&gt;: Define identity params for a PostgreSQL cluster&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/config#primary-instance"&gt;Primary Instance&lt;/a&gt;: Create single-instance &amp;ldquo;cluster&amp;rdquo; with one primary&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/config#replica-instance"&gt;Replica Instance&lt;/a&gt;: Create basic HA cluster with one primary and one replica&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/config#offline-instance"&gt;Offline Instance&lt;/a&gt;: Create special read-only instance for OLAP/ETL/interactive queries&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/config#sync-standby"&gt;Sync Standby&lt;/a&gt;: Enable sync commit to ensure zero data loss&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/config#quorum-commit"&gt;Quorum Commit&lt;/a&gt;: Use quorum sync commit for higher consistency level&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/config#standby-cluster"&gt;Standby Cluster&lt;/a&gt;: Clone existing cluster and keep in sync (DR cluster)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/config#delayed-cluster"&gt;Delayed Cluster&lt;/a&gt;: Clone existing cluster with delayed replay for emergency recovery&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/config#citus-cluster"&gt;Citus Cluster&lt;/a&gt;: Define and create Citus distributed database cluster&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/config#major-version"&gt;Major Version&lt;/a&gt;: Deploy cluster with different PostgreSQL major version&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="admin"&gt;Admin&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://pigsty.io/docs/pgsql/admin"&gt;Manage&lt;/a&gt; your PostgreSQL clusters.&lt;/p&gt;</description></item><item><title>Core Concepts</title><link>https://pigsty.io/docs/pgsql/_div_concept/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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://pigsty.io/docs/pgsql/config/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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="https://pigsty.io/docs/pgsql/param"&gt;&lt;code&gt;PGSQL&lt;/code&gt; parameters&lt;/a&gt;.
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;
&lt;hr&gt;
&lt;h2 id="configuration-entry"&gt;Configuration Entry&lt;/h2&gt;
&lt;ol&gt;
&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;
&lt;li&gt;&lt;strong&gt;Define Parameters&lt;/strong&gt;: Override the required &lt;a href="https://pigsty.io/docs/pgsql/param"&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;
&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;
&lt;/ol&gt;
&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://pigsty.io/docs/pgsql/service/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/service/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Split read and write operations, route traffic correctly, and reliably deliver PostgreSQL cluster capabilities.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="#service-overview"&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;
&lt;p&gt;Service is critical for &lt;a href="#access-service"&gt;stable access&lt;/a&gt; in production environments, showing its value during &lt;a href="https://pigsty.io/docs/concept/ha"&gt;high availability&lt;/a&gt; cluster automatic failovers. &lt;a href="#personal-user"&gt;Personal users&lt;/a&gt; typically don&amp;rsquo;t need to worry about this concept.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="personal-user"&gt;Personal User&lt;/h2&gt;
&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>Access Control</title><link>https://pigsty.io/docs/pgsql/security/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/security/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Pigsty provides a battery-included access control model based on &lt;a href="#role-system"&gt;role system&lt;/a&gt; and &lt;a href="#privilege-system"&gt;privilege system&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Access control is crucial, yet many users struggle to implement it properly. Therefore, Pigsty provides a streamlined, battery-included access control model to provide a safety net for your cluster security.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="role-system"&gt;Role System&lt;/h2&gt;
&lt;p&gt;Pigsty&amp;rsquo;s default role system includes four &lt;a href="#default-roles"&gt;default roles&lt;/a&gt; and four &lt;a href="#default-users"&gt;default users&lt;/a&gt;:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Role Name&lt;/th&gt;
 &lt;th&gt;Attributes&lt;/th&gt;
 &lt;th&gt;Member of&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;dbrole_readonly&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;NOLOGIN&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;role for global read-only access&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;dbrole_readwrite&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;NOLOGIN&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;dbrole_readonly&lt;/td&gt;
 &lt;td&gt;role for global read-write access&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;dbrole_admin&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;NOLOGIN&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;pg_monitor,dbrole_readwrite&lt;/td&gt;
 &lt;td&gt;role for admin/object creation&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;dbrole_offline&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;NOLOGIN&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;role for restricted read-only access&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;postgres&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;SUPERUSER&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;system superuser&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;replicator&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;REPLICATION&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;pg_monitor,dbrole_readonly&lt;/td&gt;
 &lt;td&gt;system replicator&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;dbuser_dba&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;SUPERUSER&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;dbrole_admin&lt;/td&gt;
 &lt;td&gt;pgsql admin user&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;dbuser_monitor&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;pg_monitor&lt;/td&gt;
 &lt;td&gt;pgsql monitor user&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The detailed definitions of these &lt;a href="https://pigsty.io/docs/pgsql/config/user#define-users"&gt;roles and users&lt;/a&gt; are as follows:&lt;/p&gt;</description></item><item><title>Service / Access</title><link>https://pigsty.io/docs/pgsql/misc/svc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/misc/svc/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Separate read and write operations, route traffic correctly, and deliver PostgreSQL cluster capabilities reliably.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="#service-overview"&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;
&lt;p&gt;Services are critical for &lt;a href="#accessing-services"&gt;stable access&lt;/a&gt; in production environments and show their value when &lt;a href="https://pigsty.io/docs/concept/ha"&gt;high availability&lt;/a&gt; clusters automatically fail over. &lt;a href="#single-node-users"&gt;Single-node users&lt;/a&gt; typically don&amp;rsquo;t need to worry about this concept.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="single-node-users"&gt;Single-Node Users&lt;/h2&gt;
&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>Administration</title><link>https://pigsty.io/docs/pgsql/_div_admin/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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://pigsty.io/docs/pgsql/admin/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/admin/</guid><description/></item><item><title>User / Role</title><link>https://pigsty.io/docs/pgsql/misc/user/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/misc/user/</guid><description>&lt;blockquote&gt;
&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;
&lt;/blockquote&gt;
&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;
&lt;hr&gt;
&lt;h2 id="defining-users"&gt;Defining Users&lt;/h2&gt;
&lt;p&gt;Pigsty defines roles and users in database clusters through two configuration parameters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/param#pg_default_roles"&gt;&lt;code&gt;pg_default_roles&lt;/code&gt;&lt;/a&gt;: Defines globally unified roles and users&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/param#pg_users"&gt;&lt;code&gt;pg_users&lt;/code&gt;&lt;/a&gt;: Defines business users and roles at the database cluster level&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The former defines roles and users shared across the entire environment, while the latter defines business roles and users specific to individual clusters. Both have the same format and are arrays of user definition objects.&lt;/p&gt;</description></item><item><title>Database</title><link>https://pigsty.io/docs/pgsql/misc/db/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/misc/db/</guid><description>&lt;blockquote&gt;
&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;
&lt;/blockquote&gt;
&lt;p&gt;A PostgreSQL server can serve multiple &lt;strong&gt;databases&lt;/strong&gt; simultaneously. In Pigsty, you can &lt;a href="#define-database"&gt;define&lt;/a&gt; the required databases in the cluster configuration.&lt;/p&gt;
&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://pigsty.io/docs/pgsql/misc/hba/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/misc/hba/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Detailed explanation of Host-Based Authentication (HBA) in Pigsty.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Authentication is the foundation of &lt;a href="https://pigsty.io/docs/concept/sec/ac/"&gt;Access Control&lt;/a&gt; and the &lt;a href="https://pigsty.io/docs/concept/sec/ac/#privilege-system"&gt;Privilege System&lt;/a&gt;. PostgreSQL has multiple &lt;a href="https://www.postgresql.org/docs/current/client-authentication.html"&gt;authentication&lt;/a&gt; methods.&lt;/p&gt;
&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;
&lt;hr&gt;
&lt;h2 id="client-authentication"&gt;Client Authentication&lt;/h2&gt;
&lt;p&gt;To connect to a PostgreSQL database, users must first be authenticated (password is used by default).&lt;/p&gt;
&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="https://www.postgresql.org/docs/current/app-psql.html#usage"&gt;&lt;code&gt;psql&lt;/code&gt;&lt;/a&gt; documentation and &lt;a href="https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING"&gt;PostgreSQL Connection Strings&lt;/a&gt; for more details.&lt;/p&gt;</description></item><item><title>Access Control</title><link>https://pigsty.io/docs/pgsql/misc/acl/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/misc/acl/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Pigsty provides a battery-included access control model based on a &lt;a href="#role-system"&gt;role system&lt;/a&gt; and &lt;a href="#privilege-system"&gt;privilege system&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Access control is important, but many users don&amp;rsquo;t do it well. Therefore, Pigsty provides a simplified, ready-to-use access control model to provide a security baseline for your cluster.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="role-system"&gt;Role System&lt;/h2&gt;
&lt;p&gt;Pigsty&amp;rsquo;s default role system includes four &lt;a href="#default-roles"&gt;default roles&lt;/a&gt; and four &lt;a href="#default-users"&gt;default users&lt;/a&gt;:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Role Name&lt;/th&gt;
 &lt;th&gt;Attributes&lt;/th&gt;
 &lt;th&gt;Member of&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;dbrole_readonly&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;NOLOGIN&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;role for global read-only access&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;dbrole_readwrite&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;NOLOGIN&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;dbrole_readonly&lt;/td&gt;
 &lt;td&gt;role for global read-write access&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;dbrole_admin&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;NOLOGIN&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;pg_monitor,dbrole_readwrite&lt;/td&gt;
 &lt;td&gt;role for object creation&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;dbrole_offline&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;NOLOGIN&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;role for restricted read-only access&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;postgres&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;SUPERUSER&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;system superuser&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;replicator&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;REPLICATION&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;pg_monitor,dbrole_readonly&lt;/td&gt;
 &lt;td&gt;system replicator&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;dbuser_dba&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;SUPERUSER&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;dbrole_admin&lt;/td&gt;
 &lt;td&gt;pgsql admin user&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;dbuser_monitor&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;pg_monitor&lt;/td&gt;
 &lt;td&gt;pgsql monitor user&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The detailed definitions of these &lt;a href="https://pigsty.io/docs/pgsql/config/user#defining-users"&gt;roles and users&lt;/a&gt; are as follows:&lt;/p&gt;</description></item><item><title>Troubleshooting</title><link>https://pigsty.io/docs/pgsql/tutorial/failure/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&lt;hr&gt;
&lt;h2 id="disk-space-exhausted"&gt;Disk Space Exhausted&lt;/h2&gt;
&lt;p&gt;Disk space exhaustion is the most common type of failure.&lt;/p&gt;
&lt;h3 id="symptoms"&gt;Symptoms&lt;/h3&gt;
&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://pigsty.io/docs/pgsql/migration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/migration/</guid><description>&lt;p&gt;Pigsty includes a built-in playbook &lt;a href="https://github.com/pgsty/pigsty/blob/main/pgsql-migration.yml"&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;
&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;
&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;
&lt;hr&gt;
&lt;h2 id="defining-migration-tasks"&gt;Defining Migration Tasks&lt;/h2&gt;
&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://pigsty.io/docs/pgsql/tutorial/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/tutorial/</guid><description>&lt;p&gt;This section provides step-by-step tutorials for common PostgreSQL tasks and scenarios.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="citus/"&gt;&lt;strong&gt;Citus Cluster&lt;/strong&gt;&lt;/a&gt;: Deploy and manage Citus distributed clusters&lt;/li&gt;
&lt;li&gt;&lt;a href="drill/"&gt;&lt;strong&gt;Disaster Drill&lt;/strong&gt;&lt;/a&gt;: Emergency recovery when 2 of 3 nodes fail&lt;/li&gt;
&lt;li&gt;&lt;a href="pg-vip/"&gt;&lt;strong&gt;PG VIP&lt;/strong&gt;&lt;/a&gt;: Configure L2 VIP for PostgreSQL clusters&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Reference</title><link>https://pigsty.io/docs/pgsql/_div_reference/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/_div_reference/</guid><description>&lt;p&gt;Parameters and reference documentation&lt;/p&gt;</description></item><item><title>Monitoring</title><link>https://pigsty.io/docs/pgsql/monitor/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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="#monitor-existing-cluster"&gt;monitor existing PG clusters&lt;/a&gt; and remote &lt;a href="#monitor-rds"&gt;RDS services&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="monitoring-overview"&gt;Monitoring Overview&lt;/h2&gt;
&lt;p&gt;Pigsty uses a modern observability stack for PostgreSQL monitoring:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Grafana for metrics visualization and PostgreSQL datasource&lt;/li&gt;
&lt;li&gt;VictoriaMetrics for collecting metrics from PostgreSQL / Pgbouncer / Patroni / HAProxy / Node&lt;/li&gt;
&lt;li&gt;VictoriaLogs for logging PostgreSQL / Pgbouncer / Patroni / pgBackRest and host component logs&lt;/li&gt;
&lt;li&gt;Battery-included Grafana &lt;a href="https://pigsty.io/docs/pgsql/monitor/dashboard"&gt;dashboards&lt;/a&gt; showcasing all aspects of PostgreSQL&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Metrics&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Dashboard</title><link>https://pigsty.io/docs/pgsql/dashboard/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/dashboard/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Pigsty provides numerous out-of-the-box Grafana monitoring dashboards for PostgreSQL: &lt;a href="https://demo.pigsty.io/d/pgsql-overview"&gt;Demo&lt;/a&gt; &amp;amp; &lt;a href="https://github.com/pgsty/pigsty/wiki/Gallery"&gt;Gallery&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Pigsty has 26 PostgreSQL-related monitoring dashboards, organized by hierarchy into Overview, Cluster, Instance, and Database categories, and by data source into &lt;a href="#overview"&gt;PGSQL&lt;/a&gt;, &lt;a href="#pgcat"&gt;PGCAT&lt;/a&gt;, and &lt;a href="#pglog"&gt;PGLOG&lt;/a&gt; categories.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://pigsty.io/img/pigsty/dashboard.jpg" alt="pigsty-dashboard.jpg"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;table class="full-width"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: center"&gt;Overview&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Cluster&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Instance&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Database&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-overview"&gt;PGSQL Overview&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-cluster"&gt;PGSQL Cluster&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-instance"&gt;PGSQL Instance&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-database"&gt;PGSQL Database&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-alert"&gt;PGSQL Alert&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgrds-cluster"&gt;PGRDS Cluster&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgrds-instance"&gt;PGRDS Instance&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgcat-database"&gt;PGCAT Database&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-shard"&gt;PGSQL Shard&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-activity"&gt;PGSQL Activity&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgcat-instance"&gt;PGCAT Instance&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-tables"&gt;PGSQL Tables&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-replication"&gt;PGSQL Replication&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-persist"&gt;PGSQL Persist&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-table"&gt;PGSQL Table&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-service"&gt;PGSQL Service&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-proxy"&gt;PGSQL Proxy&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgcat-table"&gt;PGCAT Table&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-databases"&gt;PGSQL Databases&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-pgbouncer"&gt;PGSQL Pgbouncer&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-query"&gt;PGSQL Query&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-patroni"&gt;PGSQL Patroni&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-session"&gt;PGSQL Session&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgcat-query"&gt;PGCAT Query&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-pitr"&gt;PGSQL PITR&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-xacts"&gt;PGSQL Xacts&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgcat-locks"&gt;PGCAT Locks&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-exporter"&gt;PGSQL Exporter&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgcat-schema"&gt;PGCAT Schema&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Dashboards</title><link>https://pigsty.io/docs/pgsql/monitor/dashboard/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/monitor/dashboard/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Pigsty provides many out-of-the-box Grafana monitoring dashboards for PostgreSQL: &lt;a href="https://demo.pigsty.io/d/pgsql-overview"&gt;Demo&lt;/a&gt; &amp;amp; &lt;a href="https://github.com/pgsty/pigsty/wiki/Gallery"&gt;Gallery&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There are 26 PostgreSQL-related monitoring dashboards in Pigsty, organized hierarchically into Overview, Cluster, Instance, and Database categories, and by data source into &lt;a href="#overview"&gt;PGSQL&lt;/a&gt;, &lt;a href="#pgcat"&gt;PGCAT&lt;/a&gt;, and &lt;a href="#pglog"&gt;PGLOG&lt;/a&gt; categories.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://pigsty.io/img/pigsty/dashboard.jpg" alt="pigsty-dashboard.jpg"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: center"&gt;Overview&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Cluster&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Instance&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Database&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-overview"&gt;PGSQL Overview&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-cluster"&gt;PGSQL Cluster&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-instance"&gt;PGSQL Instance&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-database"&gt;PGSQL Database&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-alert"&gt;PGSQL Alert&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgrds-cluster"&gt;PGRDS Cluster&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgrds-instance"&gt;PGRDS Instance&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgcat-database"&gt;PGCAT Database&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-shard"&gt;PGSQL Shard&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-activity"&gt;PGSQL Activity&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgcat-instance"&gt;PGCAT Instance&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-tables"&gt;PGSQL Tables&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-replication"&gt;PGSQL Replication&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-persist"&gt;PGSQL Persist&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-table"&gt;PGSQL Table&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-service"&gt;PGSQL Service&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-proxy"&gt;PGSQL Proxy&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgcat-table"&gt;PGCAT Table&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-databases"&gt;PGSQL Databases&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-pgbouncer"&gt;PGSQL Pgbouncer&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-query"&gt;PGSQL Query&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-patroni"&gt;PGSQL Patroni&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-session"&gt;PGSQL Session&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgcat-query"&gt;PGCAT Query&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-pitr"&gt;PGSQL PITR&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-xacts"&gt;PGSQL Xacts&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgcat-locks"&gt;PGCAT Locks&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgsql-exporter"&gt;PGSQL Exporter&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;a href="https://demo.pigsty.io/d/pgcat-schema"&gt;PGCAT Schema&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Metrics</title><link>https://pigsty.io/docs/pgsql/metric/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/metric/</guid><description>&lt;p&gt;The &lt;a href="https://pigsty.io/docs/pgsql"&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;
&lt;table class="full-width"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Metric Name&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Labels&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;ALERTS&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ALERTS_FOR_STATE&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;cls:pressure1&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;cls:pressure15&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;cls:pressure5&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_gc_duration_seconds&lt;/td&gt;
 &lt;td&gt;summary&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &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;
 &lt;td&gt;A summary of the pause duration of garbage collection cycles.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_gc_duration_seconds_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_gc_duration_seconds_sum&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_goroutines&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of goroutines that currently exist.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_info&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Information about the Go environment.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_alloc_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of bytes allocated and still in use.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_alloc_bytes_total&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Total number of bytes allocated, even if freed.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_buck_hash_sys_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of bytes used by the profiling bucket hash table.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_frees_total&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Total number of frees.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_gc_sys_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of bytes used for garbage collection system metadata.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_heap_alloc_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of heap bytes allocated and still in use.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_heap_idle_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of heap bytes waiting to be used.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_heap_inuse_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of heap bytes that are in use.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_heap_objects&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of allocated objects.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_heap_released_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of heap bytes released to OS.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_heap_sys_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of heap bytes obtained from system.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_last_gc_time_seconds&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of seconds since 1970 of last garbage collection.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_lookups_total&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Total number of pointer lookups.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_mallocs_total&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Total number of mallocs.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_mcache_inuse_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of bytes in use by mcache structures.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_mcache_sys_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of bytes used for mcache structures obtained from system.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_mspan_inuse_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of bytes in use by mspan structures.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_mspan_sys_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of bytes used for mspan structures obtained from system.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_next_gc_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of heap bytes when next garbage collection will take place.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_other_sys_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of bytes used for other system allocations.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_stack_inuse_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of bytes in use by the stack allocator.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_stack_sys_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of bytes obtained from system for stack allocator.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_sys_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of bytes obtained from system.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_threads&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of OS threads created.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ins:pressure1&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ins:pressure15&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ins:pressure5&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_cluster_unlocked&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if the cluster is unlocked, 0 if locked.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_dcs_last_seen&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Epoch timestamp when DCS was last contacted successfully by Patroni.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_failsafe_mode_is_active&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if failsafe mode is active, 0 if inactive.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_is_paused&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if auto failover is disabled, 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_master&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if this node is the leader, 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_pending_restart&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if the node needs a restart, 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_postgres_in_archive_recovery&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if Postgres is replicating from archive, 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_postgres_running&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if Postgres is running, 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_postgres_server_version&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Version of Postgres (if running), 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_postgres_streaming&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if Postgres is streaming, 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_postgres_timeline&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Postgres timeline of this node (if running), 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_postmaster_start_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Epoch seconds since Postgres started.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_primary&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if this node is the leader, 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_replica&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if this node is a replica, 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_standby_leader&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if this node is the standby_leader, 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_sync_standby&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if this node is a sync standby replica, 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_up&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_version&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Patroni semver without periods.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_xlog_location&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Current location of the Postgres transaction log, 0 if this node is not the leader.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_xlog_paused&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if the Postgres xlog is paused, 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_xlog_received_location&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Current location of the received Postgres transaction log, 0 if this node is not a replica.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_xlog_replayed_location&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Current location of the replayed Postgres transaction log, 0 if this node is not a replica.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_xlog_replayed_timestamp&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Current timestamp of the replayed Postgres transaction log, 0 if null.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:active_backends&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:active_time_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:active_time_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:active_time_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:age&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:buf_alloc_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:buf_clean_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:buf_flush_backend_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:buf_flush_checkpoint_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:cpu_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:cpu_usage&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:cpu_usage_15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:cpu_usage_1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:cpu_usage_5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:db_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:file_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:ixact_backends&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:ixact_time_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:lag_bytes&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:lag_seconds&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:leader&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:load1&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:load15&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:load5&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:lock_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:locks&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:log_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:lsn_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:members&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:num_backends&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:partition&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:receiver&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:rlock_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:saturation1&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:saturation15&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:saturation5&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:sender&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:session_time_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:slot_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:slot_retained_bytes&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:standby_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:sync_state&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:timeline&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:tup_deleted_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:tup_fetched_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:tup_inserted_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:tup_modified_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:tup_returned_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:wal_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:xact_commit_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:xact_commit_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:xact_commit_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:xact_rollback_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:xact_rollback_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:xact_rollback_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:xact_total_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:xact_total_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:xact_total_sigma15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:xlock_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:active_backends&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:active_time_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:active_time_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:active_time_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:age&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:age_deriv1h&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:age_exhaust&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:blk_io_time_seconds_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:blk_read_time_seconds_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:blk_write_time_seconds_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:blks_access_1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:blks_hit_1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:blks_hit_ratio1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:blks_read_1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:conn_limit&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:conn_usage&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:db_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:ixact_backends&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:ixact_time_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:lock_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:num_backends&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:rlock_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:session_time_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:temp_bytes_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:temp_files_1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:tup_deleted_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:tup_fetched_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:tup_inserted_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:tup_modified_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:tup_returned_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:wlock_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:xact_commit_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:xact_commit_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:xact_commit_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:xact_rollback_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:xact_rollback_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:xact_rollback_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:xact_total_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:xact_total_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:xact_total_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:xact_total_sigma15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:xlock_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:active_backends&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:active_time_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:active_time_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:active_time_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:age&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:cpu_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:cpu_usage&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:cpu_usage_15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:cpu_usage_1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:cpu_usage_5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:ixact_backends&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:ixact_time_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:lag_bytes&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:lag_seconds&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:lsn_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:session_time_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:tup_deleted_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:tup_fetched_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:tup_inserted_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:tup_modified_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:tup_returned_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:xact_commit_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:xact_commit_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:xact_commit_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:xact_rollback_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:xact_rollback_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:xact_rollback_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:xact_total_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:xact_total_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:xact_total_sigma15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:active_backends&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:active_time_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:active_time_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:active_time_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:age&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:blks_hit_ratio1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:buf_alloc_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:buf_clean_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:buf_flush_backend_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:buf_flush_checkpoint_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:ckpt_1h&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:ckpt_req_1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:ckpt_timed_1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:conn_limit&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:conn_usage&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:cpu_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:cpu_usage&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:cpu_usage_15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:cpu_usage_1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:cpu_usage_5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:db_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:file_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:fs_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:is_leader&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:ixact_backends&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:ixact_time_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:lag_bytes&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:lag_seconds&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:load1&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:load15&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:load5&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:lock_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:locks&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:log_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:lsn_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:mem_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:num_backends&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:rlock_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:saturation1&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:saturation15&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:saturation5&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:session_time_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:slot_retained_bytes&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:space_usage&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:status&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:sync_state&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:target_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:timeline&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:tup_deleted_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:tup_fetched_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:tup_inserted_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:tup_modified_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:tup_returned_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:wal_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:wlock_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:xact_commit_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:xact_commit_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:xact_commit_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:xact_rollback_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:xact_rollback_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:xact_rollback_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:xact_total_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:xact_total_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:xact_total_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:xact_total_sigma15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:xlock_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:query:call_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:query:rt_1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:table:scan_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_activity_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Count of connection among (datname,state)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_activity_max_conn_duration&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Max backend session duration since state change among (datname, state)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_activity_max_duration&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Max duration since last state change among (datname, state)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_activity_max_tx_duration&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Max transaction duration since state change among (datname, state)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_archiver_failed_count&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of failed attempts for archiving WAL files&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_archiver_finish_count&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of WAL files that have been successfully archived&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_archiver_last_failed_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Time of the last failed archival operation&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_archiver_last_finish_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Time of the last successful archive operation&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_archiver_reset_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Time at which archive statistics were last reset&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_backend_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Database backend process count by backend_type&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_bgwriter_buffers_alloc&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of buffers allocated&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_bgwriter_buffers_backend&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of buffers written directly by a backend&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_bgwriter_buffers_backend_fsync&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of times a backend had to execute its own fsync call&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_bgwriter_buffers_checkpoint&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of buffers written during checkpoints&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_bgwriter_buffers_clean&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of buffers written by the background writer&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_bgwriter_checkpoint_sync_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &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;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_bgwriter_checkpoint_write_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &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;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_bgwriter_checkpoints_req&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of requested checkpoints that have been performed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_bgwriter_checkpoints_timed&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of scheduled checkpoints that have been performed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_bgwriter_maxwritten_clean&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of times the background writer stopped a cleaning scan because it had written too many buffers&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_bgwriter_reset_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Time at which bgwriter statistics were last reset&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_boot_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;unix timestamp when postmaster boot&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_checkpoint_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint location&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_elapse&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Seconds elapsed since latest checkpoint in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_full_page_writes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s full_page_writes enabled&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_newest_commit_ts_xid&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s newestCommitTsXid&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_next_multi_offset&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s NextMultiOffset&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_next_multixact_id&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s NextMultiXactId&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_next_oid&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s NextOID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_next_xid&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s NextXID xid&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_next_xid_epoch&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s NextXID epoch&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_oldest_active_xid&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s oldestActiveXID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_oldest_commit_ts_xid&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s oldestCommitTsXid&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_oldest_multi_dbid&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s oldestMulti&amp;rsquo;s DB OID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_oldest_multi_xid&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s oldestMultiXid&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_oldest_xid&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s oldestXID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_oldest_xid_dbid&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s oldestXID&amp;rsquo;s DB OID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_prev_tli&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s PrevTimeLineID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_redo_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s REDO location&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Time of latest checkpoint&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_tli&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s TimeLineID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_conf_reload_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;seconds since last configuration reload&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_active_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time spent executing SQL statements in this database, in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_age&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Age of database calculated from datfrozenxid&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_allow_conn&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;If false(0) then no one can connect to this database.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_blk_read_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time spent reading data file blocks by backends in this database, in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_blk_write_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time spent writing data file blocks by backends in this database, in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_blks_access&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of times disk blocks that accessed read+hit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_blks_hit&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of times disk blocks were found already in the buffer cache&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_blks_read&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of disk blocks read in this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_cks_fail_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Time at which the last data page checksum failure was detected in this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_cks_fails&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of data page checksum failures detected in this database, -1 for not enabled&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_confl_confl_bufferpin&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of queries in this database that have been canceled due to pinned buffers&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_confl_confl_deadlock&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of queries in this database that have been canceled due to deadlocks&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_confl_confl_lock&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of queries in this database that have been canceled due to lock timeouts&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_confl_confl_snapshot&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of queries in this database that have been canceled due to old snapshots&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_confl_confl_tablespace&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of queries in this database that have been canceled due to dropped tablespaces&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_conflicts&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of queries canceled due to conflicts with recovery in this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_conn_limit&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Sets maximum number of concurrent connections that can be made to this database. -1 means no limit.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_datid&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;OID of the database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_deadlocks&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of deadlocks detected in this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_frozen_xid&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;All transaction IDs before this one have been frozened&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_is_template&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;If true(1), then this database can be cloned by any user with CREATEDB privileges&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_ixact_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time spent idling while in a transaction in this database, in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_numbackends&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Number of backends currently connected to this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_reset_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time at which database statistics were last reset&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_session_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time spent by database sessions in this database, in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_sessions&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total number of sessions established to this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_sessions_abandoned&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of database sessions to this database that were terminated because connection to the client was lost&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_sessions_fatal&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of database sessions to this database that were terminated by fatal errors&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_sessions_killed&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of database sessions to this database that were terminated by operator intervention&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_temp_bytes&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total amount of data written to temporary files by queries in this database.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_temp_files&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of temporary files created by queries in this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_tup_deleted&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of rows deleted by queries in this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_tup_fetched&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of rows fetched by queries in this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_tup_inserted&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of rows inserted by queries in this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_tup_modified&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of rows modified by queries in this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_tup_returned&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of rows returned by queries in this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_tup_updated&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of rows updated by queries in this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_xact_commit&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of transactions in this database that have been committed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_xact_rollback&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of transactions in this database that have been rolled back&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_xact_total&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of transactions in this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_downstream_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Count of corresponding state&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_agent_up&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_last_scrape_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;seconds exporter spending on scrapping&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_query_cache_ttl&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;times to live of query cache&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_query_scrape_duration&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;seconds query spending on scrapping&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_query_scrape_error_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;times the query failed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_query_scrape_hit_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;numbers been scrapped from this query&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_query_scrape_metric_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;numbers of metrics been scrapped from this query&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_query_scrape_total_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;times exporter server was scraped for metrics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_scrape_duration&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;seconds exporter spending on scrapping&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_scrape_error_count&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;times exporter was scraped for metrics and failed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_scrape_total_count&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;times exporter was scraped for metrics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_server_scrape_duration&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;seconds exporter server spending on scrapping&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_server_scrape_error_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_server_scrape_total_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;times exporter server was scraped for metrics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_server_scrape_total_seconds&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;seconds exporter server spending on scrapping&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_up&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;always be 1 if your could retrieve metrics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_uptime&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;seconds since exporter primary server inited&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_flush_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;primary only, location of current wal syncing&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_func_calls&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of times this function has been called&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_func_self_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total time spent in this function itself, not including other functions called by it, in ms&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_func_total_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total time spent in this function and all other functions called by it, in ms&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_in_recovery&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;server is in recovery mode? 1 for yes 0 for no&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_index_idx_blks_hit&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of buffer hits in this index&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_index_idx_blks_read&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of disk blocks read from this index&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_index_idx_scan&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of index scans initiated on this index&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_index_idx_tup_fetch&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of live table rows fetched by simple index scans using this index&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_index_idx_tup_read&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of index entries returned by scans on this index&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_index_relpages&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Size of the on-disk representation of this index in pages&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_index_reltuples&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Estimate relation tuples&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_insert_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;primary only, location of current wal inserting&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_evictions&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of times a block has been written out from a shared or local buffer&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_extend_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time spent in extend operations in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_extends&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of relation extend operations, each of the size specified in op_bytes.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_fsync_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time spent in fsync operations in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_fsyncs&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of fsync calls. These are only tracked in context normal&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_hits&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;The number of times a desired block was found in a shared buffer.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_op_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;The number of bytes per unit of I/O read, written, or extended. 8192 by default&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_read_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time spent in read operations in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_reads&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of read operations, each of the size specified in op_bytes.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_reset_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Timestamp at which these statistics were last reset&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_reuses&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;The number of times an existing buffer in reused&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_write_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time spent in write operations in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_writeback_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time spent in writeback operations in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_writebacks&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of units of size op_bytes which the process requested the kernel write out to permanent storage.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_writes&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of write operations, each of the size specified in op_bytes.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_is_in_recovery&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;1 if in recovery mode&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_is_wal_replay_paused&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;1 if wal play paused&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_lag&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;replica only, replication lag in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_last_replay_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;time when last transaction been replayed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_lock_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Number of locks of corresponding mode and database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;log sequence number, current write location&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_meta_info&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;constant 1&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_query_calls&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of times the statement was executed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_query_exec_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total time spent executing the statement, in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_query_io_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total time the statement spent reading and writing blocks, in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_query_rows&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total number of rows retrieved or affected by the statement&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_query_sblk_dirtied&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total number of shared blocks dirtied by the statement&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_query_sblk_hit&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total number of shared block cache hits by the statement&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_query_sblk_read&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total number of shared blocks read by the statement&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_query_sblk_written&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total number of shared blocks written by the statement&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_query_wal_bytes&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total amount of WAL bytes generated by the statement&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_receive_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;replica only, location of wal synced to disk&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_backup_end_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Backup end location&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_backup_start_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Backup start location&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_min_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Minimum recovery ending location&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_min_timeline&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Min recovery ending loc&amp;rsquo;s timeline&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_prefetch_block_distance&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;How many blocks ahead the prefetcher is looking&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_prefetch_hit&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of blocks not prefetched because they were already in the buffer pool&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_prefetch_io_depth&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;How many prefetches have been initiated but are not yet known to have completed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_prefetch_prefetch&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of blocks prefetched because they were not in the buffer pool&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_prefetch_reset_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Time at which these recovery prefetch statistics were last reset&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_prefetch_skip_fpw&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of blocks not prefetched because a full page image was included in the WAL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_prefetch_skip_init&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of blocks not prefetched because they would be zero-initialized&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_prefetch_skip_new&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of blocks not prefetched because they didn&amp;rsquo;t exist yet&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_prefetch_skip_rep&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of blocks not prefetched because they were already recently prefetched&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_prefetch_wal_distance&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;How many bytes ahead the prefetcher is looking&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_require_record&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;End-of-backup record required&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recv_flush_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Last write-ahead log location already received and flushed to disk&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recv_flush_tli&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Timeline number of last write-ahead log location received and flushed to disk&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recv_init_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;First write-ahead log location used when WAL receiver is started&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recv_init_tli&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;First timeline number used when WAL receiver is started&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recv_msg_recv_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Receipt time of last message received from origin WAL sender&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recv_msg_send_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Send time of last message received from origin WAL sender&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recv_pid&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Process ID of the WAL receiver process&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recv_reported_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Last write-ahead log location reported to origin WAL sender&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recv_reported_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Time of last write-ahead log location reported to origin WAL sender&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recv_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Time of current snapshot&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recv_write_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Last write-ahead log location already received and written to disk, but not flushed.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_relkind_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Number of relations of corresponding relkind&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_backend_xmin&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;This standby&amp;rsquo;s xmin horizon reported by hot_standby_feedback.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_client_port&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &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;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_flush_diff&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Last log position flushed to disk by this standby server diff with current lsn&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_flush_lag&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &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;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_flush_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Last write-ahead log location flushed to disk by this standby server&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_launch_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time when this process was started, i.e., when the client connected to this WAL sender&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Current log position on this server&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_replay_diff&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Last log position replayed into the database on this standby server diff with current lsn&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_replay_lag&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &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;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_replay_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Last write-ahead log location replayed into the database on this standby server&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_reply_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Send time of last reply message received from standby server&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_sent_diff&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Last log position sent to this standby server diff with current lsn&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_sent_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Last write-ahead log location sent on this connection&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_state&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Current WAL sender encoded state 0-4 for streaming startup catchup backup stopping&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_sync_priority&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Priority of this standby server for being chosen as the synchronous standby&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_sync_state&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Encoded synchronous state of this standby server, 0-3 for async potential sync quorum&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Current timestamp in unix epoch&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_write_diff&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Last log position written to disk by this standby server diff with current lsn&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_write_lag&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Time elapsed between flushing recent WAL locally and receiving notification that this standby server has written it&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_write_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Last write-ahead log location written to disk by this standby server&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_replay_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;replica only, location of wal applied&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_seq_blks_hit&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of buffer hits in this sequence&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_seq_blks_read&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of disk blocks read from this sequence&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_seq_last_value&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;The last sequence value written to disk&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_setting_block_size&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;pg page block size, 8192 by default&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_setting_data_checksums&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;whether data checksum is enabled, 1 enabled 0 disabled&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_setting_max_connections&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;number of concurrent connections to the database server&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_setting_max_locks_per_transaction&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;no more than this many distinct objects can be locked at any one time&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_setting_max_prepared_transactions&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;maximum number of transactions that can be in the prepared state simultaneously&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_setting_max_replication_slots&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;maximum number of replication slots&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_setting_max_wal_senders&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;maximum number of concurrent connections from standby servers&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_setting_max_worker_processes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;maximum number of background processes that the system can support&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_setting_wal_log_hints&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;whether wal_log_hints is enabled, 1 enabled 0 disabled&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_size_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;File size in bytes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_active&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;True(1) if this slot is currently actively being used&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_catalog_xmin&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;The oldest transaction affecting the system catalogs that this slot needs the database to retain.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_confirm_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;The address (LSN) up to which the logical slot&amp;rsquo;s consumer has confirmed receiving data.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_reset_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;When statistics were last reset&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_restart_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;The address (LSN) of oldest WAL which still might be required by the consumer of this slot&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_retained_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Size of bytes that retained for this slot&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_safe_wal_size&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;bytes that can be written to WAL which will not make slot into lost&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_spill_bytes&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Bytes that spilled to disk due to logical decode mem exceeding&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_spill_count&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Xacts that spilled to disk due to logical decode mem exceeding (a xact can be spilled multiple times)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_spill_txns&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Xacts that spilled to disk due to logical decode mem exceeding (subtrans included)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_stream_bytes&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Bytes that streamed to decoding output plugin after mem exceed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_stream_count&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Xacts that streamed to decoding output plugin after mem exceed (a xact can be streamed multiple times)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_stream_txns&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Xacts that streamed to decoding output plugin after mem exceed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_temporary&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;True(1) if this is a temporary replication slot.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_total_bytes&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of decoded bytes sent to the decoding output plugin for this slot&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_total_txns&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of decoded xacts sent to the decoding output plugin for this slot&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_wal_status&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;WAL reserve status 0-3 means reserved,extended,unreserved,lost, -1 means other&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_xmin&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;The oldest transaction that this slot needs the database to retain.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slru_blks_exists&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of blocks checked for existence for this SLRU&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slru_blks_hit&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of times disk blocks were found already in the SLRU, so that a read was not necessary&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slru_blks_read&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of disk blocks read for this SLRU&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slru_blks_written&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of disk blocks written for this SLRU&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slru_blks_zeroed&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of blocks zeroed during initializations&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slru_flushes&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of flushes of dirty data for this SLRU&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slru_reset_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Time at which these statistics were last reset&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slru_truncates&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of truncates for this SLRU&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_ssl_disabled&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of client connection that does not use ssl&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_ssl_enabled&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of client connection that use ssl&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_sync_standby_enabled&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&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;
 &lt;td&gt;Synchronous commit enabled, 1 if enabled, 0 if disabled&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_age&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Age of this table in vacuum cycles&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_analyze_count&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of times this table has been manually analyzed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_autoanalyze_count&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of times this table has been analyzed by the autovacuum daemon&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_autovacuum_count&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of times this table has been vacuumed by the autovacuum daemon&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_frozenxid&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;All txid before this have been frozen on this table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_heap_blks_hit&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of buffer hits in this table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_heap_blks_read&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of disk blocks read from this table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_idx_blks_hit&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of buffer hits in all indexes on this table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_idx_blks_read&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of disk blocks read from all indexes on this table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_idx_scan&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of index scans initiated on this table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_idx_tup_fetch&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of live rows fetched by index scans&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_kind&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Relation kind r/table/114&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_n_dead_tup&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Estimated number of dead rows&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_n_ins_since_vacuum&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Estimated number of rows inserted since this table was last vacuumed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_n_live_tup&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Estimated number of live rows&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_n_mod_since_analyze&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Estimated number of rows modified since this table was last analyzed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_n_tup_del&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of rows deleted&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_n_tup_hot_upd&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of rows HOT updated (i.e with no separate index update required)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_n_tup_ins&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of rows inserted&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_n_tup_mod&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of rows modified (insert + update + delete)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_n_tup_newpage_upd&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of rows updated where the successor version goes onto a new heap page&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_n_tup_upd&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of rows updated (includes HOT updated rows)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_ncols&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Number of columns in the table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_pages&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Size of the on-disk representation of this table in pages&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_relid&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Relation oid of this table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_seq_scan&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of sequential scans initiated on this table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_seq_tup_read&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of live rows fetched by sequential scans&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_size_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Total bytes of this table (including toast, index, toast index)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_size_indexsize&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Bytes of all related indexes of this table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_size_relsize&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Bytes of this table itself (main, vm, fsm)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_size_toastsize&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Bytes of toast tables of this table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_tbl_scan&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of scans initiated on this table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_tup_read&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of live rows fetched by scans&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_tuples&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;All txid before this have been frozen on this table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_vacuum_count&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of times this table has been manually vacuumed (not counting VACUUM FULL)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_timestamp&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;database current timestamp&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_up&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;last scrape was able to connect to the server: 1 for yes, 0 for no&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_uptime&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;seconds since postmaster start&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_version&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;server version number&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_wait_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Count of WaitEvent on target database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_wal_buffers_full&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of times WAL data was written to disk because WAL buffers became full&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_wal_bytes&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Total amount of WAL generated in bytes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_wal_fpi&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Total number of WAL full page images generated&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_wal_records&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Total number of WAL records generated&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_wal_reset_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;When statistics were last reset&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_wal_sync&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of times WAL files were synced to disk via issue_xlog_fsync request&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_wal_sync_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Total amount of time spent syncing WAL files to disk via issue_xlog_fsync request, in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_wal_write&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of times WAL buffers were written out to disk via XLogWrite request.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_wal_write_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Total amount of time spent writing WAL buffers to disk via XLogWrite request in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_write_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;primary only, location of current wal writing&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_xact_xmax&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;First as-yet-unassigned txid. txid &amp;gt;= this are invisible.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_xact_xmin&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Earliest txid that is still active&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_xact_xnum&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Current active transaction count&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:cls:load1&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:cls:load15&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:cls:load5&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:db:conn_usage&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:db:conn_usage_reserve&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:db:pool_current_conn&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:db:pool_disabled&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:db:pool_max_conn&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:db:pool_paused&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:db:pool_reserve_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:db:pool_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:ins:free_clients&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:ins:free_servers&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:ins:load1&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:ins:load15&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:ins:load5&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:ins:login_clients&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:ins:pool_databases&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:ins:pool_users&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:ins:pools&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:ins:used_clients&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_database_current_connections&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Current number of connections for this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_database_disabled&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;True(1) if this database is currently disabled, else 0&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_database_max_connections&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Maximum number of allowed connections for this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_database_min_pool_size&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Minimum number of server connections&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_database_paused&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;True(1) if this database is currently paused, else 0&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_database_pool_size&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Maximum number of server connections&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_database_reserve_pool&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Maximum number of additional connections for this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_agent_up&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_last_scrape_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;seconds exporter spending on scrapping&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_query_cache_ttl&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;times to live of query cache&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_query_scrape_duration&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;seconds query spending on scrapping&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_query_scrape_error_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;times the query failed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_query_scrape_hit_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;numbers been scrapped from this query&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_query_scrape_metric_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;numbers of metrics been scrapped from this query&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_query_scrape_total_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;times exporter server was scraped for metrics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_scrape_duration&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;seconds exporter spending on scrapping&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_scrape_error_count&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;times exporter was scraped for metrics and failed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_scrape_total_count&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;times exporter was scraped for metrics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_server_scrape_duration&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;seconds exporter server spending on scrapping&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_server_scrape_total_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;times exporter server was scraped for metrics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_server_scrape_total_seconds&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;seconds exporter server spending on scrapping&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_up&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;always be 1 if your could retrieve metrics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_uptime&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;seconds since exporter primary server inited&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_in_recovery&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;server is in recovery mode? 1 for yes 0 for no&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_list_items&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &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;
 &lt;td&gt;Number of corresponding pgbouncer object&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_active_cancel_clients&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Client connections that have forwarded query cancellations to the server and are waiting for the server response.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_active_cancel_servers&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Server connections that are currently forwarding a cancel request&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_active_clients&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Client connections that are linked to server connection and can process queries&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_active_servers&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Server connections that are linked to a client&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_cancel_clients&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Client connections that have not forwarded query cancellations to the server yet.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_cancel_servers&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;cancel requests have completed that were sent to cancel a query on this server&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_idle_servers&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Server connections that are unused and immediately usable for client queries&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_login_servers&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Server connections currently in the process of logging in&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_maxwait&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;How long the first(oldest) client in the queue has waited, in seconds, key metric&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_maxwait_us&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Microsecond part of the maximum waiting time.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_tested_servers&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Server connections that are currently running reset or check query&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_used_servers&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Server connections that have been idle for more than server_check_delay (means have to run check query)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_waiting_clients&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Client connections that have sent queries but have not yet got a server connection&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_avg_query_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Average queries per second in last stat period&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_avg_query_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Average query duration, in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_avg_recv&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Average received (from clients) bytes per second&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_avg_sent&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Average sent (to clients) bytes per second&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_avg_wait_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Time spent by clients waiting for a server, in seconds (average per second).&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_avg_xact_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Average transactions per second in last stat period&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_avg_xact_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Average transaction duration, in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_total_query_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Total number of SQL queries pooled by pgbouncer&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_total_query_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total number of seconds spent when executing queries&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_total_received&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total volume in bytes of network traffic received by pgbouncer&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_total_sent&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total volume in bytes of network traffic sent by pgbouncer&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_total_wait_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time spent by clients waiting for a server, in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_total_xact_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Total number of SQL transactions pooled by pgbouncer&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_total_xact_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total number of seconds spent when in a transaction&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_up&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;last scrape was able to connect to the server: 1 for yes, 0 for no&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_version&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;server version number&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;process_cpu_seconds_total&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Total user and system CPU time spent in seconds.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;process_max_fds&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Maximum number of open file descriptors.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;process_open_fds&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of open file descriptors.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;process_resident_memory_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Resident memory size in bytes.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;process_start_time_seconds&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Start time of the process since unix epoch in seconds.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;process_virtual_memory_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Virtual memory size in bytes.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;process_virtual_memory_max_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Maximum amount of virtual memory available in bytes.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;promhttp_metric_handler_requests_in_flight&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Current number of scrapes being served.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;promhttp_metric_handler_requests_total&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total number of scrapes by HTTP status code.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;scrape_duration_seconds&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;scrape_samples_post_metric_relabeling&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;scrape_samples_scraped&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;scrape_series_added&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;up&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>Metrics List</title><link>https://pigsty.io/docs/pgsql/monitor/metric/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/monitor/metric/</guid><description>&lt;p&gt;The &lt;a href="https://pigsty.io/docs/pgsql"&gt;&lt;strong&gt;&lt;code&gt;PGSQL&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; module contains 638 types of available monitoring metrics.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Metric Name&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Labels&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;ALERTS&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ALERTS_FOR_STATE&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;cls:pressure1&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;cls:pressure15&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;cls:pressure5&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_gc_duration_seconds&lt;/td&gt;
 &lt;td&gt;summary&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &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;
 &lt;td&gt;A summary of the pause duration of garbage collection cycles.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_gc_duration_seconds_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_gc_duration_seconds_sum&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_goroutines&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of goroutines that currently exist.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_info&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Information about the Go environment.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_alloc_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of bytes allocated and still in use.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_alloc_bytes_total&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Total number of bytes allocated, even if freed.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_buck_hash_sys_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of bytes used by the profiling bucket hash table.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_frees_total&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Total number of frees.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_gc_sys_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of bytes used for garbage collection system metadata.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_heap_alloc_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of heap bytes allocated and still in use.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_heap_idle_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of heap bytes waiting to be used.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_heap_inuse_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of heap bytes that are in use.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_heap_objects&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of allocated objects.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_heap_released_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of heap bytes released to OS.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_heap_sys_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of heap bytes obtained from system.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_last_gc_time_seconds&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of seconds since 1970 of last garbage collection.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_lookups_total&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Total number of pointer lookups.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_mallocs_total&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Total number of mallocs.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_mcache_inuse_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of bytes in use by mcache structures.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_mcache_sys_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of bytes used for mcache structures obtained from system.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_mspan_inuse_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of bytes in use by mspan structures.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_mspan_sys_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of bytes used for mspan structures obtained from system.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_next_gc_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of heap bytes when next garbage collection will take place.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_other_sys_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of bytes used for other system allocations.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_stack_inuse_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of bytes in use by the stack allocator.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_stack_sys_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of bytes obtained from system for stack allocator.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_memstats_sys_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of bytes obtained from system.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;go_threads&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of OS threads created.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ins:pressure1&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ins:pressure15&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ins:pressure5&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_cluster_unlocked&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if the cluster is unlocked, 0 if locked.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_dcs_last_seen&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Epoch timestamp when DCS was last contacted successfully by Patroni.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_failsafe_mode_is_active&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if failsafe mode is active, 0 if inactive.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_is_paused&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if auto failover is disabled, 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_master&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if this node is the leader, 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_pending_restart&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if the node needs a restart, 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_postgres_in_archive_recovery&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if Postgres is replicating from archive, 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_postgres_running&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if Postgres is running, 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_postgres_server_version&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Version of Postgres (if running), 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_postgres_streaming&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if Postgres is streaming, 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_postgres_timeline&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Postgres timeline of this node (if running), 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_postmaster_start_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Epoch seconds since Postgres started.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_primary&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if this node is the leader, 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_replica&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if this node is a replica, 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_standby_leader&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if this node is the standby_leader, 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_sync_standby&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if this node is a sync standby replica, 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_up&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_version&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Patroni semver without periods.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_xlog_location&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Current location of the Postgres transaction log, 0 if this node is not the leader.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_xlog_paused&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Value is 1 if the Postgres xlog is paused, 0 otherwise.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_xlog_received_location&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Current location of the received Postgres transaction log, 0 if this node is not a replica.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_xlog_replayed_location&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Current location of the replayed Postgres transaction log, 0 if this node is not a replica.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;patroni_xlog_replayed_timestamp&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/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;
 &lt;td&gt;Current timestamp of the replayed Postgres transaction log, 0 if null.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:active_backends&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:active_time_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:active_time_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:active_time_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:age&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:buf_alloc_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:buf_clean_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:buf_flush_backend_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:buf_flush_checkpoint_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:cpu_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:cpu_usage&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:cpu_usage_15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:cpu_usage_1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:cpu_usage_5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:db_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:file_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:ixact_backends&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:ixact_time_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:lag_bytes&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:lag_seconds&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:leader&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:load1&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:load15&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:load5&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:lock_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:locks&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:log_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:lsn_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:members&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:num_backends&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:partition&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:receiver&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:rlock_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:saturation1&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:saturation15&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:saturation5&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:sender&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:session_time_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:slot_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:slot_retained_bytes&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:standby_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:sync_state&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:timeline&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:tup_deleted_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:tup_fetched_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:tup_inserted_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:tup_modified_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:tup_returned_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:wal_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:xact_commit_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:xact_commit_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:xact_commit_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:xact_rollback_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:xact_rollback_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:xact_rollback_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:xact_total_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:xact_total_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:xact_total_sigma15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:cls:xlock_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:active_backends&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:active_time_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:active_time_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:active_time_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:age&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:age_deriv1h&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:age_exhaust&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:blk_io_time_seconds_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:blk_read_time_seconds_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:blk_write_time_seconds_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:blks_access_1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:blks_hit_1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:blks_hit_ratio1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:blks_read_1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:conn_limit&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:conn_usage&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:db_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:ixact_backends&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:ixact_time_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:lock_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:num_backends&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:rlock_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:session_time_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:temp_bytes_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:temp_files_1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:tup_deleted_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:tup_fetched_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:tup_inserted_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:tup_modified_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:tup_returned_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:wlock_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:xact_commit_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:xact_commit_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:xact_commit_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:xact_rollback_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:xact_rollback_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:xact_rollback_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:xact_total_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:xact_total_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:xact_total_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:xact_total_sigma15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:db:xlock_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:active_backends&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:active_time_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:active_time_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:active_time_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:age&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:cpu_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:cpu_usage&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:cpu_usage_15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:cpu_usage_1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:cpu_usage_5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:ixact_backends&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:ixact_time_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:lag_bytes&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:lag_seconds&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:lsn_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:session_time_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:tup_deleted_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:tup_fetched_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:tup_inserted_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:tup_modified_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:tup_returned_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:xact_commit_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:xact_commit_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:xact_commit_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:xact_rollback_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:xact_rollback_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:xact_rollback_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:xact_total_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:xact_total_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:env:xact_total_sigma15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:active_backends&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:active_time_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:active_time_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:active_time_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:age&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:blks_hit_ratio1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:buf_alloc_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:buf_clean_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:buf_flush_backend_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:buf_flush_checkpoint_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:ckpt_1h&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:ckpt_req_1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:ckpt_timed_1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:conn_limit&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:conn_usage&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:cpu_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:cpu_usage&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:cpu_usage_15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:cpu_usage_1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:cpu_usage_5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:db_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:file_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:fs_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:is_leader&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:ixact_backends&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:ixact_time_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:lag_bytes&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:lag_seconds&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:load1&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:load15&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:load5&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:lock_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:locks&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:log_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:lsn_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:mem_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:num_backends&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:rlock_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:saturation1&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:saturation15&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:saturation5&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:session_time_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:slot_retained_bytes&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:space_usage&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:status&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:sync_state&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:target_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:timeline&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:tup_deleted_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:tup_fetched_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:tup_inserted_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:tup_modified_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:tup_returned_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:wal_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:wlock_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:xact_commit_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:xact_commit_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:xact_commit_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:xact_rollback_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:xact_rollback_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:xact_rollback_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:xact_total_rate15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:xact_total_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:xact_total_rate5m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:xact_total_sigma15m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:ins:xlock_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:query:call_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:query:rt_1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg:table:scan_rate1m&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_activity_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Count of connection among (datname,state)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_activity_max_conn_duration&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Max backend session duration since state change among (datname, state)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_activity_max_duration&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Max duration since last state change among (datname, state)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_activity_max_tx_duration&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Max transaction duration since state change among (datname, state)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_archiver_failed_count&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of failed attempts for archiving WAL files&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_archiver_finish_count&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of WAL files that have been successfully archived&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_archiver_last_failed_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Time of the last failed archival operation&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_archiver_last_finish_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Time of the last successful archive operation&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_archiver_reset_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Time at which archive statistics were last reset&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_backend_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Database backend process count by backend_type&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_bgwriter_buffers_alloc&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of buffers allocated&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_bgwriter_buffers_backend&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of buffers written directly by a backend&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_bgwriter_buffers_backend_fsync&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of times a backend had to execute its own fsync call&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_bgwriter_buffers_checkpoint&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of buffers written during checkpoints&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_bgwriter_buffers_clean&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of buffers written by the background writer&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_bgwriter_checkpoint_sync_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &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;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_bgwriter_checkpoint_write_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &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;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_bgwriter_checkpoints_req&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of requested checkpoints that have been performed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_bgwriter_checkpoints_timed&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of scheduled checkpoints that have been performed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_bgwriter_maxwritten_clean&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of times the background writer stopped a cleaning scan because it had written too many buffers&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_bgwriter_reset_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Time at which bgwriter statistics were last reset&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_boot_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;unix timestamp when postmaster boot&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_checkpoint_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint location&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_elapse&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Seconds elapsed since latest checkpoint in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_full_page_writes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s full_page_writes enabled&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_newest_commit_ts_xid&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s newestCommitTsXid&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_next_multi_offset&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s NextMultiOffset&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_next_multixact_id&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s NextMultiXactId&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_next_oid&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s NextOID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_next_xid&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s NextXID xid&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_next_xid_epoch&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s NextXID epoch&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_oldest_active_xid&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s oldestActiveXID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_oldest_commit_ts_xid&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s oldestCommitTsXid&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_oldest_multi_dbid&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s oldestMulti&amp;rsquo;s DB OID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_oldest_multi_xid&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s oldestMultiXid&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_oldest_xid&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s oldestXID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_oldest_xid_dbid&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s oldestXID&amp;rsquo;s DB OID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_prev_tli&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s PrevTimeLineID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_redo_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s REDO location&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Time of latest checkpoint&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_checkpoint_tli&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Latest checkpoint&amp;rsquo;s TimeLineID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_conf_reload_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;seconds since last configuration reload&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_active_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time spent executing SQL statements in this database, in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_age&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Age of database calculated from datfrozenxid&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_allow_conn&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;If false(0) then no one can connect to this database.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_blk_read_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time spent reading data file blocks by backends in this database, in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_blk_write_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time spent writing data file blocks by backends in this database, in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_blks_access&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of times disk blocks that accessed read+hit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_blks_hit&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of times disk blocks were found already in the buffer cache&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_blks_read&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of disk blocks read in this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_cks_fail_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Time at which the last data page checksum failure was detected in this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_cks_fails&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of data page checksum failures detected in this database, -1 for not enabled&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_confl_confl_bufferpin&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of queries in this database that have been canceled due to pinned buffers&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_confl_confl_deadlock&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of queries in this database that have been canceled due to deadlocks&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_confl_confl_lock&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of queries in this database that have been canceled due to lock timeouts&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_confl_confl_snapshot&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of queries in this database that have been canceled due to old snapshots&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_confl_confl_tablespace&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of queries in this database that have been canceled due to dropped tablespaces&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_conflicts&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of queries canceled due to conflicts with recovery in this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_conn_limit&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Sets maximum number of concurrent connections that can be made to this database. -1 means no limit.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_datid&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;OID of the database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_deadlocks&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of deadlocks detected in this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_frozen_xid&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;All transaction IDs before this one have been frozened&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_is_template&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;If true(1), then this database can be cloned by any user with CREATEDB privileges&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_ixact_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time spent idling while in a transaction in this database, in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_numbackends&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Number of backends currently connected to this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_reset_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time at which database statistics were last reset&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_session_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time spent by database sessions in this database, in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_sessions&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total number of sessions established to this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_sessions_abandoned&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of database sessions to this database that were terminated because connection to the client was lost&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_sessions_fatal&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of database sessions to this database that were terminated by fatal errors&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_sessions_killed&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of database sessions to this database that were terminated by operator intervention&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_temp_bytes&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total amount of data written to temporary files by queries in this database.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_temp_files&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of temporary files created by queries in this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_tup_deleted&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of rows deleted by queries in this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_tup_fetched&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of rows fetched by queries in this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_tup_inserted&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of rows inserted by queries in this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_tup_modified&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of rows modified by queries in this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_tup_returned&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of rows returned by queries in this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_tup_updated&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of rows updated by queries in this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_xact_commit&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of transactions in this database that have been committed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_xact_rollback&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of transactions in this database that have been rolled back&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_db_xact_total&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of transactions in this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_downstream_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Count of corresponding state&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_agent_up&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_last_scrape_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;seconds exporter spending on scrapping&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_query_cache_ttl&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;times to live of query cache&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_query_scrape_duration&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;seconds query spending on scrapping&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_query_scrape_error_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;times the query failed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_query_scrape_hit_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;numbers been scrapped from this query&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_query_scrape_metric_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;numbers of metrics been scrapped from this query&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_query_scrape_total_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;times exporter server was scraped for metrics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_scrape_duration&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;seconds exporter spending on scrapping&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_scrape_error_count&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;times exporter was scraped for metrics and failed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_scrape_total_count&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;times exporter was scraped for metrics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_server_scrape_duration&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;seconds exporter server spending on scrapping&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_server_scrape_error_count&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_server_scrape_total_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;times exporter server was scraped for metrics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_server_scrape_total_seconds&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;seconds exporter server spending on scrapping&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_up&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;always be 1 if your could retrieve metrics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_exporter_uptime&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;seconds since exporter primary server inited&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_flush_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;primary only, location of current wal syncing&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_func_calls&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of times this function has been called&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_func_self_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total time spent in this function itself, not including other functions called by it, in ms&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_func_total_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total time spent in this function and all other functions called by it, in ms&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_in_recovery&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;server is in recovery mode? 1 for yes 0 for no&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_index_idx_blks_hit&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of buffer hits in this index&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_index_idx_blks_read&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of disk blocks read from this index&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_index_idx_scan&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of index scans initiated on this index&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_index_idx_tup_fetch&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of live table rows fetched by simple index scans using this index&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_index_idx_tup_read&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of index entries returned by scans on this index&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_index_relpages&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Size of the on-disk representation of this index in pages&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_index_reltuples&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Estimate relation tuples&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_insert_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;primary only, location of current wal inserting&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_evictions&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of times a block has been written out from a shared or local buffer&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_extend_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time spent in extend operations in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_extends&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of relation extend operations, each of the size specified in op_bytes.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_fsync_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time spent in fsync operations in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_fsyncs&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of fsync calls. These are only tracked in context normal&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_hits&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;The number of times a desired block was found in a shared buffer.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_op_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;The number of bytes per unit of I/O read, written, or extended. 8192 by default&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_read_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time spent in read operations in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_reads&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of read operations, each of the size specified in op_bytes.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_reset_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Timestamp at which these statistics were last reset&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_reuses&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;The number of times an existing buffer in reused&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_write_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time spent in write operations in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_writeback_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time spent in writeback operations in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_writebacks&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of units of size op_bytes which the process requested the kernel write out to permanent storage.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_io_writes&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of write operations, each of the size specified in op_bytes.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_is_in_recovery&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;1 if in recovery mode&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_is_wal_replay_paused&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;1 if wal play paused&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_lag&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;replica only, replication lag in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_last_replay_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;time when last transaction been replayed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_lock_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Number of locks of corresponding mode and database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;log sequence number, current write location&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_meta_info&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;constant 1&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_query_calls&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of times the statement was executed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_query_exec_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total time spent executing the statement, in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_query_io_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total time the statement spent reading and writing blocks, in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_query_rows&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total number of rows retrieved or affected by the statement&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_query_sblk_dirtied&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total number of shared blocks dirtied by the statement&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_query_sblk_hit&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total number of shared block cache hits by the statement&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_query_sblk_read&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total number of shared blocks read by the statement&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_query_sblk_written&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total number of shared blocks written by the statement&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_query_wal_bytes&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total amount of WAL bytes generated by the statement&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_receive_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;replica only, location of wal synced to disk&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_backup_end_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Backup end location&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_backup_start_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Backup start location&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_min_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Minimum recovery ending location&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_min_timeline&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Min recovery ending loc&amp;rsquo;s timeline&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_prefetch_block_distance&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;How many blocks ahead the prefetcher is looking&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_prefetch_hit&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of blocks not prefetched because they were already in the buffer pool&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_prefetch_io_depth&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;How many prefetches have been initiated but are not yet known to have completed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_prefetch_prefetch&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of blocks prefetched because they were not in the buffer pool&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_prefetch_reset_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Time at which these recovery prefetch statistics were last reset&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_prefetch_skip_fpw&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of blocks not prefetched because a full page image was included in the WAL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_prefetch_skip_init&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of blocks not prefetched because they would be zero-initialized&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_prefetch_skip_new&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of blocks not prefetched because they didn&amp;rsquo;t exist yet&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_prefetch_skip_rep&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of blocks not prefetched because they were already recently prefetched&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_prefetch_wal_distance&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;How many bytes ahead the prefetcher is looking&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recovery_require_record&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;End-of-backup record required&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recv_flush_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Last write-ahead log location already received and flushed to disk&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recv_flush_tli&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Timeline number of last write-ahead log location received and flushed to disk&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recv_init_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;First write-ahead log location used when WAL receiver is started&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recv_init_tli&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;First timeline number used when WAL receiver is started&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recv_msg_recv_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Receipt time of last message received from origin WAL sender&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recv_msg_send_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Send time of last message received from origin WAL sender&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recv_pid&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Process ID of the WAL receiver process&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recv_reported_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Last write-ahead log location reported to origin WAL sender&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recv_reported_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Time of last write-ahead log location reported to origin WAL sender&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recv_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Time of current snapshot&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_recv_write_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Last write-ahead log location already received and written to disk, but not flushed.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_relkind_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Number of relations of corresponding relkind&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_backend_xmin&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;This standby&amp;rsquo;s xmin horizon reported by hot_standby_feedback.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_client_port&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &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;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_flush_diff&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Last log position flushed to disk by this standby server diff with current lsn&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_flush_lag&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &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;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_flush_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Last write-ahead log location flushed to disk by this standby server&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_launch_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time when this process was started, i.e., when the client connected to this WAL sender&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Current log position on this server&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_replay_diff&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Last log position replayed into the database on this standby server diff with current lsn&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_replay_lag&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &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;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_replay_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Last write-ahead log location replayed into the database on this standby server&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_reply_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Send time of last reply message received from standby server&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_sent_diff&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Last log position sent to this standby server diff with current lsn&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_sent_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Last write-ahead log location sent on this connection&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_state&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Current WAL sender encoded state 0-4 for streaming startup catchup backup stopping&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_sync_priority&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Priority of this standby server for being chosen as the synchronous standby&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_sync_state&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Encoded synchronous state of this standby server, 0-3 for async potential sync quorum&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Current timestamp in unix epoch&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_write_diff&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Last log position written to disk by this standby server diff with current lsn&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_write_lag&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Time elapsed between flushing recent WAL locally and receiving notification that this standby server has written it&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_repl_write_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Last write-ahead log location written to disk by this standby server&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_replay_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;replica only, location of wal applied&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_seq_blks_hit&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of buffer hits in this sequence&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_seq_blks_read&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of disk blocks read from this sequence&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_seq_last_value&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;The last sequence value written to disk&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_setting_block_size&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;pg page block size, 8192 by default&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_setting_data_checksums&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;whether data checksum is enabled, 1 enabled 0 disabled&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_setting_max_connections&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;number of concurrent connections to the database server&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_setting_max_locks_per_transaction&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;no more than this many distinct objects can be locked at any one time&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_setting_max_prepared_transactions&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;maximum number of transactions that can be in the prepared state simultaneously&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_setting_max_replication_slots&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;maximum number of replication slots&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_setting_max_wal_senders&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;maximum number of concurrent connections from standby servers&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_setting_max_worker_processes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;maximum number of background processes that the system can support&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_setting_wal_log_hints&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;whether wal_log_hints is enabled, 1 enabled 0 disabled&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_size_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;File size in bytes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_active&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;True(1) if this slot is currently actively being used&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_catalog_xmin&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;The oldest transaction affecting the system catalogs that this slot needs the database to retain.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_confirm_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;The address (LSN) up to which the logical slot&amp;rsquo;s consumer has confirmed receiving data.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_reset_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;When statistics were last reset&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_restart_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;The address (LSN) of oldest WAL which still might be required by the consumer of this slot&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_retained_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Size of bytes that retained for this slot&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_safe_wal_size&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;bytes that can be written to WAL which will not make slot into lost&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_spill_bytes&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Bytes that spilled to disk due to logical decode mem exceeding&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_spill_count&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Xacts that spilled to disk due to logical decode mem exceeding (a xact can be spilled multiple times)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_spill_txns&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Xacts that spilled to disk due to logical decode mem exceeding (subtrans included)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_stream_bytes&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Bytes that streamed to decoding output plugin after mem exceed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_stream_count&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Xacts that streamed to decoding output plugin after mem exceed (a xact can be streamed multiple times)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_stream_txns&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Xacts that streamed to decoding output plugin after mem exceed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_temporary&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;True(1) if this is a temporary replication slot.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_total_bytes&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of decoded bytes sent to the decoding output plugin for this slot&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_total_txns&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of decoded xacts sent to the decoding output plugin for this slot&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_wal_status&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;WAL reserve status 0-3 means reserved,extended,unreserved,lost, -1 means other&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slot_xmin&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;The oldest transaction that this slot needs the database to retain.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slru_blks_exists&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of blocks checked for existence for this SLRU&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slru_blks_hit&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of times disk blocks were found already in the SLRU, so that a read was not necessary&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slru_blks_read&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of disk blocks read for this SLRU&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slru_blks_written&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of disk blocks written for this SLRU&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slru_blks_zeroed&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of blocks zeroed during initializations&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slru_flushes&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of flushes of dirty data for this SLRU&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slru_reset_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Time at which these statistics were last reset&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_slru_truncates&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of truncates for this SLRU&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_ssl_disabled&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of client connection that does not use ssl&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_ssl_enabled&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of client connection that use ssl&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_sync_standby_enabled&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&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;
 &lt;td&gt;Synchronous commit enabled, 1 if enabled, 0 if disabled&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_age&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Age of this table in vacuum cycles&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_analyze_count&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of times this table has been manually analyzed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_autoanalyze_count&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of times this table has been analyzed by the autovacuum daemon&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_autovacuum_count&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of times this table has been vacuumed by the autovacuum daemon&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_frozenxid&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;All txid before this have been frozen on this table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_heap_blks_hit&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of buffer hits in this table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_heap_blks_read&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of disk blocks read from this table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_idx_blks_hit&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of buffer hits in all indexes on this table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_idx_blks_read&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of disk blocks read from all indexes on this table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_idx_scan&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of index scans initiated on this table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_idx_tup_fetch&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of live rows fetched by index scans&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_kind&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Relation kind r/table/114&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_n_dead_tup&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Estimated number of dead rows&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_n_ins_since_vacuum&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Estimated number of rows inserted since this table was last vacuumed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_n_live_tup&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Estimated number of live rows&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_n_mod_since_analyze&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Estimated number of rows modified since this table was last analyzed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_n_tup_del&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of rows deleted&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_n_tup_hot_upd&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of rows HOT updated (i.e with no separate index update required)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_n_tup_ins&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of rows inserted&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_n_tup_mod&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of rows modified (insert + update + delete)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_n_tup_newpage_upd&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of rows updated where the successor version goes onto a new heap page&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_n_tup_upd&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of rows updated (includes HOT updated rows)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_ncols&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Number of columns in the table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_pages&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Size of the on-disk representation of this table in pages&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_relid&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Relation oid of this table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_seq_scan&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of sequential scans initiated on this table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_seq_tup_read&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of live rows fetched by sequential scans&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_size_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Total bytes of this table (including toast, index, toast index)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_size_indexsize&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Bytes of all related indexes of this table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_size_relsize&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Bytes of this table itself (main, vm, fsm)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_size_toastsize&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Bytes of toast tables of this table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_tbl_scan&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of scans initiated on this table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_tup_read&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of live rows fetched by scans&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_tuples&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;All txid before this have been frozen on this table&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_table_vacuum_count&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Number of times this table has been manually vacuumed (not counting VACUUM FULL)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_timestamp&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;database current timestamp&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_up&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;last scrape was able to connect to the server: 1 for yes, 0 for no&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_uptime&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;seconds since postmaster start&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_version&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;server version number&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_wait_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Count of WaitEvent on target database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_wal_buffers_full&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of times WAL data was written to disk because WAL buffers became full&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_wal_bytes&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Total amount of WAL generated in bytes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_wal_fpi&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Total number of WAL full page images generated&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_wal_records&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Total number of WAL records generated&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_wal_reset_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;When statistics were last reset&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_wal_sync&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of times WAL files were synced to disk via issue_xlog_fsync request&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_wal_sync_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Total amount of time spent syncing WAL files to disk via issue_xlog_fsync request, in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_wal_write&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of times WAL buffers were written out to disk via XLogWrite request.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_wal_write_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Total amount of time spent writing WAL buffers to disk via XLogWrite request in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_write_lsn&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;primary only, location of current wal writing&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_xact_xmax&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;First as-yet-unassigned txid. txid &amp;gt;= this are invisible.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_xact_xmin&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Earliest txid that is still active&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pg_xact_xnum&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Current active transaction count&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:cls:load1&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:cls:load15&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:cls:load5&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:db:conn_usage&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:db:conn_usage_reserve&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:db:pool_current_conn&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:db:pool_disabled&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:db:pool_max_conn&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:db:pool_paused&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:db:pool_reserve_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:db:pool_size&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &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;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:ins:free_clients&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:ins:free_servers&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:ins:load1&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:ins:load15&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:ins:load5&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:ins:login_clients&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:ins:pool_databases&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:ins:pool_users&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:ins:pools&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer:ins:used_clients&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_database_current_connections&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Current number of connections for this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_database_disabled&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;True(1) if this database is currently disabled, else 0&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_database_max_connections&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Maximum number of allowed connections for this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_database_min_pool_size&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Minimum number of server connections&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_database_paused&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;True(1) if this database is currently paused, else 0&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_database_pool_size&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Maximum number of server connections&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_database_reserve_pool&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Maximum number of additional connections for this database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_agent_up&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_last_scrape_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;seconds exporter spending on scrapping&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_query_cache_ttl&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;times to live of query cache&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_query_scrape_duration&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;seconds query spending on scrapping&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_query_scrape_error_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;times the query failed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_query_scrape_hit_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;numbers been scrapped from this query&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_query_scrape_metric_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;numbers of metrics been scrapped from this query&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_query_scrape_total_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;times exporter server was scraped for metrics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_scrape_duration&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;seconds exporter spending on scrapping&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_scrape_error_count&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;times exporter was scraped for metrics and failed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_scrape_total_count&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;times exporter was scraped for metrics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_server_scrape_duration&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;seconds exporter server spending on scrapping&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_server_scrape_total_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;times exporter server was scraped for metrics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_server_scrape_total_seconds&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;seconds exporter server spending on scrapping&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_up&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;always be 1 if your could retrieve metrics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_exporter_uptime&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;seconds since exporter primary server inited&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_in_recovery&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;server is in recovery mode? 1 for yes 0 for no&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_list_items&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &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;
 &lt;td&gt;Number of corresponding pgbouncer object&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_active_cancel_clients&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Client connections that have forwarded query cancellations to the server and are waiting for the server response.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_active_cancel_servers&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Server connections that are currently forwarding a cancel request&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_active_clients&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Client connections that are linked to server connection and can process queries&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_active_servers&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Server connections that are linked to a client&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_cancel_clients&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Client connections that have not forwarded query cancellations to the server yet.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_cancel_servers&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;cancel requests have completed that were sent to cancel a query on this server&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_idle_servers&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Server connections that are unused and immediately usable for client queries&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_login_servers&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Server connections currently in the process of logging in&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_maxwait&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;How long the first(oldest) client in the queue has waited, in seconds, key metric&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_maxwait_us&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Microsecond part of the maximum waiting time.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_tested_servers&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Server connections that are currently running reset or check query&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_used_servers&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Server connections that have been idle for more than server_check_delay (means have to run check query)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_pool_waiting_clients&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Client connections that have sent queries but have not yet got a server connection&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_avg_query_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Average queries per second in last stat period&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_avg_query_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Average query duration, in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_avg_recv&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Average received (from clients) bytes per second&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_avg_sent&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Average sent (to clients) bytes per second&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_avg_wait_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Time spent by clients waiting for a server, in seconds (average per second).&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_avg_xact_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Average transactions per second in last stat period&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_avg_xact_time&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Average transaction duration, in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_total_query_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Total number of SQL queries pooled by pgbouncer&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_total_query_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total number of seconds spent when executing queries&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_total_received&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total volume in bytes of network traffic received by pgbouncer&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_total_sent&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total volume in bytes of network traffic sent by pgbouncer&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_total_wait_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Time spent by clients waiting for a server, in seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_total_xact_count&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &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;
 &lt;td&gt;Total number of SQL transactions pooled by pgbouncer&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_stat_total_xact_time&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total number of seconds spent when in a transaction&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_up&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;last scrape was able to connect to the server: 1 for yes, 0 for no&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pgbouncer_version&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;server version number&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;process_cpu_seconds_total&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Total user and system CPU time spent in seconds.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;process_max_fds&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Maximum number of open file descriptors.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;process_open_fds&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of open file descriptors.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;process_resident_memory_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Resident memory size in bytes.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;process_start_time_seconds&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Start time of the process since unix epoch in seconds.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;process_virtual_memory_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Virtual memory size in bytes.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;process_virtual_memory_max_bytes&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Maximum amount of virtual memory available in bytes.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;promhttp_metric_handler_requests_in_flight&lt;/td&gt;
 &lt;td&gt;gauge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Current number of scrapes being served.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;promhttp_metric_handler_requests_total&lt;/td&gt;
 &lt;td&gt;counter&lt;/td&gt;
 &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;
 &lt;td&gt;Total number of scrapes by HTTP status code.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;scrape_duration_seconds&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;scrape_samples_post_metric_relabeling&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;scrape_samples_scraped&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;scrape_series_added&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;up&lt;/td&gt;
 &lt;td&gt;Unknown&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;job&lt;/code&gt;, &lt;code&gt;ins&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>Accidental Deletion</title><link>https://pigsty.io/docs/pgsql/tutorial/drop/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/tutorial/drop/</guid><description>&lt;h2 id="accidental-data-deletion"&gt;Accidental Data Deletion&lt;/h2&gt;
&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="https://pigsty.io/ext/e/pg_surgery"&gt;&lt;code&gt;pg_surgery&lt;/code&gt;&lt;/a&gt; or &lt;a href="https://pigsty.io/ext/e/pg_dirtyread"&gt;&lt;code&gt;pg_dirtyread&lt;/code&gt;&lt;/a&gt; extension for in-place surgical recovery.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- Immediately disable Auto Vacuum on this table and abort Auto Vacuum worker processes for this table
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;ALTER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;TABLE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;public&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;some_table&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;SET&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;autovacuum_enabled&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;off&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;toast&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;autovacuum_enabled&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;off&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;EXTENSION&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pg_dirtyread&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pg_dirtyread&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;tablename&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;type1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;col2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;type2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;...);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&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://pigsty.io/docs/pgsql/playbook/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/playbook/</guid><description>&lt;blockquote&gt;
&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;
&lt;/blockquote&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Playbook&lt;/th&gt;
 &lt;th&gt;Function&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#pgsqlyml"&gt;&lt;code&gt;pgsql.yml&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Initialize PostgreSQL cluster or add new replicas&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#pgsql-rmyml"&gt;&lt;code&gt;pgsql-rm.yml&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Remove PostgreSQL cluster or specific instances&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#pgsql-useryml"&gt;&lt;code&gt;pgsql-user.yml&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Add new business user to existing PostgreSQL cluster&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#pgsql-dbyml"&gt;&lt;code&gt;pgsql-db.yml&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Add new business database to existing PostgreSQL cluster&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#pgsql-monitoryml"&gt;&lt;code&gt;pgsql-monitor.yml&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Monitor remote PostgreSQL instances&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#pgsql-migrationyml"&gt;&lt;code&gt;pgsql-migration.yml&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Generate migration manual and scripts for existing PostgreSQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#pgsql-pitryml"&gt;&lt;code&gt;pgsql-pitr.yml&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Perform Point-In-Time Recovery (PITR)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="safeguard"&gt;Safeguard&lt;/h2&gt;
&lt;p&gt;Be &lt;strong&gt;extra cautious&lt;/strong&gt; when using &lt;a href="https://pigsty.io/docs/pgsql"&gt;&lt;code&gt;PGSQL&lt;/code&gt;&lt;/a&gt; playbooks. Misuse of &lt;a href="#pgsqlyml"&gt;&lt;code&gt;pgsql.yml&lt;/code&gt;&lt;/a&gt; and &lt;a href="#pgsql-rmyml"&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://pigsty.io/docs/pgsql/ext/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/ext/</guid><description>&lt;p&gt;Pigsty provides &lt;a href="https://pigsty.io/ext/list"&gt;&lt;strong&gt;510&lt;/strong&gt; extensions&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;
&lt;p&gt;Using extensions in Pigsty involves four core steps: &lt;a href="https://pigsty.io/docs/pgsql/ext/download"&gt;&lt;strong&gt;Download&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://pigsty.io/docs/pgsql/ext/install"&gt;&lt;strong&gt;Install&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://pigsty.io/docs/pgsql/ext/config"&gt;&lt;strong&gt;Config/Load&lt;/strong&gt;&lt;/a&gt;, and &lt;a href="https://pigsty.io/docs/pgsql/ext/create"&gt;&lt;strong&gt;Create&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;pg-meta&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;hosts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;10.10.10.10&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_seq: 1, pg_role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;primary } }&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;vars&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_cluster&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;pg-meta&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_databases&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;meta&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;extensions: [ postgis, timescaledb, vector ] # Create&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Create extensions in database&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_libs: &amp;#39;timescaledb, pg_stat_statements, auto_explain&amp;#39; # Config&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Preload extension libraries&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_extensions: [ postgis, timescaledb, pgvector ] # Install&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Install extension packages&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="https://pigsty.io/img/pigsty/ecosystem.png" alt=""&gt;&lt;/p&gt;</description></item><item><title>HA Drill: Handling 2-of-3 Node Failure</title><link>https://pigsty.io/docs/pgsql/tutorial/drill/</link><pubDate>Sat, 11 Jan 2025 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&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;
&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://pigsty.io/docs/pgsql/kernel/postgres/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/kernel/postgres/</guid><description>&lt;p&gt;&lt;a href="https://www.postgresql.org/"&gt;PostgreSQL&lt;/a&gt; is the world&amp;rsquo;s most advanced and popular open-source database.&lt;/p&gt;
&lt;p&gt;Pigsty supports PostgreSQL 14 ~ 18 and provides 510 PG extensions.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="quick-start"&gt;Quick Start&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://pigsty.io/docs/setup/install"&gt;&lt;strong&gt;Install&lt;/strong&gt;&lt;/a&gt; Pigsty using the &lt;a href="https://github.com/pgsty/pigsty/blob/main/conf/pgsql.yml"&gt;&lt;code&gt;pgsql&lt;/code&gt;&lt;/a&gt; configuration template.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./configure -c pgsql &lt;span class="c1"&gt;# Use postgres kernel&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./deploy.yml &lt;span class="c1"&gt;# Set up everything with pigsty&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Most &lt;a href="https://pigsty.io/docs/conf/"&gt;configuration templates&lt;/a&gt; use PostgreSQL kernel by default, for example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/pgsty/pigsty/blob/main/conf/meta.yml"&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;
&lt;li&gt;&lt;a href="https://github.com/pgsty/pigsty/blob/main/conf/rich.yml"&gt;&lt;code&gt;rich&lt;/code&gt;&lt;/a&gt; : postgres with all extensions installed&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/pgsty/pigsty/blob/main/conf/slim.yml"&gt;&lt;code&gt;slim&lt;/code&gt;&lt;/a&gt; : postgres only, no monitoring infrastructure&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/pgsty/pigsty/blob/main/conf/full.yml"&gt;&lt;code&gt;full&lt;/code&gt;&lt;/a&gt; : 4-node sandbox for HA demonstration&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/pgsty/pigsty/blob/main/conf/pgsql.yml"&gt;&lt;code&gt;pgsql&lt;/code&gt;&lt;/a&gt; : minimal postgres kernel configuration example&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="configuration"&gt;Configuration&lt;/h2&gt;
&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://pigsty.io/docs/pgsql/tutorial/pg-vip/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&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;
&lt;p&gt;This VIP is managed by the &lt;a href="https://github.com/cybertec-postgresql/vip-manager"&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://pigsty.io/docs/pgsql/tutorial/citus/</link><pubDate>Sat, 11 Jan 2025 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&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;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.citusdata.com/en/stable/get_started/what_is_citus.html"&gt;What is Citus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patroni.readthedocs.io/en/latest/citus.html"&gt;Patroni Citus Support&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: Citus 13.x supports PostgreSQL 18, 17, 16, 15, and 14. Pigsty extension repo provides Citus ARM64 packages.&lt;/p&gt;</description></item><item><title>Babelfish</title><link>https://pigsty.io/docs/pgsql/kernel/babelfish/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/kernel/babelfish/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://babelfishpg.org/"&gt;Babelfish&lt;/a&gt; is a PostgreSQL-based SQL Server compatibility layer, open-sourced by AWS.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&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;
&lt;ul&gt;
&lt;li&gt;SQL Server wire protocol compatibility (TDS, &lt;code&gt;1433&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;T-SQL compatibility&lt;/li&gt;
&lt;li&gt;Unified integration with Pigsty capabilities (HA, backup, monitoring, IaC)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In &lt;strong&gt;v4.2.0&lt;/strong&gt;, Babelfish defaults to &lt;strong&gt;PostgreSQL 17&lt;/strong&gt; and is part of Pigsty&amp;rsquo;s standard delivery path.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="what-changed-in-v420"&gt;What Changed in v4.2.0&lt;/h2&gt;
&lt;p&gt;Compared with older &lt;code&gt;Babelfish/PG15&lt;/code&gt; docs, current behavior is:&lt;/p&gt;</description></item><item><title>Percona</title><link>https://pigsty.io/docs/pgsql/kernel/percona/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/kernel/percona/</guid><description>&lt;p&gt;&lt;a href="https://www.percona.com/postgresql/software/postgresql-distribution"&gt;Percona Postgres&lt;/a&gt; is a patched Postgres kernel with &lt;a href="https://docs.percona.com/pg-tde/index.html"&gt;&lt;code&gt;pg_tde&lt;/code&gt;&lt;/a&gt; (Transparent Data Encryption) extension.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s compatible with PostgreSQL 18.1 and available on all Pigsty-supported platforms.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://andreas.scherbaum.la/post/2025-06-30_performance-test-for-percona-transparent-data-encryption-tde/"&gt;Performance Test for Percona Transparent Data Encryption (TDE)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="quick-start"&gt;Quick Start&lt;/h2&gt;
&lt;p&gt;Use Pigsty&amp;rsquo;s &lt;a href="https://pigsty.io/docs/setup/install"&gt;&lt;strong&gt;standard installation process&lt;/strong&gt;&lt;/a&gt; with the &lt;a href="https://github.com/pgsty/pigsty/blob/main/conf/pgtde.yml"&gt;&lt;code&gt;pgtde&lt;/code&gt;&lt;/a&gt; configuration template.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://repo.pigsty.io/get &lt;span class="p"&gt;|&lt;/span&gt; bash&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nb"&gt;cd&lt;/span&gt; ~/pigsty&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./configure -c pgtde &lt;span class="c1"&gt;# Use percona postgres kernel&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./deploy.yml &lt;span class="c1"&gt;# Set up everything with pigsty&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="configuration"&gt;Configuration&lt;/h2&gt;
&lt;p&gt;The following parameters need to be adjusted to deploy a Percona cluster:&lt;/p&gt;</description></item><item><title>openHalo</title><link>https://pigsty.io/docs/pgsql/kernel/openhalo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/kernel/openhalo/</guid><description>&lt;p&gt;&lt;a href="https://www.openhalo.org/"&gt;OpenHalo&lt;/a&gt; is an open-source PostgreSQL kernel that provides MySQL wire-protocol compatibility.&lt;/p&gt;
&lt;p&gt;openHalo is based on PostgreSQL 14.18 and provides wire-level compatibility with MySQL 5.7.32-log / 8.0.&lt;/p&gt;
&lt;p&gt;Pigsty supports OpenHalo deployment on all supported Linux platforms.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RPM build spec: &lt;a href="https://github.com/pgsty/rpm/blob/main/rpmbuild/SPECS/openhalodb.spec"&gt;github.com/pgsty/rpm/rpmbuild/specs/openhalodb.spec&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;DEB build spec: &lt;a href="https://github.com/pgsty/deb/tree/main/debbuild/openhalodb"&gt;github.com/pgsty/deb/debbuild/openhalodb&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="quick-start"&gt;Quick Start&lt;/h2&gt;
&lt;p&gt;Use Pigsty&amp;rsquo;s &lt;a href="https://pigsty.io/docs/setup/install"&gt;&lt;strong&gt;standard installation flow&lt;/strong&gt;&lt;/a&gt; with the &lt;a href="https://pigsty.io/docs/conf/mysql"&gt;&lt;code&gt;mysql&lt;/code&gt;&lt;/a&gt; template.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://repo.pigsty.io/get &lt;span class="p"&gt;|&lt;/span&gt; bash&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nb"&gt;cd&lt;/span&gt; ~/pigsty&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./configure -c mysql &lt;span class="c1"&gt;# Use MySQL (openHalo) template&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./deploy.yml &lt;span class="c1"&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;hr&gt;
&lt;h2 id="cluster-config"&gt;Cluster Config&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;pg-meta&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;hosts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;10.10.10.10&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_seq: 1, pg_role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;primary }&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;vars&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_cluster&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;pg-meta&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_users&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- {&lt;span class="nt"&gt;name: dbuser_meta ,password: DBUser.Meta ,pgbouncer: true ,roles: [dbrole_admin] ,comment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;pigsty admin user }&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- {&lt;span class="nt"&gt;name: dbuser_view ,password: DBUser.Viewer ,pgbouncer: true ,roles: [dbrole_readonly] ,comment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;read-only viewer for meta database }&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_databases&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- {&lt;span class="nt"&gt;name: postgres, extensions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;aux_mysql ]}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# mysql-compatible database&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- {&lt;span class="nt"&gt;name: meta ,baseline: cmdb.sql ,comment: pigsty meta database ,schemas&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="l"&gt;pigsty]}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_hba_rules&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- {&lt;span class="nt"&gt;user: dbuser_view , db: all ,addr: infra ,auth: pwd ,title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;allow grafana dashboard access cmdb from infra nodes&amp;#39;&lt;/span&gt;}&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;node_crontab&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;00 01 * * * postgres /pg/bin/pg-backup full&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# full backup at 1 AM daily&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# OpenHalo specific settings&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;mysql&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;14&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pg_packages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;openhalodb, pgsql-common ]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&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://pigsty.io/docs/pgsql/kernel/orioledb/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/kernel/orioledb/</guid><description>&lt;p&gt;&lt;a href="https://orioledb.com/"&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;
&lt;p&gt;OrioleDB&amp;rsquo;s latest version is based on a &lt;a href="https://github.com/orioledb/postgres"&gt;patched PostgreSQL 17.6&lt;/a&gt; and an additional &lt;a href="https://github.com/orioledb/orioledb"&gt;extension&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can run OrioleDB as an RDS using Pigsty. It&amp;rsquo;s compatible with PG 17 and available on all supported Linux platforms.
The latest version is beta14, based on PG 17_16 patch.&lt;/p&gt;</description></item><item><title>Cloudberry</title><link>https://pigsty.io/docs/pgsql/kernel/cloudberry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/kernel/cloudberry/</guid><description>&lt;p&gt;&lt;a href="https://cloudberry.apache.org/"&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;
&lt;hr&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&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;
&lt;ul&gt;
&lt;li&gt;Kernel package: &lt;code&gt;cloudberry&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Mode identifier: &lt;code&gt;pg_mode: gpsql&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Role flag: &lt;code&gt;gp_role: master | segment&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Current repo version: &lt;code&gt;Cloudberry 2.0.0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Current version string: &lt;code&gt;PostgreSQL 14.4 (Apache Cloudberry 2.0.0-incubating build 1)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Default binary directory: &lt;code&gt;/usr/local/cloudberry&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&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.
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://pigsty.io/docs/pgsql/kernel/agensgraph/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/kernel/agensgraph/</guid><description>&lt;p&gt;&lt;a href="https://github.com/skaiworldwide-oss/agensgraph"&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;
&lt;hr&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&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;
&lt;ul&gt;
&lt;li&gt;Kernel package: &lt;code&gt;agensgraph&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Mode identifier: &lt;code&gt;pg_mode: agens&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Current template version: &lt;code&gt;AgensGraph 2.16&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Current version string: &lt;code&gt;PostgreSQL 16.9 (AgensGraph 2.16)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Built-in template: &lt;code&gt;agens&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Typical use cases: graph relationship analysis, path queries, knowledge graphs, and risk/association analysis layered onto relational data&lt;/li&gt;
&lt;/ul&gt;
&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.
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://pigsty.io/docs/pgsql/kernel/pgedge/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/kernel/pgedge/</guid><description>&lt;p&gt;&lt;a href="https://www.pgedge.com/"&gt;&lt;strong&gt;pgEdge&lt;/strong&gt;&lt;/a&gt; is a distributed PostgreSQL distribution for edge scenarios, built on &lt;a href="https://docs.pgedge.com/spock-v5"&gt;&lt;strong&gt;Spock&lt;/strong&gt;&lt;/a&gt; multi-master logical replication.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&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;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pgedge&lt;/code&gt;: a PG18-compatible kernel&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/ext/e/spock/"&gt;&lt;code&gt;spock&lt;/code&gt;&lt;/a&gt;: Active-active multi-master logical replication&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/ext/e/snowflake/"&gt;&lt;code&gt;snowflake&lt;/code&gt;&lt;/a&gt;: Distributed unique sequences&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/ext/e/lolor/"&gt;&lt;code&gt;lolor&lt;/code&gt;&lt;/a&gt;: Large object logical replication compatibility layer&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the current Pigsty repository, pgEdge PG18 is shipped as the &lt;code&gt;pgedge-18 18.3&lt;/code&gt; package, together with &lt;code&gt;spock 5.0.6&lt;/code&gt;, &lt;code&gt;snowflake 2.4&lt;/code&gt;, and &lt;code&gt;lolor 1.2.2&lt;/code&gt;. PG17 packages are still kept as a transition option, but the &lt;code&gt;pgedge&lt;/code&gt; configuration template now defaults to &lt;code&gt;pg_version: 18&lt;/code&gt;.
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>Param Templates</title><link>https://pigsty.io/docs/pgsql/template/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/template/</guid><description>&lt;p&gt;Pigsty provides four preset Patroni/PostgreSQL config templates optimized for different workloads:&lt;/p&gt;
&lt;table class="full-width"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Template&lt;/th&gt;
 &lt;th style="text-align: left"&gt;CPU Cores&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Use Case&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Characteristics&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/docs/pgsql/template/oltp"&gt;&lt;strong&gt;&lt;code&gt;/docs/pgsql/template/oltp.yml&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;4-128C&lt;/td&gt;
 &lt;td style="text-align: left"&gt;OLTP transactions&lt;/td&gt;
 &lt;td style="text-align: left"&gt;High concurrency, low latency&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/docs/pgsql/template/olap"&gt;&lt;strong&gt;&lt;code&gt;/docs/pgsql/template/olap.yml&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;4-128C&lt;/td&gt;
 &lt;td style="text-align: left"&gt;OLAP analytics&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Large queries, high parallelism&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/docs/pgsql/template/crit"&gt;&lt;strong&gt;&lt;code&gt;/docs/pgsql/template/crit.yml&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;4-128C&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Critical/Finance&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Data safety, audit, zero-loss&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/docs/pgsql/template/tiny"&gt;&lt;strong&gt;&lt;code&gt;/docs/pgsql/template/tiny.yml&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;1-3C&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Tiny instances&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Resource-constrained envs&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Use &lt;a href="https://pigsty.io/docs/pgsql/param#pg_conf"&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="https://pigsty.io/docs/pgsql/template/oltp"&gt;&lt;strong&gt;&lt;code&gt;/docs/pgsql/template/oltp.yml&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The database tuning template &lt;a href="https://pigsty.io/docs/pgsql/param#pg_conf"&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="https://pigsty.io/docs/node/param#node_tune"&gt;&lt;strong&gt;&lt;code&gt;node_tune&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;
&lt;p&gt;Set &lt;a href="https://pigsty.io/docs/pgsql/param#pg_conf"&gt;&lt;strong&gt;&lt;code&gt;pg_conf&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; in your cluster definition.
It&amp;rsquo;s recommended to set &lt;a href="https://pigsty.io/docs/node/param#node_tune"&gt;&lt;strong&gt;&lt;code&gt;node_tune&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; accordingly for OS-level tuning:&lt;/p&gt;</description></item><item><title>PG Kernels</title><link>https://pigsty.io/docs/pgsql/kernel/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&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;
&lt;p&gt;One thing to keep in mind is that not every kernel has the same delivery depth in Pigsty:
PostgreSQL, Citus, Babelfish, IvorySQL, PolarDB, AgensGraph, and pgEdge already have relatively clear templates and configuration paths;
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>Quick Start</title><link>https://pigsty.io/docs/pgsql/ext/start/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Download&lt;/strong&gt;: Download extension packages to the local repository (Pigsty has already downloaded mainstream extensions by default)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Install&lt;/strong&gt;: Install extension packages on cluster nodes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Config&lt;/strong&gt;: Some extensions need to be preloaded or configured with parameters&lt;/li&gt;
&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;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="declarative-configuration"&gt;Declarative Configuration&lt;/h2&gt;
&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://pigsty.io/docs/pgsql/ext/intro/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/ext/intro/</guid><description>&lt;p&gt;Extensions are the soul of PostgreSQL. Pigsty includes 510 pre-compiled, out-of-the-box extension plugins, fully unleashing PostgreSQL&amp;rsquo;s potential.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="what-are-extensions"&gt;What are Extensions&lt;/h2&gt;
&lt;p&gt;PostgreSQL extensions are a modular mechanism that allows enhancing database functionality without modifying the core code.
An extension typically consists of three parts:&lt;/p&gt;
&lt;ul&gt;
&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;
&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;
&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;
&lt;/ul&gt;
&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://pigsty.io/docs/pgsql/ext/pkg/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&lt;hr&gt;
&lt;h2 id="package-alias-mechanism"&gt;Package Alias Mechanism&lt;/h2&gt;
&lt;p&gt;Managing extensions involves multiple layers of name mapping:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Layer&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Example &lt;code&gt;pgvector&lt;/code&gt;&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Example &lt;code&gt;postgis&lt;/code&gt;&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Extension Name&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;vector&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;postgis&lt;/code&gt;, &lt;code&gt;postgis_topology&lt;/code&gt;, &amp;hellip;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Package Alias&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pgvector&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;postgis&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;RPM Package Name&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pgvector_18&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;postgis36_18*&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;DEB Package Name&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;postgresql-18-pgvector&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;postgresql-18-postgis-3*&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&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;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;pg_extensions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;pgvector, postgis, timescaledb ] &lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# Use package aliases&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pigsty automatically translates to the correct package names based on the operating system and PostgreSQL version.&lt;/p&gt;</description></item><item><title>Download</title><link>https://pigsty.io/docs/pgsql/ext/download/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&lt;hr&gt;
&lt;h2 id="default-behavior"&gt;Default Behavior&lt;/h2&gt;
&lt;p&gt;Pigsty automatically downloads mainstream extensions available for the default PostgreSQL version to the local software repository during installation.&lt;/p&gt;
&lt;p&gt;Benefits of using a local repository:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Accelerated installation, avoiding repeated downloads&lt;/li&gt;
&lt;li&gt;Reduced network traffic consumption&lt;/li&gt;
&lt;li&gt;Improved delivery reliability&lt;/li&gt;
&lt;li&gt;Ensured version consistency&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="download-new-extensions"&gt;Download New Extensions&lt;/h2&gt;
&lt;p&gt;To download additional extensions, add them to &lt;a href="https://pigsty.io/docs/infra/param#repo_extra_packages"&gt;&lt;code&gt;repo_extra_packages&lt;/code&gt;&lt;/a&gt; and rebuild the repository:&lt;/p&gt;</description></item><item><title>Install</title><link>https://pigsty.io/docs/pgsql/ext/install/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&lt;hr&gt;
&lt;h2 id="related-parameters"&gt;Related Parameters&lt;/h2&gt;
&lt;p&gt;Two parameters are used to specify extensions to install:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Parameter&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Purpose&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Default Behavior&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/docs/pgsql/param#pg_packages"&gt;&lt;code&gt;pg_packages&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Global common packages&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Ensure present (no upgrade)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://pigsty.io/docs/pgsql/param#pg_extensions"&gt;&lt;code&gt;pg_extensions&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Cluster-specific extensions&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Install latest version&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&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;
&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://pigsty.io/docs/pgsql/ext/config/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&lt;hr&gt;
&lt;h2 id="preload-extensions"&gt;Preload Extensions&lt;/h2&gt;
&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;
&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;
&lt;h3 id="extensions-requiring-preload"&gt;Extensions Requiring Preload&lt;/h3&gt;
&lt;p&gt;Common extensions that require preloading:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Extension&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;timescaledb&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Time-series database extension, must be placed first&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;citus&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Distributed database extension, must be placed first&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pg_stat_statements&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;SQL statement statistics, enabled by default in Pigsty&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;auto_explain&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Automatically log slow query execution plans, enabled by default in Pigsty&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pg_cron&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Scheduled task scheduling&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pg_net&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Asynchronous HTTP requests&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pg_tle&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Trusted language extensions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pgaudit&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Audit logging&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pg_stat_kcache&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Kernel statistics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pg_squeeze&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Online table space reclamation&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pgml&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;PostgresML machine learning&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For the complete list, see the &lt;a href="https://pigsty.io/ext/list"&gt;Extension Catalog&lt;/a&gt; (marked with &lt;code&gt;LOAD&lt;/code&gt;).&lt;/p&gt;</description></item><item><title>Create</title><link>https://pigsty.io/docs/pgsql/ext/create/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&lt;hr&gt;
&lt;h2 id="view-available-extensions"&gt;View Available Extensions&lt;/h2&gt;
&lt;p&gt;After installing extension packages, you can view available extensions:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- View all available extensions
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pg_available_extensions&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- View specific extension
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pg_available_extensions&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;WHERE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;vector&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- View enabled extensions
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pg_extension&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="create-extensions"&gt;Create Extensions&lt;/h2&gt;
&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://pigsty.io/docs/pgsql/ext/update/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&lt;hr&gt;
&lt;h2 id="update-packages"&gt;Update Packages&lt;/h2&gt;
&lt;p&gt;Use package managers to update extension packages:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# EL systems&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo yum update pgvector_18*
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Debian/Ubuntu systems&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update &lt;span class="o"&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;p&gt;Batch update using Pigsty:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Update extension packages for specified cluster&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./pgsql.yml -l pg-meta -t pg_extension -e &lt;span class="s1"&gt;&amp;#39;{&amp;#34;pg_extensions&amp;#34;:[&amp;#34;pgvector&amp;#34;]}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Using pig package manager&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pig update pgvector
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="update-extension-objects"&gt;Update Extension Objects&lt;/h2&gt;
&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://pigsty.io/docs/pgsql/ext/remove/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&lt;hr&gt;
&lt;h2 id="drop-extension-objects"&gt;Drop Extension Objects&lt;/h2&gt;
&lt;p&gt;Use &lt;code&gt;DROP EXTENSION&lt;/code&gt; to remove extensions from the database:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- Drop extension
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;DROP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;EXTENSION&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pgvector&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- If there are dependent objects, cascade delete is required
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;DROP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;EXTENSION&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pgvector&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;CASCADE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&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;
&lt;/blockquote&gt;
&lt;h3 id="check-extension-dependencies"&gt;Check Extension Dependencies&lt;/h3&gt;
&lt;p&gt;It&amp;rsquo;s recommended to check dependencies before dropping:&lt;/p&gt;</description></item><item><title>Default Extensions</title><link>https://pigsty.io/docs/pgsql/ext/extension/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&lt;hr&gt;
&lt;h2 id="default-installed-extensions"&gt;Default Installed Extensions&lt;/h2&gt;
&lt;p&gt;Extensions installed by default via &lt;a href="https://pigsty.io/docs/pgsql/param#pg_packages"&gt;&lt;code&gt;pg_packages&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Extension&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pg_repack&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Handle table bloat online, important maintenance tool&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;wal2json&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Logical decoding outputs JSON format changes, commonly used in CDC scenarios&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Extensions optionally installed via &lt;a href="https://pigsty.io/docs/pgsql/param#pg_extensions"&gt;&lt;code&gt;pg_extensions&lt;/code&gt;&lt;/a&gt; (commented by default):&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Extension&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;postgis&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Geospatial database extension&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;timescaledb&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Time-series database extension&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;code&gt;pgvector&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Vector data type and indexes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="default-enabled-extensions"&gt;Default Enabled Extensions&lt;/h2&gt;
&lt;p&gt;Extensions enabled by default in all databases via &lt;a href="https://pigsty.io/docs/pgsql/param#pg_default_extensions"&gt;&lt;code&gt;pg_default_extensions&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;</description></item><item><title>FAQ</title><link>https://pigsty.io/docs/pgsql/faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/faq/</guid><description>&lt;hr&gt;
&lt;h2 id="why-cant-my-current-user-use-the-pg-admin-alias"&gt;Why can&amp;rsquo;t my current user use the &lt;code&gt;pg&lt;/code&gt; admin alias?&lt;/h2&gt;
&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;
&lt;p&gt;The admin user (&lt;code&gt;dba&lt;/code&gt;) created by the &lt;a href="https://pigsty.io/docs/node/playbook#nodeyml"&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;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo usermod -aG admin &amp;lt;username&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="pgsql-init-fails-fail-to-wait-for-postgrespatroni-primary"&gt;PGSQL Init Fails: Fail to wait for postgres/patroni primary&lt;/h2&gt;
&lt;p&gt;There are multiple possible causes for this error. You need to &lt;a href="https://github.com/pgsty/pigsty/discussions/338"&gt;check&lt;/a&gt; Ansible, Systemd / Patroni / PostgreSQL logs to find the real cause.&lt;/p&gt;</description></item><item><title>Repository</title><link>https://pigsty.io/docs/pgsql/ext/repo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&lt;hr&gt;
&lt;h2 id="yum-repository"&gt;YUM Repository&lt;/h2&gt;
&lt;p&gt;Applicable to EL 7/8/9/10 and compatible systems (RHEL, Rocky, AlmaLinux, CentOS, etc.).&lt;/p&gt;
&lt;h3 id="add-repository"&gt;Add Repository&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Add GPG public key&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://repo.pigsty.io/key &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-pigsty &amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Add repository configuration&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://repo.pigsty.io/yum/repo &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /etc/yum.repos.d/pigsty.repo &amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Refresh cache&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo yum makecache
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="china-mainland-mirror"&gt;China Mainland Mirror&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://repo.pigsty.cc/key &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-pigsty &amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://repo.pigsty.cc/yum/repo &lt;span class="p"&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;h3 id="repository-urls"&gt;Repository URLs&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;International: &lt;a href="https://repo.pigsty.io/yum/"&gt;https://repo.pigsty.io/yum/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;China: &lt;a href="https://repo.pigsty.cc/yum/"&gt;https://repo.pigsty.cc/yum/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="apt-repository"&gt;APT Repository&lt;/h2&gt;
&lt;p&gt;Applicable to Debian 11/12/13 and Ubuntu 22.04/24.04/26.04 and compatible systems.&lt;/p&gt;</description></item><item><title>Misc</title><link>https://pigsty.io/docs/pgsql/misc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/misc/</guid><description/></item><item><title>Citus</title><link>https://pigsty.io/docs/pgsql/kernel/citus/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&lt;p&gt;&lt;img src="https://pigsty.io/img/pigsty/citus.jpg" alt=""&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="installation"&gt;Installation&lt;/h2&gt;
&lt;p&gt;Citus is a PostgreSQL &lt;a href="https://pigsty.io/docs/pgsql/ext/"&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;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./pgsql.yml -t pg_extension -e &lt;span class="s1"&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;hr&gt;
&lt;h2 id="configuration"&gt;Configuration&lt;/h2&gt;
&lt;p&gt;To define a citus cluster, you need to specify the following parameters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pigsty.io/docs/pgsql/param#pg_mode"&gt;&lt;code&gt;pg_mode&lt;/code&gt;&lt;/a&gt; must be set to &lt;code&gt;citus&lt;/code&gt; instead of the default &lt;code&gt;pgsql&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;You must define the shard name &lt;a href="https://pigsty.io/docs/pgsql/param#pg_shard"&gt;&lt;code&gt;pg_shard&lt;/code&gt;&lt;/a&gt; and shard number &lt;a href="https://pigsty.io/docs/pgsql/param#pg_group"&gt;&lt;code&gt;pg_group&lt;/code&gt;&lt;/a&gt; on each shard cluster&lt;/li&gt;
&lt;li&gt;You must define &lt;a href="https://pigsty.io/docs/pgsql/param#pg_primary_db"&gt;&lt;code&gt;pg_primary_db&lt;/code&gt;&lt;/a&gt; to specify the database managed by Patroni&lt;/li&gt;
&lt;li&gt;If you want to use &lt;code&gt;postgres&lt;/code&gt; from &lt;a href="https://pigsty.io/docs/pgsql/param#pg_dbsu"&gt;&lt;code&gt;pg_dbsu&lt;/code&gt;&lt;/a&gt; instead of the default &lt;a href="https://pigsty.io/docs/pgsql/param#pg_admin_username"&gt;&lt;code&gt;pg_admin_username&lt;/code&gt;&lt;/a&gt; to execute admin commands, then &lt;a href="https://pigsty.io/docs/pgsql/param#pg_dbsu_password"&gt;&lt;code&gt;pg_dbsu_password&lt;/code&gt;&lt;/a&gt; must be set to a non-empty plaintext password&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Additionally, you need extra hba rules to allow SSL access from localhost and other data nodes.&lt;/p&gt;</description></item><item><title>IvorySQL</title><link>https://pigsty.io/docs/pgsql/kernel/ivorysql/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/kernel/ivorysql/</guid><description>&lt;p&gt;&lt;a href="https://www.ivorysql.org/"&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;
&lt;hr&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;The IvorySQL kernel is supported in the Pigsty open-source version. Your server needs internet access to download relevant packages directly from IvorySQL&amp;rsquo;s official repository.&lt;/p&gt;
&lt;p&gt;Please note that adding IvorySQL directly to Pigsty&amp;rsquo;s default software repository will affect the installation of the native PostgreSQL kernel. Pigsty Professional Edition provides offline installation solutions including the IvorySQL kernel.&lt;/p&gt;</description></item><item><title>PolarDB PG</title><link>https://pigsty.io/docs/pgsql/kernel/polardb/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/kernel/polardb/</guid><description>&lt;hr&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Pigsty allows you to create PostgreSQL clusters with &amp;ldquo;domestic innovation qualification&amp;rdquo; credentials using PolarDB!&lt;/p&gt;
&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;
&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://pigsty.io/docs/pgsql/kernel/polardb-o/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&lt;p&gt;According to the &lt;a href="http://www.itsec.gov.cn/aqkkcp/cpgg/202312/t20231226_162074.html"&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;
&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;
&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://pigsty.io/docs/pgsql/kernel/greenplum/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/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;
&lt;hr&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&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;
&lt;hr&gt;
&lt;h2 id="installation"&gt;Installation&lt;/h2&gt;
&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;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# EL 7 Only (Greenplum6)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./node.yml -t node_install -e &lt;span class="s1"&gt;&amp;#39;{&amp;#34;node_repo_modules&amp;#34;:&amp;#34;pgsql&amp;#34;,&amp;#34;node_packages&amp;#34;:[&amp;#34;open-source-greenplum-db-6&amp;#34;]}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# EL 8 Only (Greenplum7)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./node.yml -t node_install -e &lt;span class="s1"&gt;&amp;#39;{&amp;#34;node_repo_modules&amp;#34;:&amp;#34;pgsql&amp;#34;,&amp;#34;node_packages&amp;#34;:[&amp;#34;open-source-greenplum-db-7&amp;#34;]}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="configuration"&gt;Configuration&lt;/h2&gt;
&lt;p&gt;To define a Greenplum cluster, you need to use &lt;code&gt;pg_mode&lt;/code&gt; = &lt;code&gt;gpsql&lt;/code&gt; and additional identity parameters &lt;code&gt;pg_shard&lt;/code&gt; and &lt;code&gt;gp_role&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Neon</title><link>https://pigsty.io/docs/pgsql/kernel/neon/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.io/docs/pgsql/kernel/neon/</guid><description>&lt;p&gt;&lt;a href="https://github.com/neondatabase/neon"&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;
&lt;p&gt;Neon official website: &lt;a href="https://neon.tech/"&gt;https://neon.tech/&lt;/a&gt;&lt;/p&gt;
&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>