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 1vELSM-00AZLr-E5 for pgsql-hackers@arkaria.postgresql.org; Thu, 30 Oct 2025 05:44:17 +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 1vELSK-0069G0-5E for pgsql-hackers@arkaria.postgresql.org; Thu, 30 Oct 2025 05:44:15 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vELSJ-0069Fr-Ra for pgsql-hackers@lists.postgresql.org; Thu, 30 Oct 2025 05:44:14 +0000 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vELSG-0050q4-0x for pgsql-hackers@lists.postgresql.org; Thu, 30 Oct 2025 05:44:14 +0000 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-7a27053843bso1064281b3a.1 for ; Wed, 29 Oct 2025 22:44:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1761803050; x=1762407850; darn=lists.postgresql.org; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=wdeZ/TCfztnzgZZ8LSEdg2KS5njmgEQ2BwYqFA6XTX8=; b=g4LXAsF14TReIgMFiiC7yfJYAi+G5l9+Cbe2g27cVYTTeJ0lm3MI30LEjq96TzC/Q8 ZP8zqspwg+4O82vzNCmDJ4LgLypQbuYGSAgiIpqrKhOBuYoCzj7uGGkU2PcKXqzK0+uM MgFr8p2or3R/pBUpWqSUPWzaa5P0nP82inaLUJLcFm+xWSH50KlvkQ7De/tQvdisB4Fk 64guH1sG1NiTSFoyVuxlFJIpbnnihiOI706/JLgUqM5VV2dlhthNdH9EipH9Q0IieTwU xpPPDkB1Dpvg0WkTl/U9SZ2FY64pWUPUvoHFLXfc3n1O/rrMueOdzqPot9e7Do4bNmhR 5rBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761803050; x=1762407850; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wdeZ/TCfztnzgZZ8LSEdg2KS5njmgEQ2BwYqFA6XTX8=; b=VyErB005yzEg2NQyZPJbYT18+T02VA8CT2l+Otd/Lo2zrg0igaT0o44UtdgBd9qa38 I50fnR6VpK7iaAtbGLachFdGjUval9jmRI3lJZ6bS9xVnhZpKNHQYhlHgYFw5XkORFO2 94OvnDEc9/I4caaJOMb5xfJMABL1ZyUpGT/M6aL7gHo2Qwz5c6T22gwYCrBqQl4waI2Q vDr0r5wAj4RWwaRS136rDbatLCuOaSxYHNjdlOfjXAX31YSBTfETFpVhtpWo+2fvDfoB iLqhB3ASZfsIeK2JKF2Y2x8XeAXAOQknpovpS1AgRWVnIvkuG+NIaKNUmFf3n1VUovZP Id3Q== X-Forwarded-Encrypted: i=1; AJvYcCXnHIX16IJhpdlarn3NkQ0x+MuKrJcFPPZWs6GmvfvQyI2utrF2q0+o9Br+l56k3HdPNUa1qXmauh0+D3JP@lists.postgresql.org X-Gm-Message-State: AOJu0YwaXdBd3dbKAxDQHQE9f4daKQHMSBPn4zUMHlxNEAompbxcghU0 ZTDrXWgWe1N+dxakFQYrAqJ2yCZjvdWKzW431aRSZn4qdfxEVkdDUFld X-Gm-Gg: ASbGncv2A+ap24+NqNRRn9vz6sROubcKYvhT15yqpCH1/gFhGYJV5pXPu3/8AejKc2P OGqkjeYNRXNKMminEeYJgxvuLOCq4zYQSk2xQWeEx6mK5Yz5/ZlTk9szc7FNtSdisufxOh4EFDo lkijGOg7fVC1eyCInZhvdVdlW+CcY6FzTUwrw5W1cTlQWJcEyKr4n41Kql3k10tolYxvGSxYy/V VPWqdIykLNoundDH6S2oTDjXNigq6JZl8ka6gcC7zHx4xbJoNueEqXB1OnJMRgvbIkUTOYIf56r Ed7OMegK79yVEafpaZhFSpZPydnAvExAOHhkMTMrSe/zNwXe2O28fSulkPg5AYRZTJkG64Jj2Px obYuLDU2jR1J6xzm956ucZEbSKpAgiMOjK75HJAF259r6ARJg+aJYQaPrnptzB4Us6OlVm5tOgT 3NudBx/S7oBsGyk59+b2s37Q== X-Google-Smtp-Source: AGHT+IGbthyypzStOV2tKTnxix4MaHx6exXcdkJ+PhFvujRKKWDFjVirgSnsfX85qDVsq2fW469nSg== X-Received: by 2002:a05:6a20:258a:b0:341:4171:b5ae with SMTP id adf61e73a8af0-3465a22b63emr6881516637.52.1761803049623; Wed, 29 Oct 2025 22:44:09 -0700 (PDT) Received: from smtpclient.apple ([170.178.170.211]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b712f4a8833sm15333596a12.37.2025.10.29.22.44.07 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 29 Oct 2025 22:44:09 -0700 (PDT) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.700.81\)) Subject: Re: tuple radix sort From: Chao Li In-Reply-To: Date: Thu, 30 Oct 2025 13:43:34 +0800 Cc: John Naylor , PostgreSQL Hackers , Peter Geoghegan Content-Transfer-Encoding: quoted-printable Message-Id: <2E6154C8-CFF8-4144-96AA-30CFB3DCF483@gmail.com> References: <17F6CDF1-2D93-4C38-B0F2-D52B51F4D167@gmail.com> <98232211-F000-45E6-AEE7-718834DDE277@gmail.com> To: David Rowley X-Mailer: Apple Mail (2.3826.700.81) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk > On Oct 30, 2025, at 13:01, David Rowley wrote: >=20 > On Thu, 30 Oct 2025 at 16:46, Chao Li wrote: >>> On Oct 30, 2025, at 11:40, John Naylor = wrote: >>> Are you by chance running with asserts on? It's happened before, so = I >>> have to make sure. That makes a big difference here because I = disabled >>> diversion thresholds in assert builds so that regression tests (few >>> cases with large inputs) cover the paths I want, in addition to my >>> running a standalone stress test. >>=20 >> Yes, assert is always enabled in my sandbox. I can disable assert and = rerun the test later. >=20 > Never expect anything meaningful to come from running performance > tests on Assert builds. You should always be rebuilding without > Asserts before doing performance tests. >=20 Sure, good to learn. Actually I am very new to PG development, so any = guidance is greatly appreciated. I just made a distclean, then configure without any parameter. Now, the = overall execution time reduced ~10% than with asserts. With the low = cardinality data, off and on are very close: ``` evantest=3D# set wip_radix_sort =3D 'off'; Time: 0.206 ms evantest=3D# select * from test_multi order by category, name; Time: 5070.277 ms (00:05.070) evantest=3D# select * from test_multi order by category, name; Time: 5158.748 ms (00:05.159) evantest=3D# select * from test_multi order by category, name; Time: 5072.708 ms (00:05.073) evantest=3D# set wip_radix_sort =3D 'on'; Time: 0.177 ms evantest=3D# select * from test_multi order by category, name; Time: 4992.516 ms (00:04.993) evantest=3D# select * from test_multi order by category, name; Time: 5145.361 ms (00:05.145) evantest=3D# select * from test_multi order by category, name; Time: 5101.800 ms (00:05.102) evantest=3D# \o evantest=3D# show work_mem; work_mem ---------- 1GB (1 row) Time: 0.186 ms evantest=3D# explain select * from test_multi order by category, name; QUERY PLAN = --------------------------------------------------------------------------= - Sort (cost=3D122003.84..124503.84 rows=3D1000000 width=3D69) Sort Key: category, name -> Seq Scan on test_multi (cost=3D0.00..22346.00 rows=3D1000000 = width=3D69) (3 rows) ``` And with high cardinality test data, on has a big win: ``` evantest=3D# set wip_radix_sort =3D 'off'; Time: 0.174 ms evantest=3D# select * from test_multi order by category, name; Time: 353.702 ms evantest=3D# select * from test_multi order by category, name; Time: 375.549 ms evantest=3D# select * from test_multi order by category, name; Time: 367.967 ms evantest=3D# set wip_radix_sort =3D 'on'; Time: 0.147 ms evantest=3D# select * from test_multi order by category, name; Time: 279.537 ms evantest=3D# select * from test_multi order by category, name; Time: 278.114 ms evantest=3D# select * from test_multi order by category, name; Time: 284.273 ms ``` Best regards, -- Chao Li (Evan) HighGo Software Co., Ltd. https://www.highgo.com/