Re: Partition-wise join for join between (declaratively) partitioned tables
Robert Haas <robertmhaas@gmail.com>
On Sun, Mar 19, 2017 at 12:15 AM, Rafia Sabih <rafia.sabih@enterprisedb.com> wrote: > I was trying to play around with this patch and came across following > case when without the patch query completes in 9 secs and with it in > 15 secs. Theoretically, I tried to capture the case when each > partition is having good amount of rows in output and each has to > build their own hash, in that case the cost of building so many hashes > comes to be more costly than having an append and then join. Thought > it might be helpful to consider this case in better designing of the > algorithm. Please feel free to point out if I missed something. In the non-partitionwise plan, the query planner correctly chooses to hash the same table (prt2) and probe from the large table (prt). In the partition-wise plan, it generally does the opposite. There is a mix of merge joins and hash joins, but of the 15 children that picked merge joins, 14 of them hashed the larger partition (in each case, from prt) and probed from the smaller one (in each case, from prt2), which seems like an odd strategy. So I think the problem is not that building lots of hash tables is slower than building just one, but rather that for some reason it's choosing the wrong table to hash. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Commits
-
Basic partition-wise join functionality.
- f49842d1ee31 11.0 landed
-
Assorted preparatory refactoring for partition-wise join.
- e139f1953f29 11.0 landed
-
Teach adjust_appendrel_attrs(_multilevel) to do multiple translations.
- 480f1f4329f1 11.0 landed
-
Stamp 10beta2.
- 42171e2cd23c 10.0 cited
-
Eat XIDs more efficiently in recovery TAP test.
- 08aed6604de2 10.0 cited
-
Abstract logic to allow for multiple kinds of child rels.
- 7a39b5e4d112 10.0 landed
-
Implement SortSupport for macaddr data type
- f90d23d0c518 10.0 cited
-
Attempt to stabilize grouping sets regression test plans.
- de4da168d57d 10.0 cited
-
Teach xlogreader to follow timeline switches
- 1148e22a82ed 10.0 cited
-
Don't scan partitioned tables.
- d3cc37f1d801 10.0 cited
-
Fix grammar.
- b4ff8609dbad 10.0 cited
-
postgres_fdw: Push down FULL JOINs with restriction clauses.
- b30fb56b07a8 10.0 cited
-
Some preliminary refactoring towards partitionwise join.
- c44c47a773bd 10.0 landed
-
contrib/amcheck needs RecentGlobalXmin to be PGDLLIMPORT'ified.
- 56018bf26eec 10.0 cited
-
Print test parameters like "foo: 123", and results like "foo = 123".
- 2a7f4f76434d 10.0 cited