Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u2Ba1-00ELs8-Ul for pgsql-hackers@arkaria.postgresql.org; Tue, 08 Apr 2025 16:13:41 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1u2Ba0-00B1Wq-Bu for pgsql-hackers@arkaria.postgresql.org; Tue, 08 Apr 2025 16:13:40 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u2Ba0-00B1Wi-2J for pgsql-hackers@lists.postgresql.org; Tue, 08 Apr 2025 16:13:40 +0000 Received: from sss.pgh.pa.us ([68.162.161.243]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1u2BZy-003hqj-26 for pgsql-hackers@lists.postgresql.org; Tue, 08 Apr 2025 16:13:39 +0000 Received: from sss1.sss.pgh.pa.us (localhost [127.0.0.1]) by sss.pgh.pa.us (8.15.2/8.15.2) with ESMTP id 538GDYLb4044568; Tue, 8 Apr 2025 12:13:34 -0400 From: Tom Lane To: Nathan Bossart cc: Hannu Krosing , PostgreSQL Hackers Subject: Re: Horribly slow pg_upgrade performance with many Large Objects In-reply-to: References: Comments: In-reply-to Nathan Bossart message dated "Tue, 08 Apr 2025 10:46:41 -0500" MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-ID: <4044566.1744128814.1@sss.pgh.pa.us> Date: Tue, 08 Apr 2025 12:13:34 -0400 Message-ID: <4044567.1744128814@sss.pgh.pa.us> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk Nathan Bossart writes: > On Tue, Apr 08, 2025 at 09:35:24AM +0200, Hannu Krosing wrote: >> Changing the LO export to dumping pg_largeobject_metadata content >> instead of creating the LOs should be a nice small change confined to >> pg_dump --binary-upgrade only so perhaps we could squeeze it in v18 >> still. > Feature freeze for v18 was ~4 hours ago, so unfortunately this is v19 > material at this point. Yeah, even if we had a patch in hand, it's too late for v18. However there are additional problems with this idea: 1. The idea requires role OIDs to match across the upgrade. I don't believe that pg_upgrade tries to preserve role OIDs --- and doing so would be problematic, because what if the new cluster's bootstrap superuser is named differently in the old and new clusters? It might be possible to work around that with some casting to/from regrole, but I don't think a simple COPY into pg_largeobject_metadata will play along with that. 2. If you just do the equivalent of an INSERT or COPY into pg_largeobject_metadata, you could create entries that look right, but they are actually not right because there should be pg_shdepend entries backing each ownership or permission reference (for non-pinned roles) and there won't be. I guess you could think of also manually inserting rows into pg_shdepend, but (a) ugh and (b) the claimed speedup is kind of vanishing into the distance at this point. regards, tom lane