
{"id":4201,"date":"2023-08-09T07:16:47","date_gmt":"2023-08-09T07:16:47","guid":{"rendered":"https:\/\/test.opensource-db.in\/wp1\/?p=4201"},"modified":"2023-08-09T07:16:49","modified_gmt":"2023-08-09T07:16:49","slug":"from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14","status":"publish","type":"post","link":"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/","title":{"rendered":"From Locking to Lockstar: Unveiling the enhancements in PostgreSQL 11 and 14"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"538\" src=\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2023\/08\/image-1-4-1024x538.png\" alt=\"\" class=\"wp-image-4219\" srcset=\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2023\/08\/image-1-4-1024x538.png 1024w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2023\/08\/image-1-4-300x158.png 300w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2023\/08\/image-1-4-768x403.png 768w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2023\/08\/image-1-4-1536x806.png 1536w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2023\/08\/image-1-4-189x99.png 189w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2023\/08\/image-1-4-152x80.png 152w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2023\/08\/image-1-4-394x207.png 394w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2023\/08\/image-1-4-915x480.png 915w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2023\/08\/image-1-4-1240x651.png 1240w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2023\/08\/image-1-4.png 1800w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Understanding Locking in PostgreSQL<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Locking is like the security guard of databases, ensuring data integrity and preventing conflicts when multiple users access the database at the same time. In PostgreSQL, &#8220;AccessShareLock&#8221; locks were acquired on partitions and indexes before PostgreSQL 12. These locks kept the table structure consistent during concurrent operations, preventing unwanted changes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Introducing Fastpath Locks<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Enter &#8220;fastpath locks&#8221; &#8211; lightweight locks designed for efficiency in low-contention scenarios. These locks are managed directly by individual database connections, optimized for speed and performance. But there&#8217;s a catch &#8211; they&#8217;re capped at 16 locks per connection. When that limit is crossed, the central lock manager takes over, providing more comprehensive control.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The real magic lies in how fastpath locks streamline common locking situations, offering impressive performance benefits. But remember, their behavior can change depending on transaction duration. To fully understand their impact, tailored benchmark tests are essential.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To begin, let&#8217;s examine the structure of the pgbench_accounts table. This table is partitioned based on the aid column using the RANGE strategy, distributing rows across various child tables like pgbench_accounts_1, pgbench_accounts_2, and so forth. Each child table contains a range of aid values.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">-- Table structure<br>CREATE TABLE public.pgbench_accounts (<br>aid int4 NOT NULL,<br>bid int4 NULL,<br>abalance int4 NULL,<br>filler bpchar(84) NULL,<br>CONSTRAINT pgbench_accounts_part_pkey PRIMARY KEY (aid)<br>)<br>PARTITION BY RANGE (aid);<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">CREATE TABLE pgbench_accounts_1 PARTITION OF pgbench_accounts FOR VALUES FROM (100001) TO (110001);<br>CREATE TABLE pgbench_accounts_2 PARTITION OF pgbench_accounts FOR VALUES FROM (110001) TO (120001);<br>CREATE TABLE pgbench_accounts_3 PARTITION OF pgbench_accounts FOR VALUES FROM (120001) TO (130001);<br>CREATE TABLE pgbench_accounts_4 PARTITION OF pgbench_accounts FOR VALUES FROM (130001) TO (140001);<br>CREATE TABLE pgbench_accounts_5 PARTITION OF pgbench_accounts FOR VALUES FROM (140001) TO (150001);<br>CREATE TABLE pgbench_accounts_6 PARTITION OF pgbench_accounts FOR VALUES FROM (150001) TO (160001);<br>CREATE TABLE pgbench_accounts_7 PARTITION OF pgbench_accounts FOR VALUES FROM (160001) TO (170001);<br>CREATE TABLE pgbench_accounts_8 PARTITION OF pgbench_accounts FOR VALUES FROM (170001) TO (180001);<br>CREATE TABLE pgbench_accounts_9 PARTITION OF pgbench_accounts FOR VALUES FROM (180001) TO (190001);<br>CREATE TABLE pgbench_accounts_10 PARTITION OF pgbench_accounts FOR VALUES FROM (190001) TO (200001);<br>CREATE TABLE pgbench_accounts_11 PARTITION OF pgbench_accounts FOR VALUES FROM (200001) TO (210001);<br>CREATE TABLE pgbench_accounts_12 PARTITION OF pgbench_accounts FOR VALUES FROM (210001) TO (220001);<br>CREATE TABLE pgbench_accounts_13 PARTITION OF pgbench_accounts FOR VALUES FROM (220001) TO (230001);<br>CREATE TABLE pgbench_accounts_14 PARTITION OF pgbench_accounts FOR VALUES FROM (230001) TO (240001);<br>CREATE TABLE pgbench_accounts_15 PARTITION OF pgbench_accounts FOR VALUES FROM (240001) TO (250001);<br>CREATE TABLE pgbench_accounts_16 PARTITION OF pgbench_accounts FOR VALUES FROM (250001) TO (260001);<br>CREATE TABLE pgbench_accounts_17 PARTITION OF pgbench_accounts FOR VALUES FROM (260001) TO (270001);<br>CREATE TABLE pgbench_accounts_18 PARTITION OF pgbench_accounts FOR VALUES FROM (270001) TO (280001);<br>CREATE TABLE pgbench_accounts_19 PARTITION OF pgbench_accounts FOR VALUES FROM (280001) TO (290001);<br>CREATE TABLE pgbench_accounts_20 PARTITION OF pgbench_accounts FOR VALUES FROM (290001) TO (300001);<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Investigating Locking Behavior Changes<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let&#8217;s dive into the main focus of this post: the change in locking behavior from PostgreSQL 11 to PostgreSQL 14. We&#8217;ll compare the locking behavior when querying for the aid value of 100002 across all partitions in both versions.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>PostgreSQL 11: Locking Behavior\n\nIn PostgreSQL 11, when querying for aid = 100002, the following locks are acquired:\n\npostgres@ubuntu:~$ psql\npsql (11.20 (Ubuntu 11.20-1.pgdg20.04+1))\nType \"help\" for help.\n\npart_test=# begin;\nBEGIN\npart_test=*# select * from pgbench_accounts where aid = 100002;\n    aid    |    bid    | abalance  |                                        filler\n-----------+-----------+-----------+--------------------------------------------------------------------------------------\n 100002 | 100002 | 100002 | filler\n(1 row)\n\npart_test=# select count(*) from (select nspname, relname,l.locktype, l.pid,l.mode, l.granted, l.fastpath from pg_locks l join pg_class c on (relation = c.oid) join pg_namespace nsp on (c.relnamespace = nsp.oid)\nwhere nspname not in ('pg_catalog','information_schema') and  pid in (select pid  from pg_stat_activity\n where datname = current_database()\n and query != current_query())\n  order by l.fastpath\n) as lock_test;\n count\n-------\n    41\n(1 row)<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>PostgreSQL 14: Locking Behavior\n\nAfter upgrading to PostgreSQL 14, querying for the same aid = 100002 reveals a distinct locking behavior:\n\npostgres@ubuntu:~$ psql -d part_test\npsql (14.8 (Ubuntu 14.8-1.pgdg20.04+1))\nType \"help\" for help.\n\npart_test=# begin;\nBEGIN\npart_test=*# select * from pgbench_accounts where aid = 100002;\n    aid    |    bid    | abalance  |                                        filler\n-----------+-----------+-----------+--------------------------------------------------------------------------------------\n 100002 | 100002 | 100002 | filler\n(1 row)\n\npart_test=# select nspname, relname,l.locktype, l.pid,l.mode, l.granted, l.fastpath from pg_locks l\n    join pg_class c on (relation = c.oid)\n    join pg_namespace nsp on (c.relnamespace = nsp.oid)\nwhere nspname not in ('pg_catalog','information_schema') and  pid in (select pid\n              from pg_stat_activity\n              where datname = current_database()\n                and query != current_query())\norder by l.fastpath;\n nspname |         relname         | locktype |  pid  |      mode       | granted | fastpath\n---------+-------------------------+----------+-------+-----------------+---------+----------\n public  | pgbench_accounts_1_pkey | relation | 14485 | AccessShareLock | t       | t\n public  | pgbench_accounts_1      | relation | 14485 | AccessShareLock | t       | t\n public  | pgbench_accounts        | relation | 14485 | AccessShareLock | t       | t\n(3 rows)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Workload Variability<\/strong>: Locking behavior can differ based on individual workload characteristics. Thoroughly test the impact of these changes on your application&#8217;s performance.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Informed Decision-Making<\/strong>: Prior to upgrading PostgreSQL, assess the locking behavior changes, and ensure that your application&#8217;s performance won&#8217;t be negatively affected.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Comparing All Partitions<\/strong>: PostgreSQL 11 vs. PostgreSQL 14<br>Here&#8217;s a comprehensive comparison of locking behavior across all partitions for the pgbench_accounts table between PostgreSQL 11 and PostgreSQL 14.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(Note: Due to space constraints, we&#8217;re showcasing a subset of partitions.) <br><\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Partition<\/th><th class=\"has-text-align-left\" data-align=\"left\">PostgreSQL 11 Locks Acquired<\/th><th class=\"has-text-align-left\" data-align=\"left\">PostgreSQL 14 Locks Acquired<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\">pgbench_accounts_1<\/td><td class=\"has-text-align-left\" data-align=\"left\">Locks<\/td><td class=\"has-text-align-left\" data-align=\"left\">Fewer Locks<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">pgbench_accounts_2<\/td><td class=\"has-text-align-left\" data-align=\"left\">Locks<\/td><td class=\"has-text-align-left\" data-align=\"left\">No Lock<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">&#8230;<\/td><td class=\"has-text-align-left\" data-align=\"left\">&#8230;<\/td><td class=\"has-text-align-left\" data-align=\"left\">&#8230;<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">pgbench_accounts_14<\/td><td class=\"has-text-align-left\" data-align=\"left\">Locks<\/td><td class=\"has-text-align-left\" data-align=\"left\">No Lock<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">pgbench_accounts_15<\/td><td class=\"has-text-align-left\" data-align=\"left\">Locks<\/td><td class=\"has-text-align-left\" data-align=\"left\">No Lock<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The AccessShareLock in PostgreSQL is a double-edged sword, offering concurrency while posing potential hurdles. Let&#8217;s look into its disadvantages:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Contention at the Table Level<\/strong>: While AccessShareLock promotes read concurrency, it locks entire tables. This can lead to contention when concurrent transactions need different levels of access, stalling progress.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Blocking Writes<\/strong>: Though AccessShareLock supports reads, write-oriented transactions requiring exclusive locks can get blocked by those holding AccessShareLocks, hampering data modification.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Deadlock Danger<\/strong>: Poorly coordinated lock acquisitions can trigger deadlocks. When transactions chase incompatible locks, they could deadlock, stalling the system.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Performance Overhead<\/strong>: Locks incur overhead. Frequent lock acquisitions and releases could impact performance, particularly in highly concurrent scenarios.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Read-Only Overkill<\/strong>: For read-only tasks, AccessShareLock might be overkill. Alternative strategies, like READ COMMITTED isolation or snapshot isolation, could offer read consistency without excessive locking.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In conclusion, while AccessShareLock has merits, its drawbacks warrant careful consideration. Tailor your lock strategy to your application&#8217;s needs, optimizing concurrency without sacrificing performance.<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Summary<\/strong>:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The understanding that PostgreSQL versions prior to 12 acquire locks on all partitions and indexes may not be universally applicable. It is essential to conduct specific testing to confirm the impact of such locks. In our own testing, we observed no discernible impact before and after upgrading to PostgreSQL version 13. Therefore, it is crucial to evaluate the locking behavior based on individual workload characteristics and conduct thorough testing to ascertain the actual impact.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>    <br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Understanding Locking in PostgreSQL Locking is like the security guard of databases, ensuring data integrity and preventing conflicts when multiple [&hellip;]<\/p>\n","protected":false},"author":7,"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":[52,23,42],"tags":[82],"class_list":["post-4201","post","type-post","status-publish","format-standard","hentry","category-customer-success","category-postgresql-14","category-postgresql-15","tag-locks"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>From Locking to Lockstar: Unveiling the enhancements in PostgreSQL 11 and 14 - 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=\"From Locking to Lockstar: Unveiling the enhancements in PostgreSQL 11 and 14 - OpenSource DB\" \/>\n<meta property=\"og:description\" content=\"Understanding Locking in PostgreSQL Locking is like the security guard of databases, ensuring data integrity and preventing conflicts when multiple [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/\" \/>\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=\"2023-08-09T07:16:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-09T07:16:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2023\/08\/image-1-4-1024x538.png\" \/>\n<meta name=\"author\" content=\"Taraka Vuyyuru\" \/>\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=\"Taraka Vuyyuru\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 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\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/\"},\"author\":{\"name\":\"Taraka Vuyyuru\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/55546e9ca9552218b9376d4ecc8447a5\"},\"headline\":\"From Locking to Lockstar: Unveiling the enhancements in PostgreSQL 11 and 14\",\"datePublished\":\"2023-08-09T07:16:47+00:00\",\"dateModified\":\"2023-08-09T07:16:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/\"},\"wordCount\":588,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#organization\"},\"image\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2023\/08\/image-1-4-1024x538.png\",\"keywords\":[\"Locks\"],\"articleSection\":[\"Customer Success\",\"PostgreSQL 14\",\"PostgreSQL 15\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/\",\"name\":\"From Locking to Lockstar: Unveiling the enhancements in PostgreSQL 11 and 14 - OpenSource DB\",\"isPartOf\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2023\/08\/image-1-4-1024x538.png\",\"datePublished\":\"2023-08-09T07:16:47+00:00\",\"dateModified\":\"2023-08-09T07:16:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/#primaryimage\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2023\/08\/image-1-4.png\",\"contentUrl\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2023\/08\/image-1-4.png\",\"width\":1800,\"height\":945},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/test.opensource-db.in\/wp1\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"From Locking to Lockstar: Unveiling the enhancements in PostgreSQL 11 and 14\"}]},{\"@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\/55546e9ca9552218b9376d4ecc8447a5\",\"name\":\"Taraka Vuyyuru\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/54256c344d6c1f7dbb87fa257d6e318d1ddcd0a29320b642116bfa20e693616b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/54256c344d6c1f7dbb87fa257d6e318d1ddcd0a29320b642116bfa20e693616b?s=96&d=mm&r=g\",\"caption\":\"Taraka Vuyyuru\"},\"url\":\"https:\/\/test.opensource-db.in\/wp1\/author\/taraka\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"From Locking to Lockstar: Unveiling the enhancements in PostgreSQL 11 and 14 - 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":"From Locking to Lockstar: Unveiling the enhancements in PostgreSQL 11 and 14 - OpenSource DB","og_description":"Understanding Locking in PostgreSQL Locking is like the security guard of databases, ensuring data integrity and preventing conflicts when multiple [&hellip;]","og_url":"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/","og_site_name":"OpenSource DB","article_publisher":"https:\/\/www.facebook.com\/people\/OpenSource-DB\/100072970755470\/","article_published_time":"2023-08-09T07:16:47+00:00","article_modified_time":"2023-08-09T07:16:49+00:00","og_image":[{"url":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2023\/08\/image-1-4-1024x538.png","type":"","width":"","height":""}],"author":"Taraka Vuyyuru","twitter_card":"summary_large_image","twitter_creator":"@opensource_db","twitter_site":"@opensource_db","twitter_misc":{"Written by":"Taraka Vuyyuru","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/#article","isPartOf":{"@id":"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/"},"author":{"name":"Taraka Vuyyuru","@id":"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/55546e9ca9552218b9376d4ecc8447a5"},"headline":"From Locking to Lockstar: Unveiling the enhancements in PostgreSQL 11 and 14","datePublished":"2023-08-09T07:16:47+00:00","dateModified":"2023-08-09T07:16:49+00:00","mainEntityOfPage":{"@id":"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/"},"wordCount":588,"commentCount":0,"publisher":{"@id":"https:\/\/test.opensource-db.in\/wp1\/#organization"},"image":{"@id":"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/#primaryimage"},"thumbnailUrl":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2023\/08\/image-1-4-1024x538.png","keywords":["Locks"],"articleSection":["Customer Success","PostgreSQL 14","PostgreSQL 15"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/","url":"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/","name":"From Locking to Lockstar: Unveiling the enhancements in PostgreSQL 11 and 14 - OpenSource DB","isPartOf":{"@id":"https:\/\/test.opensource-db.in\/wp1\/#website"},"primaryImageOfPage":{"@id":"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/#primaryimage"},"image":{"@id":"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/#primaryimage"},"thumbnailUrl":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2023\/08\/image-1-4-1024x538.png","datePublished":"2023-08-09T07:16:47+00:00","dateModified":"2023-08-09T07:16:49+00:00","breadcrumb":{"@id":"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/#primaryimage","url":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2023\/08\/image-1-4.png","contentUrl":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2023\/08\/image-1-4.png","width":1800,"height":945},{"@type":"BreadcrumbList","@id":"https:\/\/test.opensource-db.in\/wp1\/from-locking-to-lockstar-unveiling-the-enhancements-in-postgresql-11-and-14\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/test.opensource-db.in\/wp1\/"},{"@type":"ListItem","position":2,"name":"From Locking to Lockstar: Unveiling the enhancements in PostgreSQL 11 and 14"}]},{"@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\/55546e9ca9552218b9376d4ecc8447a5","name":"Taraka Vuyyuru","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/54256c344d6c1f7dbb87fa257d6e318d1ddcd0a29320b642116bfa20e693616b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/54256c344d6c1f7dbb87fa257d6e318d1ddcd0a29320b642116bfa20e693616b?s=96&d=mm&r=g","caption":"Taraka Vuyyuru"},"url":"https:\/\/test.opensource-db.in\/wp1\/author\/taraka\/"}]}},"rttpg_featured_image_url":null,"rttpg_author":{"display_name":"Taraka Vuyyuru","author_link":"https:\/\/test.opensource-db.in\/wp1\/author\/taraka\/"},"rttpg_comment":0,"rttpg_category":"<a href=\"https:\/\/test.opensource-db.in\/wp1\/category\/business\/customer-success\/\" rel=\"category tag\">Customer Success<\/a> <a href=\"https:\/\/test.opensource-db.in\/wp1\/category\/postgres\/postgresql-14\/\" rel=\"category tag\">PostgreSQL 14<\/a> <a href=\"https:\/\/test.opensource-db.in\/wp1\/category\/postgres\/postgresql-15\/\" rel=\"category tag\">PostgreSQL 15<\/a>","rttpg_excerpt":"Understanding Locking in PostgreSQL Locking is like the security guard of databases, ensuring data integrity and preventing conflicts when multiple [&hellip;]","_links":{"self":[{"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/posts\/4201","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\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/comments?post=4201"}],"version-history":[{"count":4,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/posts\/4201\/revisions"}],"predecessor-version":[{"id":4220,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/posts\/4201\/revisions\/4220"}],"wp:attachment":[{"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/media?parent=4201"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/categories?post=4201"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/tags?post=4201"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}