On September 3, 2018 11:33:35 AM PDT, Bruce Momjian <br...@momjian.us> wrote:
>On Mon, Sep 3, 2018 at 01:30:33PM -0400, Tom Lane wrote:
>> Bruce Momjian <br...@momjian.us> writes:
>> > What if we globally or locally cache the _cost_ of plans, so we can
>> > consult that cache before planning and enable certain
>optimizations?
>>
>> But what would you use as cache key? And how's this help if we
>haven't
>
>Uh, I assume we would do what pg_stat_statements does and remove the
>constants an hash that.
That's not particularly cheap... Constants heavily influence planning choices,
so I don't think they actually could be removed.
>> seen a similar query before in the session?
>
>Well, if it was global we could use output from another session.
>
>I guess my point is that this only used to turn on micro-optimizations
>and maybe parallelism
What kind of micro opts are you thinking of? The cases I remember are more in
the vein of doing additional complex optimizations (join removal, transforming
ORs into UNION, more complex analysis of predicates...).
Parallelism would definitely benefit from earlier knowledge, although I suspect
some base rel analysis might be more realistic, because it's far from
guaranteed that queries are ever repeated in a similar enough manner.
> and JIT, so it doesn't have to be 100% accurate.
JIT decision is done after main planning, so we know the cost.
--
Sent from my Android device with K-9 Mail. Please excuse my brevity.