Re: Hybrid Hash/Nested Loop joins and caching results from subplans
Andy Fan <zhihui.fan1213@gmail.com>
From: Andy Fan <zhihui.fan1213@gmail.com>
To: David Rowley <dgrowleyml@gmail.com>
Cc: Simon Riggs <simon@2ndquadrant.com>, PostgreSQL Developers <pgsql-hackers@lists.postgresql.org>
Date: 2020-06-03T02:36:20Z
Lists: pgsql-hackers
> > > Thanks for running those tests. I had a quick look at the results and > I think to say that all 4 are better is not quite right. One is > actually a tiny bit slower and one is only faster due to a plan > change. > > Yes.. Thanks for pointing it out. > Q18 uses a result cache for 2 x nested loop joins and has a 0% hit > ratio. The execution time is reduced to 91% of the original time only > because the planner uses a different plan, which just happens to be > faster by chance. > Q20 uses a result cache for the subplan and has a 0% hit ratio. The > execution time is 100.27% of the original time. There are 8620 cache > misses. > Looks the case here is some statistics issue or cost model issue. I'd like to check more about that. But before that, I upload the steps[1] I used in case you want to reproduce it locally. [1] https://github.com/zhihuiFan/tpch-postgres -- Best Regards Andy Fan
Commits
-
Add Result Cache executor node (take 2)
- 9eacee2e62d8 14.0 landed
-
Add Result Cache executor node
- b6002a796dc0 14.0 landed
-
Allow estimate_num_groups() to pass back further details about the estimation
- ed934d4fa30f 14.0 landed
-
Allow users of simplehash.h to perform direct deletions
- ff53d7b159b9 14.0 landed
-
Cache if PathTarget and RestrictInfos contain volatile functions
- f58b230ed0db 14.0 landed
-
Fix pull_varnos' miscomputation of relids set for a PlaceHolderVar.
- 55dc86eca70b 14.0 cited