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 1sQy90-00CaoQ-FO for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Jul 2024 23:51:42 +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 1sQy8y-00AjdB-Nh for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Jul 2024 23:51: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 1sQy8y-00Ajd3-9c for pgsql-hackers@lists.postgresql.org; Mon, 08 Jul 2024 23:51:40 +0000 Received: from mail-lf1-x135.google.com ([2a00:1450:4864:20::135]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sQy8v-00175r-Dt for pgsql-hackers@lists.postgresql.org; Mon, 08 Jul 2024 23:51:39 +0000 Received: by mail-lf1-x135.google.com with SMTP id 2adb3069b0e04-52eafa1717bso1834924e87.2 for ; Mon, 08 Jul 2024 16:51:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1720482696; x=1721087496; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=1sjielVlMm0oS03q9uzc3VUK0OT1Bg6XFphc/hspVRw=; b=As6k3iR62N4sLZ/nQwiKhFKfPlxL5a/GiE6xxfUQqq26MKhX9dMX23sSjAu5J8vOU6 YOIaaonap9EEgJeg7ftK2Mdp86pq5A7B+DnSJoa3K9H5VCh2v2KVhiGIo21oGdRkVqTb X8i0W6QAIALTsEJENsmf2SpjsLi2AdPSenzIi+WGTn3jFVwFKLvasfX55/d5Ne/7wR9K JTKHY26mW2MYbHxTYeWXtZU0eL5bQiTPu3dALErd8lupBWiT5ak7f5J9e0ik6OcuVkP3 U87LH7LkOcgfJZLZ809ya05eSntHX4SjM5Uga4Ie1nj6bJWXtBwP1mawXcfDqOiAPyrC 9ngw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720482696; x=1721087496; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=1sjielVlMm0oS03q9uzc3VUK0OT1Bg6XFphc/hspVRw=; b=F6Ds5A1SNdbg7T2yGKvZHDVUbq3rhdgGCuvlYm76L6SUdcCBbyO4DDQkbdlVIU0pH/ Mns9jdnQG8JUsAtutSFgRNll4s97H+4rTBk3dLXtjufBeEvUUWau1NN1le1gNmgGm83/ 4lmwnVfvA1MjHODR8gjKcrmHAESh/JINmhvrEaIdo2AzlUvRmx3+6UMUsx9gwuiQlCf2 5kLXxffnqVsCyuLngTtBvODlUCf0nxP/jGiaPy4Ja1DNrCiA14HicjrLlFi/10wnQnC+ K+IfbRcgme7d09OZT1DxCBXuC1eEeK71uwStfdYpdYAsptwJhmKS/vUaQfuoy8856aq1 O/kg== X-Forwarded-Encrypted: i=1; AJvYcCURKzJLihFFjUTsGh8qtznbd3iMBvrISyjJix0CNAsqh81bCMP282WolDZ8aPUYbf8J216vqGpiGya3U9jqHkWWbeaJWJWh6J/txsiDQz02cfnd X-Gm-Message-State: AOJu0Yz6zbqtDtTNCFX30Dj2Hjrfajheeb2RQkPM9p6s64YPiOPAeR/u Z3KaR+5p+MQQNs0oIgA34D0HKtyw55pOnj0dHb56y798U0aMx2ZaKt4dq0Lc+U5/HDj9tYXxhdt QevoY9BGAlsRJeFV7vubr8YdidJY= X-Google-Smtp-Source: AGHT+IEH1IEmcN64kp6CKCIbxbULdWSmoJiwbCy68cIsGJ9xauxiDKutGYqRdIf9NA8ZEhJ6NKa7hPlcNr5rSna4AfU= X-Received: by 2002:a05:6512:a8d:b0:52e:74d5:4bf9 with SMTP id 2adb3069b0e04-52eb99d15a4mr391732e87.54.1720482695578; Mon, 08 Jul 2024 16:51:35 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: David Rowley Date: Tue, 9 Jul 2024 11:51:23 +1200 Message-ID: Subject: Re: Parallel Bitmap Heap Scan reports per-worker stats in EXPLAIN ANALYZE To: Tomas Vondra Cc: Dilip Kumar , David Geier , PostgreSQL Developers Content-Type: multipart/mixed; boundary="000000000000e9a499061cc51749" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e9a499061cc51749 Content-Type: text/plain; charset="UTF-8" On Mon, 8 Jul 2024 at 15:43, David Rowley wrote: > > On Sun, 18 Feb 2024 at 11:31, Tomas Vondra > wrote: > > 2) Leader vs. worker counters > > > > It seems to me this does nothing to add the per-worker values from "Heap > > Blocks" into the leader, which means we get stuff like this: > > > > Heap Blocks: exact=102 lossy=10995 > > Worker 0: actual time=50.559..209.773 rows=215253 loops=1 > > Heap Blocks: exact=207 lossy=19354 > > Worker 1: actual time=50.543..211.387 rows=162934 loops=1 > > Heap Blocks: exact=161 lossy=14636 > > > > I think this is wrong / confusing, and inconsistent with what we do for > > other nodes. > > Are you able to share which other nodes that you mean here? I did the analysis on this and out of the node types that have parallel instrumentation (per ExecParallelRetrieveInstrumentation()), Parallel Hash is the only node that does anything different from the others. Looking at the loop inside show_hash_info(), you can see it takes the Max() of each property. There's some discussion in [1] about why this came about. In particular [2]. I see no reason to copy the odd one out here, so I'm planning on going ahead with the patch that has Bitmap Heap Scan copy what the majority of other nodes do. I think we should consider aligning Parallel Hash with the other Parallel node behaviour. I've attached the (roughly done) schema and queries I used to obtain the plans to do this analysis. David [1] https://www.postgresql.org/message-id/flat/20200323165059.GA24950%40alvherre.pgsql [2] https://www.postgresql.org/message-id/31321.1586549487%40sss.pgh.pa.us --000000000000e9a499061cc51749 Content-Type: text/plain; charset="US-ASCII"; name="explain_analyze_parallel_stats_analysis.txt" Content-Disposition: attachment; filename="explain_analyze_parallel_stats_analysis.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lydmwkrj0 Y3JlYXRlIHRhYmxlIG1pbGwgKGEgaW50KTsKY3JlYXRlIGluZGV4IG9uIG1pbGwoYSk7CgppbnNl cnQgaW50byBtaWxsIHNlbGVjdCB4JTEwMDAgZnJvbSBnZW5lcmF0ZV9TZXJpZXMoMSwxMDAwMDAw MCl4Owp2YWN1dW0gYW5hbHl6ZSBtaWxsOwoKY3JlYXRlIHRhYmxlIGJpZyAoYSBpbnQgcHJpbWFy eSBrZXkpOwppbnNlcnQgaW50byBiaWcgc2VsZWN0IHggZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwx MDAwMDAwMCl4OwpjcmVhdGUgdGFibGUgcHJvYmUgKGEgaW50KTsKaW5zZXJ0IGludG8gcHJvYmUg c2VsZWN0IDEgZnJvbSBnZW5lcmF0ZV9TZXJpZXMoMSwxMDAwMDAwKTsKYW5hbHl6ZSBiaWcscHJv YmU7CgpjcmVhdGUgdGFibGUgYWdnIChhIGludCwgYiBpbnQpOwppbnNlcnQgaW50byBhZ2cgc2Vs ZWN0IGElMTAwMCxhIGZyb20gZ2VuZXJhdGVfU2VyaWVzKDEsMTAwMDAwMClhOwpjcmVhdGUgaW5k ZXggb24gYWdnKGEpOwoKc2V0IHBhcmFsbGVsX3R1cGxlX2Nvc3Q9MDsKc2V0IHBhcmFsbGVsX3Nl dHVwX2Nvc3Q9MDsKc2V0IGVuYWJsZV9pbmRleHNjYW49MDsKCgotLSBlYWNoIGluY2x1ZGVzICJX b3JrZXIgTjoiIHdpdGggc3RhdHMgZm9yIHRoZSBvcGVyYXRpb24uCmV4cGxhaW4gKGFuYWx5emUp IHNlbGVjdCAqIGZyb20gbWlsbCB3aGVyZSBhIDwgMTAwOyAtLSBCaXRtYXAgSGVhcCBTY2FuCmV4 cGxhaW4gKGFuYWx5emUpIHNlbGVjdCAqIGZyb20gYmlnIGIgaW5uZXIgam9pbiBwcm9iZSBwIG9u IGIuYT1wLmE7IC0tIE1lbW9pemUKZXhwbGFpbiAoYW5hbHl6ZSkgc2VsZWN0ICogZnJvbSBwcm9i ZSBvcmRlciBieSBhOyAtLSBTb3J0CnNldCBlbmFibGVfbmVzdGxvb3A9MDsKZXhwbGFpbiAoYW5h bHl6ZSkgc2VsZWN0IGEsY291bnQoYikgZnJvbSBhZ2cgZ3JvdXAgYnkgYTsgLS0gSGFzaEFnZyBP REQgT05FIE9VVC4gR0VUUyBNQVggREVUQUlMUyBGUk9NIFdPUktFUlMuCmV4cGxhaW4gKGFuYWx5 emUpIHNlbGVjdCAqIGZyb20gYmlnIGIgaW5uZXIgam9pbiBwcm9iZSBwIG9uIGIuYT1wLmE7IC0t IEhhc2gKcmVzZXQgZW5hYmxlX25lc3Rsb29wOwoKc2V0IGVuYWJsZV9pbmRleHNjYW49MTsgc2V0 IGVuYWJsZV9iaXRtYXBzY2FuPTA7IHNldCBlbmFibGVfc2Vxc2Nhbj0wOwpleHBsYWluIChhbmFs eXplKSBzZWxlY3QgYSxiIGZyb20gYWdnIHdoZXJlIGEgPiAxMCBvcmRlciBieSBhLGI7IC0tIElu Y3JlbWVudGFsIFNvcnQKc2V0IGVuYWJsZV9pbmRleHNjYW49MDsgc2V0IGVuYWJsZV9iaXRtYXBz Y2FuPTE7IHNldCBlbmFibGVfc2Vxc2Nhbj0xOwoKCi0tIGVhY2ggaW5jbHVkZXMgIldvcmtlciBO OiIgd2l0aCBzdGF0cyBmb3IgdGhlIG9wZXJhdGlvbgotLSBhbHNvIGluY2x1ZGVzIGFjdHVhbCB0 aW1lIGFuZCByb3dzIGZvciBlYWNoIHdvcmtlci4KZXhwbGFpbiAoYW5hbHl6ZSwgdmVyYm9zZSkg c2VsZWN0ICogZnJvbSBtaWxsIHdoZXJlIGEgPCAxMDA7IC0tIEJpdG1hcCBIZWFwIFNjYW4KZXhw bGFpbiAoYW5hbHl6ZSwgdmVyYm9zZSkgc2VsZWN0ICogZnJvbSBiaWcgYiBpbm5lciBqb2luIHBy b2JlIHAgb24gYi5hPXAuYTsgLS0gTWVtb2l6ZQpleHBsYWluIChhbmFseXplLCB2ZXJib3NlKSBz ZWxlY3QgKiBmcm9tIHByb2JlIG9yZGVyIGJ5IGE7IC0tIFNvcnQKc2V0IGVuYWJsZV9uZXN0bG9v cD0wOwpleHBsYWluIChhbmFseXplLCB2ZXJib3NlKSBzZWxlY3QgYSxjb3VudChiKSBmcm9tIGFn ZyBncm91cCBieSBhOyAtLSBIYXNoQWdnIE9ERCBPTkUgT1VULiBHRVRTIE1BWCBERVRBSUxTIEZS T00gV09SS0VSUy4KZXhwbGFpbiAoYW5hbHl6ZSwgdmVyYm9zZSkgc2VsZWN0ICogZnJvbSBiaWcg YiBpbm5lciBqb2luIHByb2JlIHAgb24gYi5hPXAuYTsgLS0gSGFzaApyZXNldCBlbmFibGVfbmVz dGxvb3A7CgpzZXQgZW5hYmxlX2luZGV4c2Nhbj0xOyBzZXQgZW5hYmxlX2JpdG1hcHNjYW49MDsg c2V0IGVuYWJsZV9zZXFzY2FuPTA7CmV4cGxhaW4gKGFuYWx5emUsIHZlcmJvc2UpIHNlbGVjdCBh LGIgZnJvbSBhZ2cgd2hlcmUgYSA+IDEwIG9yZGVyIGJ5IGEsYjsgLS0gSW5jcmVtZW50YWwgU29y dApzZXQgZW5hYmxlX2luZGV4c2Nhbj0wOyBzZXQgZW5hYmxlX2JpdG1hcHNjYW49MTsgc2V0IGVu YWJsZV9zZXFzY2FuPTE7CgoKLS0gZWFjaCBpbmNsdWRlcyAiV29ya2VyIE46IiB3aXRoIHN0YXRz IGZvciB0aGUgb3BlcmF0aW9uCi0tIHNob3dzIGEgc2luZ2xlIHRvdGFsIGJ1ZmZlcnMgd2hpY2gg aW5jbHVkZXMgbGVhZGVyIGFuZCB3b3JrZXIgYnVmZmVycy4KZXhwbGFpbiAoYW5hbHl6ZSwgYnVm ZmVycykgc2VsZWN0ICogZnJvbSBtaWxsIHdoZXJlIGEgPCAxMDA7IC0tIEJpdG1hcCBIZWFwIFNj YW4KZXhwbGFpbiAoYW5hbHl6ZSwgYnVmZmVycykgc2VsZWN0ICogZnJvbSBiaWcgYiBpbm5lciBq b2luIHByb2JlIHAgb24gYi5hPXAuYTsgLS0gTWVtb2l6ZQpleHBsYWluIChhbmFseXplLCBidWZm ZXJzKSBzZWxlY3QgKiBmcm9tIHByb2JlIG9yZGVyIGJ5IGE7IC0tIFNvcnQKc2V0IGVuYWJsZV9u ZXN0bG9vcD0wOwpleHBsYWluIChhbmFseXplLCBidWZmZXJzKSBzZWxlY3QgYSxjb3VudChiKSBm cm9tIGFnZyBncm91cCBieSBhOyAtLSBIYXNoQWdnIE9ERCBPTkUgT1VULiBHRVRTIE1BWCBERVRB SUxTIEZST00gV09SS0VSUy4KcmVzZXQgZW5hYmxlX25lc3Rsb29wOwoKc2V0IGVuYWJsZV9pbmRl eHNjYW49MTsgc2V0IGVuYWJsZV9iaXRtYXBzY2FuPTA7IHNldCBlbmFibGVfc2Vxc2Nhbj0wOwpl eHBsYWluIChhbmFseXplLCBidWZmZXJzKSBzZWxlY3QgYSxiIGZyb20gYWdnIHdoZXJlIGEgPiAx MCBvcmRlciBieSBhLGI7IC0tIEluY3JlbWVudGFsIFNvcnQKc2V0IGVuYWJsZV9pbmRleHNjYW49 MDsgc2V0IGVuYWJsZV9iaXRtYXBzY2FuPTE7IHNldCBlbmFibGVfc2Vxc2Nhbj0xOwoKCi0tIGVh Y2ggaW5jbHVkZXMgIldvcmtlciBOOiIgd2l0aCBzdGF0cyBmb3IgdGhlIG9wZXJhdGlvbgotLSBh bHNvIGluY2x1ZGVzIGFjdHVhbCB0aW1lIGFuZCByb3dzIGZvciBlYWNoIHdvcmtlci4KLS0gc2hv d3MgYSBzaW5nbGUgdG90YWwgYnVmZmVycyB3aGljaCBpbmNsdWRlcyBsZWFkZXIgYW5kIHdvcmtl ciBidWZmZXJzLgotLSBzaG93cyBidWZmZXIgY291bnRzIGZvciBlYWNoIHdvcmtlciBwcm9jZXNz CmV4cGxhaW4gKGFuYWx5emUsIGJ1ZmZlcnMsIHZlcmJvc2UpIHNlbGVjdCAqIGZyb20gbWlsbCB3 aGVyZSBhIDwgMTAwOyAtLSBCaXRtYXAgSGVhcCBTY2FuCmV4cGxhaW4gKGFuYWx5emUsIGJ1ZmZl cnMsIHZlcmJvc2UpIHNlbGVjdCAqIGZyb20gYmlnIGIgaW5uZXIgam9pbiBwcm9iZSBwIG9uIGIu YT1wLmE7CmV4cGxhaW4gKGFuYWx5emUsIGJ1ZmZlcnMsIHZlcmJvc2UpIHNlbGVjdCAqIGZyb20g cHJvYmUgb3JkZXIgYnkgYTsgLS0gU29ydApzZXQgZW5hYmxlX25lc3Rsb29wPTA7CmV4cGxhaW4g KGFuYWx5emUsIGJ1ZmZlcnMsIHZlcmJvc2UpIHNlbGVjdCBhLGNvdW50KGIpIGZyb20gYWdnIGdy b3VwIGJ5IGE7IC0tIEhhc2hBZ2cgT0REIE9ORSBPVVQuIEdFVFMgTUFYIERFVEFJTFMgRlJPTSBX T1JLRVJTLgpyZXNldCBlbmFibGVfbmVzdGxvb3A7CgpzZXQgZW5hYmxlX2luZGV4c2Nhbj0xOyBz ZXQgZW5hYmxlX2JpdG1hcHNjYW49MDsgc2V0IGVuYWJsZV9zZXFzY2FuPTA7CmV4cGxhaW4gKGFu YWx5emUsIGJ1ZmZlcnMsIHZlcmJvc2UpIHNlbGVjdCBhLGIgZnJvbSBhZ2cgd2hlcmUgYSA+IDEw IG9yZGVyIGJ5IGEsYjsgLS0gSW5jcmVtZW50YWwgU29ydApzZXQgZW5hYmxlX2luZGV4c2Nhbj0w OyBzZXQgZW5hYmxlX2JpdG1hcHNjYW49MTsgc2V0IGVuYWJsZV9zZXFzY2FuPTE7Cg== --000000000000e9a499061cc51749--