
{"id":7557,"date":"2025-04-09T12:14:24","date_gmt":"2025-04-09T12:14:24","guid":{"rendered":"https:\/\/test.opensource-db.in\/wp1\/?p=7557"},"modified":"2025-04-09T12:15:28","modified_gmt":"2025-04-09T12:15:28","slug":"efficient-management-of-postgresql-large-objects","status":"publish","type":"post","link":"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/","title":{"rendered":"Efficient Management of PostgreSQL Large Objects"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">When working with relational databases like PostgreSQL, the norm is to manage structured data organized into rows and columns. However, in many real-world applications, we encounter the need to store and manage larger unstructured data\u2014such as multimedia files, OIDs, and documents, that don\u2019t fit neatly into conventional columns. PostgreSQL offers support for Large Objects, also known as LOs, to cater to such needs. This guide dives into how PostgreSQL handles LOs, the associated challenges, and how tools like <code>vacuumlo<\/code> can assist in maintaining database hygiene.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">What are Large Objects in PostgreSQL?<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Large Objects (LOs) in PostgreSQL are used to store massive binary data that exceeds standard column storage capacity. Examples include high-resolution images, PDFs, audio\/video files, and other binary formats. Unlike BYTEA, which stores binary data inline within a table, LOs are stored separately and referenced by an Object Identifier (OID). This separation improves performance and scalability when dealing with sizable datasets.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PostgreSQL internally manages LOs using the system catalog tables <code>pg_largeobject<\/code> and <code>pg_largeobject_metadata<\/code>. Each LO is broken into smaller chunks to optimize storage. These chunks are stored as rows in pg_largeobject, while metadata such as access permissions and comments reside in <code>pg_largeobject_metadata<\/code>. This chunking mechanism means that writing to an LO at an offset (say 1,000,000) doesn&#8217;t require allocating all preceding space, it simply stores what\u2019s necessary and returns zeroes for unwritten portions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PostgreSQL provides a read\/write API for creating, modifying, and deleting large objects, closely resembling traditional file operations. Large objects can be added in multiple ways, including programmatically creating them or importing files directly into the database.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here is the way I have added the Large Objects to the table.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Before going for inserting LO into the table, we need to enable lo extension to your database.<br><code>CREATE EXTENSION lo;<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this table I&#8217;m creating an OID column which stores the LO data object. I have some .txt files in my \/tmp directory which is an accessible location for Postgres. Inserted those files into the table.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>test_db=# CREATE TABLE image_data (id SERIAL PRIMARY KEY, &nbsp;image_oid OID);\n\nINSERT INTO image_data (image_oid) VALUES (lo_import('\/tmp\/sample.txt'));<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>test_db=# select * from image_data;\n id | image_oid \n----+-----------\n  4 |     55547\n  5 |     55554\n  6 |     55555\n  7 |     55556\n  8 |     55557\n  9 |     55563\n 10 |     55564\n(7 rows<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">However, PostgreSQL does not automatically delete the large object data when a referencing row is deleted from a user table. This can lead to orphaned large objects, data that still exists in the system but is no longer being used.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>The Problem of Orphaned Large Objects<br><\/strong>One major caveat of using LOs is that PostgreSQL does not automatically delete them when their referencing row is removed. If you delete a row or drop a table containing an LO reference, the large object itself remains in the pg_largeobject table, unlinked and unused. Over time, these orphaned LOs can consume substantial disk space.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Manual LO Cleanup Challenges<br><\/strong>Cleaning up orphaned LOs requires deliberate administrative actions. Because PostgreSQL\u2019s built-in cleanup routines (e.g., VACUUM) do not cover LOs, orphaned LOs can quietly build up over time, especially in systems with frequent updates or deletions. This results in inefficient disk usage and potential performance degradation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Identifying Orphaned Large Objects<br><\/strong>You can identify orphaned LOs by comparing the list of all LOs in <code>pg_largeobject<\/code> against those referenced in user-defined tables.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">vacuumlo is a PostgreSQL client utility that scans for large objects in the system and deletes the ones that are no longer referenced in any table. It helps in cleaning up orphaned LOs and reclaiming space, much like VACUUM helps remove dead tuples in regular tables.For example:<br>I have some LO inserted into the table after sometime if i go ahead and DELETE rows which consists LO in the table. Only the oid which represents the LO are deleted but not the actual files located in other locations. Those files which are now after dropping the table the files will become orphaned files and which should be deleted manually.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>test_db=# DROP TABLE image_data ;\nDROP TABLE\n<\/code>\n<code>postgres@pgtest:~$ vacuumlo -n -v test_db\nPassword: \nConnected to database \"test_db\"\nTest run: no large objects will be removed!\nChecking file_oid in public.my_docs\nWould remove 9 large objects from database \"test_db\".<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Here I&#8217;m listing all the dead tuples of LO with the command. Even after dropping the table with LargeObjects. Now we will go ahead and vacuum all the large objects to clean the unwanted space occupied by the tuples. <br><br><code>postgres@pgtest:~$ vacuumlo -v test_db<br>Password: <br>Connected to database \"test_db\"<br>Checking file_oid in public.my_docs<br>Successfully removed 9 large objects from database \"test_db\".<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In PostgreSQL, another way to store large binary data is the bytea datatype, which stores the binary directly into tables and relies on TOAST for compression.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PostgreSQL\u2019s Large Objects (LOs) are a powerful way to handle large binary data, but they require careful management. Orphaned LOs can accumulate over time, and tools like <code>vacuumlo<\/code> help clean up unused data. In this post, we covered how to insert, manage, and clean LOs efficiently.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In the next blog, we\u2019ll explore LOs vs. <code>bytea<\/code>, and how PostgreSQL\u2019s TOAST mechanism fits into the picture.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>When working with relational databases like PostgreSQL, the norm is to manage structured data organized into rows and columns. However, [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":7563,"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,42,89],"tags":[],"class_list":["post-7557","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-postgresql-14","category-postgresql-15","category-postgresql-16"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Efficient Management of PostgreSQL Large Objects - 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=\"Efficient Management of PostgreSQL Large Objects - OpenSource DB\" \/>\n<meta property=\"og:description\" content=\"When working with relational databases like PostgreSQL, the norm is to manage structured data organized into rows and columns. However, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/\" \/>\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=\"2025-04-09T12:14:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-04-09T12:15:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/04\/image-12.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"945\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Brahmini Ratnam\" \/>\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=\"Brahmini Ratnam\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 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\/efficient-management-of-postgresql-large-objects\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/\"},\"author\":{\"name\":\"Brahmini Ratnam\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/867a56696ebca29a93489ed53609f301\"},\"headline\":\"Efficient Management of PostgreSQL Large Objects\",\"datePublished\":\"2025-04-09T12:14:24+00:00\",\"dateModified\":\"2025-04-09T12:15:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/\"},\"wordCount\":753,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#organization\"},\"image\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/04\/image-12.png\",\"articleSection\":[\"PostgreSQL 14\",\"PostgreSQL 15\",\"PostgreSQL 16\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/\",\"name\":\"Efficient Management of PostgreSQL Large Objects - OpenSource DB\",\"isPartOf\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/04\/image-12.png\",\"datePublished\":\"2025-04-09T12:14:24+00:00\",\"dateModified\":\"2025-04-09T12:15:28+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/#primaryimage\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/04\/image-12.png\",\"contentUrl\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/04\/image-12.png\",\"width\":1800,\"height\":945},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/test.opensource-db.in\/wp1\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Efficient Management of PostgreSQL Large Objects\"}]},{\"@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\/867a56696ebca29a93489ed53609f301\",\"name\":\"Brahmini Ratnam\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/05bcc95d3352ddae501c8cdae6b20b8e4e59c373cb7e506042427bca7fe13a3b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/05bcc95d3352ddae501c8cdae6b20b8e4e59c373cb7e506042427bca7fe13a3b?s=96&d=mm&r=g\",\"caption\":\"Brahmini Ratnam\"},\"url\":\"https:\/\/test.opensource-db.in\/wp1\/author\/brahmini-ratnam-meruva\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Efficient Management of PostgreSQL Large Objects - 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":"Efficient Management of PostgreSQL Large Objects - OpenSource DB","og_description":"When working with relational databases like PostgreSQL, the norm is to manage structured data organized into rows and columns. However, [&hellip;]","og_url":"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/","og_site_name":"OpenSource DB","article_publisher":"https:\/\/www.facebook.com\/people\/OpenSource-DB\/100072970755470\/","article_published_time":"2025-04-09T12:14:24+00:00","article_modified_time":"2025-04-09T12:15:28+00:00","og_image":[{"width":1800,"height":945,"url":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/04\/image-12.png","type":"image\/png"}],"author":"Brahmini Ratnam","twitter_card":"summary_large_image","twitter_creator":"@opensource_db","twitter_site":"@opensource_db","twitter_misc":{"Written by":"Brahmini Ratnam","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/#article","isPartOf":{"@id":"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/"},"author":{"name":"Brahmini Ratnam","@id":"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/867a56696ebca29a93489ed53609f301"},"headline":"Efficient Management of PostgreSQL Large Objects","datePublished":"2025-04-09T12:14:24+00:00","dateModified":"2025-04-09T12:15:28+00:00","mainEntityOfPage":{"@id":"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/"},"wordCount":753,"commentCount":0,"publisher":{"@id":"https:\/\/test.opensource-db.in\/wp1\/#organization"},"image":{"@id":"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/#primaryimage"},"thumbnailUrl":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/04\/image-12.png","articleSection":["PostgreSQL 14","PostgreSQL 15","PostgreSQL 16"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/","url":"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/","name":"Efficient Management of PostgreSQL Large Objects - OpenSource DB","isPartOf":{"@id":"https:\/\/test.opensource-db.in\/wp1\/#website"},"primaryImageOfPage":{"@id":"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/#primaryimage"},"image":{"@id":"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/#primaryimage"},"thumbnailUrl":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/04\/image-12.png","datePublished":"2025-04-09T12:14:24+00:00","dateModified":"2025-04-09T12:15:28+00:00","breadcrumb":{"@id":"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/#primaryimage","url":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/04\/image-12.png","contentUrl":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/04\/image-12.png","width":1800,"height":945},{"@type":"BreadcrumbList","@id":"https:\/\/test.opensource-db.in\/wp1\/efficient-management-of-postgresql-large-objects\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/test.opensource-db.in\/wp1\/"},{"@type":"ListItem","position":2,"name":"Efficient Management of PostgreSQL Large Objects"}]},{"@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\/867a56696ebca29a93489ed53609f301","name":"Brahmini Ratnam","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/05bcc95d3352ddae501c8cdae6b20b8e4e59c373cb7e506042427bca7fe13a3b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/05bcc95d3352ddae501c8cdae6b20b8e4e59c373cb7e506042427bca7fe13a3b?s=96&d=mm&r=g","caption":"Brahmini Ratnam"},"url":"https:\/\/test.opensource-db.in\/wp1\/author\/brahmini-ratnam-meruva\/"}]}},"rttpg_featured_image_url":{"full":["https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/04\/image-12.png",1800,945,false],"landscape":["https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/04\/image-12.png",1800,945,false],"portraits":["https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/04\/image-12.png",1800,945,false],"thumbnail":["https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/04\/image-12-150x150.png",150,150,true],"medium":["https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/04\/image-12-300x158.png",300,158,true],"large":["https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/04\/image-12-1024x538.png",1024,538,true],"1536x1536":["https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/04\/image-12-1536x806.png",1536,806,true],"2048x2048":["https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/04\/image-12.png",1800,945,false],"ultp_layout_landscape_large":["https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/04\/image-12.png",1200,630,false],"ultp_layout_landscape":["https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/04\/image-12.png",870,457,false],"ultp_layout_portrait":["https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/04\/image-12.png",600,315,false],"ultp_layout_square":["https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/04\/image-12.png",600,315,false]},"rttpg_author":{"display_name":"Brahmini Ratnam","author_link":"https:\/\/test.opensource-db.in\/wp1\/author\/brahmini-ratnam-meruva\/"},"rttpg_comment":0,"rttpg_category":"<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> <a href=\"https:\/\/test.opensource-db.in\/wp1\/category\/postgres\/postgresql-16\/\" rel=\"category tag\">PostgreSQL 16<\/a>","rttpg_excerpt":"When working with relational databases like PostgreSQL, the norm is to manage structured data organized into rows and columns. However, [&hellip;]","_links":{"self":[{"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/posts\/7557","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\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/comments?post=7557"}],"version-history":[{"count":3,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/posts\/7557\/revisions"}],"predecessor-version":[{"id":7564,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/posts\/7557\/revisions\/7564"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/media\/7563"}],"wp:attachment":[{"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/media?parent=7557"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/categories?post=7557"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/tags?post=7557"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}