On Sun, Jan 15, 2023 at 9:13 PM Dilip Kumar <dilipbal...@gmail.com> wrote: > I have looked into the patch set, I think 0001 looks good to me about > 0002 I have a few questions, 0003 I haven't yet looked at
Thanks for taking a look. > I think '(nextXID - cutoffs->relfrozenxid) / freeze_table_age' should > be the actual fraction right? What is the point of adding 0.5 to the > divisor? If there is a logical reason, maybe we can explain in the > comments. It's just a way of avoiding division by zero. > While looking into the logic of 'lazy_scan_strategy', I think the idea > looks very good but the only thing is that > we have kept eager freeze and eager scan completely independent. > Don't you think that if a table is chosen for an eager scan > then we should force the eager freezing as well? Earlier versions of the patch kind of worked that way. lazy_scan_strategy would actually use twice the GUC setting to determine scanning strategy. That approach could make our "transition from lazy to eager strategies" involve an excessive amount of "catch-up freezing" in the VACUUM operation that advanced relfrozenxid for the first time, which you see an example of here: https://wiki.postgresql.org/wiki/Freezing/skipping_strategies_patch:_motivating_examples#Patch Now we treat the scanning and freezing strategies as two independent choices. Of course they're not independent in any practical sense, but I think it's slightly simpler and more elegant that way -- it makes the GUC vacuum_freeze_strategy_threshold strictly about freezing strategy, while still leading to VACUUM advancing relfrozenxid in a way that makes sense. It just happens as a second order effect. Why add a special case? In principle the break-even point for eager scanning strategy (i.e. advancing relfrozenxid) is based on the added cost only under this scheme. There is no reason for lazy_scan_strategy to care about what happened in the past to make the eager scanning strategy look like a good idea. Similarly, there isn't any practical reason why lazy_scan_strategy needs to anticipate what will happen in the near future with freezing. -- Peter Geoghegan