Re: Partition-wise join for join between (declaratively) partitioned tables
Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>
Attachments
- queries.out (application/octet-stream)
- queries.sql (application/octet-stream)
On Mon, Mar 20, 2017 at 10:17 PM, Ashutosh Bapat <ashutosh.bapat@enterprisedb.com> wrote: >> >> On a further testing of this patch I find another case when it is >> showing regression, the time taken with patch is around 160 secs and >> without it is 125 secs. >> Another minor thing to note that is planning time is almost twice with >> this patch, though I understand that this is for scenarios with really >> big 'big data' so this may not be a serious issue in such cases, but >> it'd be good if we can keep an eye on this that it doesn't exceed the >> computational bounds for a really large number of tables. > > Right, planning time would be proportional to the number of partitions > at least in the first version. We may improve upon it later. > >> Please find the attached .out file to check the output I witnessed and >> let me know if anymore information is required >> Schema and data was similar to the preciously shared schema with the >> addition of more data for this case, parameter settings used were: >> work_mem = 1GB >> random_page_cost = seq_page_cost = 0.1 this doesn't look good. Why do you set both these costs to the same value? > > The patch does not introduce any new costing model. It costs the > partition-wise join as sum of costs of joins between partitions. The > method to create the paths for joins between partitions is same as > creating the paths for joins between regular tables and then the > method to collect paths across partition-wise joins is same as > collecting paths across child base relations. So, there is a large > chance that the costing for joins between partitions might have a > problem which is showing up here. There may be some special handling > for regular tables versus child tables that may be the root cause. But > I have not seen that kind of code till now. > > Can you please provide the outputs of individual partition-joins? If > the plans for joins between partitions are same as the ones chosen for > partition-wise joins, we may need to fix the existing join cost > models. Offlist, Rafia shared the outputs of joins between partitions and join between partitioned table. The joins between partitions look similar to those pick up by the partition-wise join. So, it looks that some costing error in regular joins is resulting in an costing error in partition-wise join as suspected. Attached the SQL and the output. -- Best Wishes, Ashutosh Bapat EnterpriseDB Corporation The Postgres Database 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