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 set by 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 greater than 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 cache is 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


Reply via email to