On 2021/12/24 19:40, Tomas Vondra wrote:
> Maybe, but what would such workload look like? Based on the tests I did, such workload probably can't generate any
WAL.The amount of WAL added by the change is tiny, the regression is caused by having to flush WAL.
>
> The only plausible workload I can think of is just calling nextval, and the cache pretty much fixes that.
Some users don't want to increase cache setting, do they? Because
- They may expect that setval() affects all subsequent nextval(). But if cache is set to greater than one, the value
setby setval() doesn't affect other backends until they consumed all the cached sequence values.
- They may expect that the value returned from nextval() is basically increased monotonically. If cache is set to
greaterthan one, subsequent nextval() can easily return smaller value than one returned by previous nextval().
- They may want to avoid "hole" of a sequence as much as possible, e.g., as far as the server is running normally. If
cacheis set to greater than one, such "hole" can happen even thought the server doesn't crash yet.
> FWIW I plan to explore the idea of looking at sequence page LSN, and flushing up to that position.
Sounds great, thanks!
Regards,
--
Fujii Masao
Advanced Computing Technology Center
Research and Development Headquarters
NTT DATA CORPORATION