
{"id":2328,"date":"2021-10-13T05:53:35","date_gmt":"2021-10-13T05:53:35","guid":{"rendered":"https:\/\/test.opensource-db.in\/wp1\/?p=2328"},"modified":"2021-10-13T09:43:54","modified_gmt":"2021-10-13T09:43:54","slug":"postgresql-14-new-features-dba-lifesavers","status":"publish","type":"post","link":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/","title":{"rendered":"PostgreSQL 14 New Features &#8211; DBA Lifesavers"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large is-style-default\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"340\" src=\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-7-1024x340.png\" alt=\"\" class=\"wp-image-2385\" srcset=\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-7-1024x340.png 1024w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-7-300x100.png 300w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-7-768x255.png 768w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-7-1536x511.png 1536w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-7-2048x681.png 2048w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-7-298x99.png 298w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-7-241x80.png 241w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-7-394x131.png 394w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-7-915x304.png 915w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-7-1240x412.png 1240w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-7-1920x638.png 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We have covered a considerable amount of PostgreSQL 14 features in our previous posts, they are:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/test.opensource-db.in\/wp1\/pg14-new-features-blog-series-part1\/\" data-type=\"URL\" data-id=\"https:\/\/test.opensource-db.in\/wp1\/pg14-new-features-blog-series-part1\/\" target=\"_blank\" rel=\"noreferrer noopener\">Performance enhancements<\/a><\/li><li><a href=\"https:\/\/test.opensource-db.in\/wp1\/pg-14-new-features-monitoring-improvements-part5\/\" data-type=\"URL\" data-id=\"https:\/\/test.opensource-db.in\/wp1\/pg-14-new-features-monitoring-improvements-part5\/\" target=\"_blank\" rel=\"noreferrer noopener\">Monitoring improvements<\/a><\/li><li><a href=\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-conf-params-introduced-part4\/\" data-type=\"URL\" data-id=\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-conf-params-introduced-part4\/\" target=\"_blank\" rel=\"noreferrer noopener\">New configuration parameters introduced<\/a><\/li><li><a href=\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-security\/\" data-type=\"URL\" data-id=\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-security\/\" target=\"_blank\" rel=\"noreferrer noopener\">Security<\/a><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Well, today is going to be a fun ride &#8211; <strong>New DBA Features<\/strong> in PG14, we are calling them <em>Lifesavers,<\/em> as they&#8217;d save a lot of time and effort for most of my DBA friends working on some of the complex PostgreSQL Ecosystems. Following are some of the interesting features added to PostgreSQL 14 for DBAs.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Table partitioning improvements<\/li><li>Data Corruption\/anamolies detection<\/li><li>Native Logical replication enhancements<\/li><li>Better Indexing strategies<\/li><\/ul>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Table partitioning improvements<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>DETACH PARTITION CONCURRENTLY<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now users can detach the partitions without blocking other sessions by using the CONCURRENTLY. So users are not blocked from running queries on the table while detach is in progress.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Below is the syntax for detaching the partition<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ALTER TABLE table_name DETACH PARTITION partition_name &#91; FINALIZE | CONCURRENTLY ]<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A few important points to note:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Detach partition runs in two transactions, it cannot be used in a transaction block<\/li><li>doesn&#8217;t work when a DEFAULT partition exists<\/li><li>In case the second transaction is canceled or a crash occurs, there&#8217;s ALTER TABLE .. DETACH PARTITION .. FINALIZE, which executes the final steps.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">A new column inhdetachpending is added to the pg_inherits which represents DETACH state of the partition.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When the first transaction is executed (as the detach creates two transactions), it marks the catalog view  <strong>pg_inherits.inhdetachpending<\/strong> column to <strong>true<\/strong> for that partition, and users who are running queries after that statement can&#8217;t see the data from that partition.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Use the following SQL to track the change&#8221;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT\n  parent.relname      AS parent,\n  child.relname       AS child,\n  inhdetachpending AS detach_status\nFROM pg_inherits\n  JOIN pg_class parent            ON pg_inherits.inhparent = parent.oid\n  JOIN pg_class child             ON pg_inherits.inhrelid   = child.oid\n  JOIN pg_namespace nmsp_parent   ON nmsp_parent.oid  = parent.relnamespace\n  JOIN pg_namespace nmsp_child    ON nmsp_child.oid   = child.relnamespace\nWHERE parent.relname='&lt;table-name>';<\/code><\/pre>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Data Corruption\/anomalies detection<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A <em>new contrib module<\/em> <strong>pg_surgery<\/strong> can be used to forcibly overwrite the visibility information for corrupted tuples, potentially allowing it to be recovered or removed when that would otherwise fail. It also allows forcing a tuple to freeze.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>postgres=# create table test(id int, name varchar);\nCREATE TABLE\npostgres=# \npostgres=# insert into test values (1,'test');\nINSERT 0 1\npostgres=# select xmin, ctid, * FROM test;\n xmin | ctid  | id | name \n------+-------+----+------\n  748 | (0,1) |  1 | test\n(1 row)\n\n\npostgres=# select heap_force_freeze('test'::regclass, ARRAY&#91;'(0, 1)']::tid&#91;]);\n heap_force_freeze \n-------------------\n \n(1 row)\n\npostgres=# select xmin, ctid, * FROM test;\n xmin | ctid  | id | name \n------+-------+----+------\n    2 | (0,1) |  1 | test\n(1 row)\n\npostgres=# select heap_force_kill('test'::regclass, ARRAY&#91;'(0, 1)']::tid&#91;]);\n heap_force_kill \n-----------------\n \n(1 row)\n\npostgres=# select xmin, ctid, * FROM test;\n xmin | ctid | id | name \n------+------+----+------\n(0 rows)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">NOTE: These functions are unsafe by design and using them may corrupt (or further corrupt) your database. For example, these functions can easily be used to make a table inconsistent with its own indexes, to cause UNIQUE or FOREIGN KEY constraint violations, or even to make tuples visible which, when read, will cause a database server crash. They should be used with great caution and only as a last resort.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><span style=\"font-size: revert; color: initial;\"><strong>Native Logical replication enhancements<\/strong><\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PostgreSQL 14 introduced a lot of new features around Native logical replication to improve the performance and reduce replication delay. Below are some of the interesting improvements. <\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Logical streaming replication<\/li><li>Improved Initial table sync<\/li><li>Logical decoding of two-phase commits<\/li><li>Binary transfer mode<\/li><\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Logical streaming replication<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now the logical replication will stream in the in-progress transactions, this will reduce the lag for streaming large transactions. In older versions, the transactions were streamed only at commit time which leads to a large apply lag for large transactions. With this feature, apply lag will be reduced and improve performance.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To use this feature set the streaming ON when creating the subscription:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE SUBSCRIPTION mysub CONNECTION 'host=localhost dbname=postgres user=postgres password=******' PUBLICATION mypub WITH (streaming = on);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Improved Initial table sync<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In logical replication, initial table synchronization involves copying the initial snapshot of the table by the table sync worker, and then the table is brought up to a synchronized state with the main apply worker. This whole work use to be done in a single transaction using a temporary replication slot which has major drawbacks:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(a) The slot will hold the WAL till the entire sync is complete.<br>(b) Any error during the sync phase will roll back the entire copy which is painful for large copies.<br>(c) There is a risk of exceeding the CID limit.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Below improvements are added in PG14<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Allow multiple transactions in tablesync phase.<\/li><li>Used permanent slots and origins to track the progress of tablesync<\/li><\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Logical decoding of two-phase commits<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This will allow us to decode the transactions at prepare time and send the same to the output plugin instead of doing it at commit time. This will allow the plugins to decipher the transaction at prepare time and route it to another node if required.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This has two advantages<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(a) allows two-phase distributed transactions across multiple nodes via logical replication<br>(b) reduces the apply-lag by sending and replaying the transaction on another node at prepare time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Binary transfer mode<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This feature provides an option during Create\/Alter Subscription to allow data from publishers to be sent in binary format. The default value of this option is false. Even when this option is enabled, only data types that have binary send and receive functions will be transferred in binary.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When doing cross-version replication, if the subscriber lacks a binary receive function for the type, the data transfer will fail, and this option can&#8217;t be used. This mode is generally faster.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE SUBSCRIPTION mysub CONNECTION 'host=localhost port=5432 dbname=postgres' PUBLICATION mypub1 WITH (binary = true);<\/code><\/pre>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><span style=\"font-size: revert; color: initial;\"><strong>Better Indexing strategies<\/strong><\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Below are some of the interesting features added for indexes in PostgreSQL 14.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>BRIN Indexes<\/li><li>GiST and Include feature for SP-GiST<\/li><li>REINDEX partition Tables and Indexes<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>BRIN Indexes<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">New operator classes are added to the BRIN indexes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Bloom operator class<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bloom operator class {data type}_bloom_ops can accept below parameters<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>n_distinct_per_range<\/strong>: Defines the estimated number of distinct non-null values in the block range, used by BRIN<br>bloom indexes for sizing of the Bloom filter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>false_positive_rate<\/strong>: Defines the desired false positive rate used by BRIN bloom indexes for sizing of the Bloom filter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Minmax-multi operator class<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">minmax operator class {data type}_minmax_ops can accept below parameter:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>values_per_range:<\/strong> Defines the maximum number of values stored by BRIN minmax indexes to summarize a block range. Each value may represent either a point, or a boundary of an interval.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>GiST and SP-Gist<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GiST index by sorting: There\u2019s a new index build method that is faster and produces smaller indexes, but so far it\u2019s only supported for the point data type. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GiST access method: <strong>sortsupport<\/strong> &#8211; If it is defined, the GiST index is built by sorting all data to the order defined by the sortsupport&#8217;s comparator function, and packing the tuples in that order to GiST pages.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">INCLUDE clause can be specified for SP-Gist indexes. The optional INCLUDE clause specifies a list of columns that will be included in the index as non-key columns. A non-key column cannot be used in an index scan search qualification, and it is disregarded for purposes of any uniqueness or exclusion constraint enforced by the index. However, an index-only scan can return the contents of non-key columns without having to visit the index&#8217;s table, since they are available directly from the index entry. Thus, the addition of non-key columns allows index-only scans to be used for queries that otherwise could not use them.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>REINDEX partition Tables and Indexes<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">REINDEX rebuilds an index or table using the data stored, replacing the old copy of the table\/index. With PostgreSQL 14, REINDEX works on partition tables and indexes. Also, you can mention the TABLESPACE clause with the REINDEX command.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Points to note:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Both the CONCURRENTLY and the non-concurrent cases are supported<\/li><li>When using TABLESPACE with a REINDEX command that targets a partitioned table or index, all the indexes of the leaf partitions are moved to the new tablespace. The tablespace references of the non-leaf, partitioned tables in <strong>pg_class.reltablespace<\/strong> are not changed<\/li><li>This requires an extra ALTER TABLE SET TABLESPACE.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now that the DBA in me is happy digging into these new features, let&#8217;s continue tomorrow to look at some of the Developer centric features that were part of PG14. Stay tuned!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We have covered a considerable amount of PostgreSQL 14 features in our previous posts, they are: Performance enhancements Monitoring improvements [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[23],"tags":[34,28,27,24],"class_list":["post-2328","post","type-post","status-publish","format-standard","hentry","category-postgresql-14","tag-dba","tag-major-release","tag-new-features","tag-postgres14"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PostgreSQL 14 New Features - DBA Lifesavers - OpenSource DB<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL 14 New Features - DBA Lifesavers - OpenSource DB\" \/>\n<meta property=\"og:description\" content=\"We have covered a considerable amount of PostgreSQL 14 features in our previous posts, they are: Performance enhancements Monitoring improvements [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/\" \/>\n<meta property=\"og:site_name\" content=\"OpenSource DB\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/people\/OpenSource-DB\/100072970755470\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-10-13T05:53:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-10-13T09:43:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-7-1024x340.png\" \/>\n<meta name=\"author\" content=\"Hari Kiran\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@opensource_db\" \/>\n<meta name=\"twitter:site\" content=\"@opensource_db\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Hari Kiran\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/\"},\"author\":{\"name\":\"Hari Kiran\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/2d16bf6a94c0502f1c5b69e4a36e9a09\"},\"headline\":\"PostgreSQL 14 New Features &#8211; DBA Lifesavers\",\"datePublished\":\"2021-10-13T05:53:35+00:00\",\"dateModified\":\"2021-10-13T09:43:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/\"},\"wordCount\":1234,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#organization\"},\"image\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-7-1024x340.png\",\"keywords\":[\"dba\",\"major-release\",\"new-features\",\"postgres14\"],\"articleSection\":[\"PostgreSQL 14\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/\",\"name\":\"PostgreSQL 14 New Features - DBA Lifesavers - OpenSource DB\",\"isPartOf\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-7-1024x340.png\",\"datePublished\":\"2021-10-13T05:53:35+00:00\",\"dateModified\":\"2021-10-13T09:43:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/#primaryimage\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-7.png\",\"contentUrl\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-7.png\",\"width\":3200,\"height\":1064},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/test.opensource-db.in\/wp1\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL 14 New Features &#8211; DBA Lifesavers\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#website\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/\",\"name\":\"OpenSource DB\",\"description\":\"Your Trusted OpenSource Databases partner\",\"publisher\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/test.opensource-db.in\/wp1\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#organization\",\"name\":\"OPENSOURCE DB PRIVATE LIMITED\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/osdb-logo-tm-2.png\",\"contentUrl\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/osdb-logo-tm-2.png\",\"width\":368,\"height\":120,\"caption\":\"OPENSOURCE DB PRIVATE LIMITED\"},\"image\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/people\/OpenSource-DB\/100072970755470\/\",\"https:\/\/x.com\/opensource_db\",\"https:\/\/www.youtube.com\/channel\/UCmTI5h\",\"https:\/\/www.linkedin.com\/company\/opensource-db\",\"https:\/\/www.instagram.com\/opensource_db\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/2d16bf6a94c0502f1c5b69e4a36e9a09\",\"name\":\"Hari Kiran\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c9afef742ba871448bf401518655463f5e87b02f9fbd0096e88f857c51896822?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c9afef742ba871448bf401518655463f5e87b02f9fbd0096e88f857c51896822?s=96&d=mm&r=g\",\"caption\":\"Hari Kiran\"},\"description\":\"Hari Kiran has over 15 years of extensive experience in areas of operations and managing multiple database technologies. A proven leader with excellent skills in building relationships, positive team dynamics, and decision-making. Hari also has strong Open Source expertise in Professional Services. He has the experience to help you refine your strategy and drive execution.\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/author\/harikiranopensource-db-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PostgreSQL 14 New Features - DBA Lifesavers - OpenSource DB","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"PostgreSQL 14 New Features - DBA Lifesavers - OpenSource DB","og_description":"We have covered a considerable amount of PostgreSQL 14 features in our previous posts, they are: Performance enhancements Monitoring improvements [&hellip;]","og_url":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/","og_site_name":"OpenSource DB","article_publisher":"https:\/\/www.facebook.com\/people\/OpenSource-DB\/100072970755470\/","article_published_time":"2021-10-13T05:53:35+00:00","article_modified_time":"2021-10-13T09:43:54+00:00","og_image":[{"url":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-7-1024x340.png","type":"","width":"","height":""}],"author":"Hari Kiran","twitter_card":"summary_large_image","twitter_creator":"@opensource_db","twitter_site":"@opensource_db","twitter_misc":{"Written by":"Hari Kiran","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/#article","isPartOf":{"@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/"},"author":{"name":"Hari Kiran","@id":"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/2d16bf6a94c0502f1c5b69e4a36e9a09"},"headline":"PostgreSQL 14 New Features &#8211; DBA Lifesavers","datePublished":"2021-10-13T05:53:35+00:00","dateModified":"2021-10-13T09:43:54+00:00","mainEntityOfPage":{"@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/"},"wordCount":1234,"commentCount":0,"publisher":{"@id":"https:\/\/test.opensource-db.in\/wp1\/#organization"},"image":{"@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/#primaryimage"},"thumbnailUrl":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-7-1024x340.png","keywords":["dba","major-release","new-features","postgres14"],"articleSection":["PostgreSQL 14"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/","url":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/","name":"PostgreSQL 14 New Features - DBA Lifesavers - OpenSource DB","isPartOf":{"@id":"https:\/\/test.opensource-db.in\/wp1\/#website"},"primaryImageOfPage":{"@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/#primaryimage"},"image":{"@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/#primaryimage"},"thumbnailUrl":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-7-1024x340.png","datePublished":"2021-10-13T05:53:35+00:00","dateModified":"2021-10-13T09:43:54+00:00","breadcrumb":{"@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/#primaryimage","url":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-7.png","contentUrl":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-7.png","width":3200,"height":1064},{"@type":"BreadcrumbList","@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/test.opensource-db.in\/wp1\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL 14 New Features &#8211; DBA Lifesavers"}]},{"@type":"WebSite","@id":"https:\/\/test.opensource-db.in\/wp1\/#website","url":"https:\/\/test.opensource-db.in\/wp1\/","name":"OpenSource DB","description":"Your Trusted OpenSource Databases partner","publisher":{"@id":"https:\/\/test.opensource-db.in\/wp1\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/test.opensource-db.in\/wp1\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/test.opensource-db.in\/wp1\/#organization","name":"OPENSOURCE DB PRIVATE LIMITED","url":"https:\/\/test.opensource-db.in\/wp1\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/logo\/image\/","url":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/osdb-logo-tm-2.png","contentUrl":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/osdb-logo-tm-2.png","width":368,"height":120,"caption":"OPENSOURCE DB PRIVATE LIMITED"},"image":{"@id":"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/people\/OpenSource-DB\/100072970755470\/","https:\/\/x.com\/opensource_db","https:\/\/www.youtube.com\/channel\/UCmTI5h","https:\/\/www.linkedin.com\/company\/opensource-db","https:\/\/www.instagram.com\/opensource_db\/"]},{"@type":"Person","@id":"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/2d16bf6a94c0502f1c5b69e4a36e9a09","name":"Hari Kiran","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c9afef742ba871448bf401518655463f5e87b02f9fbd0096e88f857c51896822?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c9afef742ba871448bf401518655463f5e87b02f9fbd0096e88f857c51896822?s=96&d=mm&r=g","caption":"Hari Kiran"},"description":"Hari Kiran has over 15 years of extensive experience in areas of operations and managing multiple database technologies. A proven leader with excellent skills in building relationships, positive team dynamics, and decision-making. Hari also has strong Open Source expertise in Professional Services. He has the experience to help you refine your strategy and drive execution.","url":"https:\/\/test.opensource-db.in\/wp1\/author\/harikiranopensource-db-com\/"}]}},"rttpg_featured_image_url":null,"rttpg_author":{"display_name":"Hari Kiran","author_link":"https:\/\/test.opensource-db.in\/wp1\/author\/harikiranopensource-db-com\/"},"rttpg_comment":0,"rttpg_category":"<a href=\"https:\/\/test.opensource-db.in\/wp1\/category\/postgres\/postgresql-14\/\" rel=\"category tag\">PostgreSQL 14<\/a>","rttpg_excerpt":"We have covered a considerable amount of PostgreSQL 14 features in our previous posts, they are: Performance enhancements Monitoring improvements [&hellip;]","_links":{"self":[{"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/posts\/2328","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/comments?post=2328"}],"version-history":[{"count":22,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/posts\/2328\/revisions"}],"predecessor-version":[{"id":2405,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/posts\/2328\/revisions\/2405"}],"wp:attachment":[{"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/media?parent=2328"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/categories?post=2328"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/tags?post=2328"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}