Re: Let's make PostgreSQL multi-threaded
Thomas Munro <thomas.munro@gmail.com>
From: Thomas Munro <thomas.munro@gmail.com>
To: Jeremy Schneider <schneider@ardentperf.com>
Cc: pgsql-hackers@lists.postgresql.org, Thomas Kellerer <shammat@gmx.net>, Tomas Vondra <tomas.vondra@enterprisedb.com>,
Heikki Linnakangas <hlinnaka@iki.fi>, Tom Lane <tgl@sss.pgh.pa.us>
Date: 2023-06-07T23:37:00Z
Lists: pgsql-hackers
On Thu, Jun 8, 2023 at 10:37 AM Jeremy Schneider <schneider@ardentperf.com> wrote: > On 6/7/23 2:39 PM, Thomas Kellerer wrote: > > Tomas Vondra schrieb am 07.06.2023 um 21:20: > >> Also, which other projects did this transition? Is there something we > >> could learn from them? Were they restricted to much smaller list of > >> platforms? > > > > Not open source, but Oracle was historically multi-threaded on Windows > > and multi-process on all other platforms. > > I _think_ starting with 19c you can optionally run it multi-threaded on > > Linux as well. > Looks like it actually became publicly available in 12c. AFAICT Oracle > supports both modes today, with a config parameter to switch between them. It's old, but this describes the 4 main models and which well known RDBMSes use them in section 2.3: https://dsf.berkeley.edu/papers/fntdb07-architecture.pdf TL;DR DB2 is the winner, it can do process-per-connection, thread-per-connection, process-pool or thread-pool. I understand this thread to be about thread-per-connection (= backend, session, socket) for now.