mirror of
https://github.com/postgres/postgres.git
synced 2025-12-19 17:02:53 +03:00
Display Memoize planner estimates in EXPLAIN
There've been a few complaints that it can be overly difficult to figure out why the planner picked a Memoize plan. To help address that, here we adjust the EXPLAIN output to display the following additional details: 1) The estimated number of cache entries that can be stored at once 2) The estimated number of unique lookup keys that we expect to see 3) The number of lookups we expect 4) The estimated hit ratio Technically #4 can be calculated using #1, #2 and #3, but it's not a particularly obvious calculation, so we opt to display it explicitly. The original patch by Lukas Fittl only displayed the hit ratio, but there was a fear that might lead to more questions about how that was calculated. The idea with displaying all 4 is to be transparent which may allow queries to be tuned more easily. For example, if #2 isn't correct then maybe extended statistics or a manual n_distinct estimate can be used to help fix poor plan choices. Author: Ilia Evdokimov <ilya.evdokimov@tantorlabs.com> Author: Lukas Fittl <lukas@fittl.com> Reviewed-by: David Rowley <dgrowleyml@gmail.com> Reviewed-by: Andrei Lepikhov <lepihov@gmail.com> Reviewed-by: Robert Haas <robertmhaas@gmail.com> Discussion: https://postgr.es/m/CAP53Pky29GWAVVk3oBgKBDqhND0BRBN6yTPeguV_qSivFL5N_g%40mail.gmail.com
This commit is contained in:
@@ -2133,10 +2133,12 @@ typedef struct MemoizePath
|
||||
* complete after caching the first record. */
|
||||
bool binary_mode; /* true when cache key should be compared bit
|
||||
* by bit, false when using hash equality ops */
|
||||
Cardinality calls; /* expected number of rescans */
|
||||
uint32 est_entries; /* The maximum number of entries that the
|
||||
* planner expects will fit in the cache, or 0
|
||||
* if unknown */
|
||||
Cardinality est_calls; /* expected number of rescans */
|
||||
Cardinality est_unique_keys; /* estimated unique keys, for EXPLAIN */
|
||||
double est_hit_ratio; /* estimated cache hit ratio, for EXPLAIN */
|
||||
} MemoizePath;
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user