pgsql: Replace polyphase merge algorithm with a simple balanced k-way m

From: Heikki Linnakangas <heikki(dot)linnakangas(at)iki(dot)fi>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Replace polyphase merge algorithm with a simple balanced k-way m
Date: 2021-10-18 12:15:09
Message-ID: E1mcRXp-0000e9-0Y@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Replace polyphase merge algorithm with a simple balanced k-way merge.

The advantage of polyphase merge is that it can reuse the input tapes as
output tapes efficiently, but that is irrelevant on modern hardware, when
we can easily emulate any number of tape drives. The number of input tapes
we can/should use during merging is limited by work_mem, but output tapes
that we are not currently writing to only cost a little bit of memory, so
there is no need to skimp on them.

This makes sorts that need multiple merge passes faster.

Discussion: https://www.postgresql.org/message-id/420a0ec7-602c-d406-1e75-1ef7ddc58d83%40iki.fi
Reviewed-by: Peter Geoghegan, Zhihong Yu, John Naylor

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/65014000b351d5725eb00d133416ab1b4f8245b1

Modified Files
--------------
src/backend/utils/sort/tuplesort.c | 662 ++++++++++++++++---------------------
1 file changed, 293 insertions(+), 369 deletions(-)

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Heikki Linnakangas 2021-10-18 13:16:38 pgsql: Fix format modifier used in elog.
Previous Message Heikki Linnakangas 2021-10-18 12:15:08 pgsql: Refactor LogicalTapeSet/LogicalTape interface.