Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mJjmn-0000gE-DV for pgsql-general@arkaria.postgresql.org; Fri, 27 Aug 2021 21:53:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mJjml-0003K6-Jc for pgsql-general@arkaria.postgresql.org; Fri, 27 Aug 2021 21:53:15 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mJjmj-0003Hb-MB for pgsql-general@lists.postgresql.org; Fri, 27 Aug 2021 21:53:15 +0000 Received: from out5-smtp.messagingengine.com ([66.111.4.29]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mJjmc-0004RL-7o for pgsql-general@lists.postgresql.org; Fri, 27 Aug 2021 21:53:12 +0000 Received: from compute6.internal (compute6.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id BA1065C00C9; Fri, 27 Aug 2021 17:53:04 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute6.internal (MEProxy); Fri, 27 Aug 2021 17:53:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aklaver.com; h= subject:to:cc:references:from:message-id:date:mime-version :in-reply-to:content-type:content-transfer-encoding; s=fm3; bh=e qwTG3zqMJjplqEX0OiYiAMZdNKr4qpH4MZBhif56D0=; b=c3o+6D3NOrCVt3CS5 xGjuzXDnKOr8CCRig4/zEAurlBqVD3MSlpsb21cF1rTABC2jipslW/cBfTlHqDW7 nAip/m/1DvQtdCqhmnAjv7GVtavw2dvOFkRBMMcMbt96YLZmq4RypRqIxeMO2Bv3 lmY6RvPf7aARcgnV5QTn1I6b2N2dHxUgBTSGEGpXhg9xZn2yhdhQcdN7qppYUBmz V/jCvJnGchOGi5cZmQM9AKNd6hn0tE24ziYLYX/LrzlbhfJpGnVNdsTywDR7RB5T vFeAKz5eZqhZIdZaw7/tZxzSQ2HxfptNSoGO8NME31d18jkJ2GA1pjw6pSJoBIYv deciA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm3; bh=eqwTG3zqMJjplqEX0OiYiAMZdNKr4qpH4MZBhif56 D0=; b=F13BG63jw8k3aRYvIFcMouLxmvrBq0tz7lvrNTQsEhJC2OXAXwBc3FdbZ BgKlwRPbdtgawm9v7pl2gh9M73KNlD2RlFFQySmpk5bwJcTvJDJ7wAajPoEDnHiu Xc2pD6Z69woFBH5w2SrDsfLcRVMDN2qqAdD/dOXXctXsA1uWcZCh89biKoKkq37h bIB+92rTdTDkvQmt0Zs+ZK9SiG0zAX6Oza0EFnoZz7lSMtuaqz8WBzymwcRRRO0F TnRGNwGIhbiYjak5+qTga/LVHKml6Emo6PMZTwMmiEE3JRL8ckITFQmwEdpk1nsO wRxNMc+CPe7o4E/J1TjkPj3rNQldw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvtddruddugedgtddvucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepuffvfhfhkffffgggjggtgfesthejredttdefheenucfhrhhomheptegurhhi rghnucfmlhgrvhgvrhcuoegrughrihgrnhdrkhhlrghvvghrsegrkhhlrghvvghrrdgtoh hmqeenucggtffrrghtthgvrhhnpedtgefflefhveeikeeguddufeetueegffdugedukeei tdelgeelgeehfffgkedvkeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmh grihhlfhhrohhmpegrughrihgrnhdrkhhlrghvvghrsegrkhhlrghvvghrrdgtohhm X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri, 27 Aug 2021 17:53:02 -0400 (EDT) Subject: Re: Can we get rid of repeated queries from pg_dump? To: Tom Lane , Laurenz Albe Cc: depesz@depesz.com, pgsql-general References: <20210826084430.GA26282@depesz.com> <648517.1629986527@sss.pgh.pa.us> <20210826140827.GA15868@depesz.com> <649446.1629987629@sss.pgh.pa.us> <20210826160644.GA3120@depesz.com> <896732.1630099403@sss.pgh.pa.us> From: Adrian Klaver Message-ID: <1fecd427-291e-5494-4b5e-0315f762f892@aklaver.com> Date: Fri, 27 Aug 2021 14:53:01 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: <896732.1630099403@sss.pgh.pa.us> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On 8/27/21 2:23 PM, Tom Lane wrote: > Laurenz Albe writes: >> On Thu, 2021-08-26 at 18:06 +0200, hubert depesz lubaczewski wrote: >>> In total, there were 5000 queries: >>> SELECT pg_catalog.format_type('[0-9]+'::pg_catalog.oid, NULL) >>> But there were only 83 separate oids that were scanned. > >> That is a strong argument for using a hash table to cache the types. > > Those queries are coming from getFormattedTypeName(), which is used > for function arguments and the like. I'm not quite sure why Hubert > is seeing 5000 such calls in a database with only ~100 functions; > surely they don't all have an average of 50 arguments? Could be. From the stats post: "Based on my reading of queries in order it seems to follow the pattern of: One call for: SELECT proretset, prosrc, probin, provolatile, proisstrict, prosecdef, lanname, proconfig, procost, prorows, pg_catalog.pg_get_function_arguments(p.oid) AS funcargs, pg_catalog.pg_get_function_identity_arguments(p.oid) AS funciargs, pg_catalog.pg_get_function_re sult(p.oid) AS funcresult, proleakproof, array_to_string(protrftypes, ' ') AS protrftypes, proparallel, prokind, prosupport, NULL AS prosqlbody FROM pg_catalog.pg_proc p, pg_catalog.pg_language l WHERE p.oid = 'SOME_NUMBER'::pg_catalog.oid AND l.oid = p.prolang and then one or more: SELECT pg_catalog.format_type('SOME_NUMBER'::pg_catalog.oid, NULL) In one case, after proc query, there were 94 concecutive pg_catalog.format_type queries. " > > I experimented with the attached, very quick-n-dirty patch to collect > format_type results during the initial scan of pg_type, instead. On the > regression database in HEAD, it reduces the number of queries pg_dump > issues from 3260 to 2905; but I'm having a hard time detecting any net > performance change. > > (This is not meant for commit as-is; notably, I didn't bother to fix > getTypes' code paths for pre-9.6 servers. It should be fine for > performance testing though.) > > regards, tom lane > -- Adrian Klaver adrian.klaver@aklaver.com