Re: Parallel execution and prepared statements
Robert Haas <robertmhaas@gmail.com>
From: Robert Haas <robertmhaas@gmail.com>
To: Tobias Bussmann <t.bussmann@gmx.net>
Cc: "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>,
Albe Laurenz <laurenz.albe@wien.gv.at>, Amit Kapila <amit.kapila16@gmail.com>
Date: 2016-11-17T15:39:18Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Enable parallelism for prepared statements and extended query protocol.
- 57a6a72b6bc9 9.6.0 cited
On Thu, Nov 17, 2016 at 10:07 AM, Tobias Bussmann <t.bussmann@gmx.net> wrote: >> Yeah, we could do something like this, perhaps not in exactly this >> way, but I'm not sure it's a good idea to just execute the parallel >> plan without workers. > > sure, executing parallel plans w/o workers seems a bit of a hack. But: > - we already do it this way in some other situations True, but we also try to avoid it whenever possible, because it's likely to lead to poor performance. > - the alternative in this special situation would be to _force_ replanning without the CURSOR_OPT_PARALLEL_OK. The decision for replanning is hidden deep within plancache.c and while we could influence it with CURSOR_OPT_CUSTOM_PLAN this wouldn't have an effect if the prepared statement doesn't have any parameters. Additionally, influencing the decision and generating a non-parallel plan would shift the avg cost calculation used to choose custom or generic plans. I think it would be a good idea to come up with a way for a query to produce both a parallel and a non-parallel plan and pick between them at execution time. However, that's more work than I've been willing to undertake. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company