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 1oOlYE-0007e3-1W for pgsql-hackers@arkaria.postgresql.org; Thu, 18 Aug 2022 19:51:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oOlYC-00030H-SM for pgsql-hackers@arkaria.postgresql.org; Thu, 18 Aug 2022 19:51:32 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oOlYB-0002y9-OF for pgsql-hackers@lists.postgresql.org; Thu, 18 Aug 2022 19:51:32 +0000 Received: from out2-smtp.messagingengine.com ([66.111.4.26]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oOlY8-0004yr-L3 for pgsql-hackers@lists.postgresql.org; Thu, 18 Aug 2022 19:51:31 +0000 Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id 9C6B75C02D7; Thu, 18 Aug 2022 15:51:26 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Thu, 18 Aug 2022 15:51:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=anarazel.de; h= cc:cc:content-type:date:date:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:sender:subject :subject:to:to; s=fm1; t=1660852286; x=1660938686; bh=cxtyzg0o3N Xjlr9vowD2xaf0bi/xN+PJjdZBo2tjWuM=; b=QvSdJlJiDXyfcigMrHGWCMbsbi ubwf7NU+pcBql/xw+QfM2koJRXMCYvCM8QqjwkrN3eYms1zZpyvdhAxVZoAX+uIG 4/j7v7r/E1YXSyrXxoloLAJVw9xaWz9bntzoqvhletSvpI26ZnTJX688AQ4ectit iV1TvjrL24AuoszyY24IDFN9lN6YBul1Kt1FEGc6ClZivHVDmR2H17HWy8vAmZ2o t5VVanSwVnpb3s0pkpiqixlGyOwt0v+dEXXXcq8pK37QNQJlxn6iW00hZR/NkzeW V3Z2vsaAaUhYVn4rPfhEe0Gmm5aQmDLeydzJMn4G66iAMwf/vDqmHBpNJ+Fw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:sender:subject:subject:to:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm1; t=1660852286; x=1660938686; bh=cxtyzg0o3NXjlr9vowD2xaf0bi/x N+PJjdZBo2tjWuM=; b=Z+Nn7BbaqK5EchaQxJqz8iMT6P/e/fSgc42ypqy9FHTQ f7uelTv3mfIzurTGtjW6t4pg/EgzUt5x2hgnHPzyQw4ajWBjKJRvKy3hMNUtRg1d QQBpeomY0JFHB9YLIDCVgrFQAXk08e+S8ah5+ijWTa2u5CQ1QMV6kkgfizTfFTDl jBDL31fEBrJsSJdEaCMT2stOGptRAT0uT/b5v+WhJBcL/RijY17V8YDrrPn/AU7R 0A/uHWrZlmtUtPGNWhkJHKwY7v/FVehTcNnE4ncqnIktj2iFHu1qjR/4jwWBvdNi JWOekDJQeCQHBJDEHUqZFsWe7KM624TFhGlNeAVztw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrvdehledgudduiecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpeffhffvvefukfhfgggtuggjsehttdertddttddvnecuhfhrohhmpeetnhgu rhgvshcuhfhrvghunhguuceorghnughrvghssegrnhgrrhgriigvlhdruggvqeenucggtf frrghtthgvrhhnpedvffefvefhteevffegieetfefhtddvffejvefhueetgeeludehteev udeitedtudenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhroh hmpegrnhgurhgvshesrghnrghrrgiivghlrdguvg X-ME-Proxy: Feedback-ID: id4a34324:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 18 Aug 2022 15:51:25 -0400 (EDT) Date: Thu, 18 Aug 2022 12:51:24 -0700 From: Andres Freund To: Greg Stark Cc: "Drouvot, Bertrand" , Tom Lane , Melanie Plageman , Kyotaro Horiguchi , Justin Pryzby , Thomas Munro , "David G. Johnston" , PostgreSQL Hackers Subject: Re: shared-memory based stats collector - v70 Message-ID: <20220818195124.c7ipzf6c5v7vxymc@awork3.anarazel.de> References: <5db2b670-f3df-57ea-bdc6-962a582ff2e4@amazon.com> <0befffb3-8323-f2cd-915f-0ab64396f500@amazon.com> <1c56f4c6-61ce-d131-553c-297326e20bf1@amazon.com> <7f622949-2d78-c030-e7e0-cdee5f6cf79b@amazon.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk Hi, On 2022-08-18 15:26:31 -0400, Greg Stark wrote: > And indexes of course. It's a bit frustrating since without the > catalog you won't know what table the index actually is for... But > they're pretty important stats. FWIW, I think we should split relation stats into table and index stats. Historically it'd have added a lot of complexity to separate the two, but I don't think that's the case anymore. And we waste space for index stats by having lots of table specific fields. > On that note though... What do you think about having the capability > to add other stats kinds to the stats infrastructure? Getting closer to that was one of my goals working on the shared memory stats stuff. > It would make a lot of sense for pg_stat_statements to add its entries here > instead of having to reimplement a lot of the same magic. Yes, we should move pg_stat_statements over. It's pretty easy to get massive contention on stats entries with pg_stat_statements, because it doesn't have support for "batching" updates to shared stats. And reimplementing the same logic in pg_stat_statements.c doesn't make sense. And the set of normalized queries could probably stored in DSA as well - the file based thing we have right now is problematic. > To do that I guess more of the code needs to be moved to be table > driven from the kind structs either with callbacks or with other meta > data. Pretty much all of it already is. The only substantial missing bit is reading/writing of stats files, but that should be pretty easy. And of course making the callback array extensible. > So the kind record could contain tupledesc and the code to construct the > returned tuple so that these functions could return any custom entry as well > as the standard entries. I don't see how this would work well - we don't have functions returning variable kinds of tuples. And what would convert a struct to a tuple? Nor do I think it's needed - if you have an extension providing a new stats kind it can also provide accessors. Greetings, Andres Freund