Jeff Davis <pg...@j-davis.com> writes: > Now it tries to keep the VM buffer pinned during scans, inserts, > updates, and deletes. This should avoid increased contention pinning the > VM pages, but performance tests are required. > ... > Then again, if a 5GB table is being randomly accessed, an extra pin is > unlikely to matter. Also, without locality, the contention would not be > nearly as bad either. I'm still pretty unclear what the "worst case" for > this patch is supposed to look like.
I'd be worried about the case of a lot of sessions touching a lot of unrelated tables. This change implies doubling the number of buffers that are held pinned by any given query, and the distributed overhead from that (eg, adding cycles to searches for free buffers) is what you ought to be afraid of. Another possibly important point is that reducing the number of pin/unpin cycles for a given VM page might actually hurt the chances of it being found in shared buffers, because IIRC the usage_count is bumped once per pin/unpin. That algorithm is based on the assumption that buffer pins are not drastically different in lifespan, but I think you just broke that for pins on VM pages. I'm not particularly concerned about devising solutions for these problems, though, because I think this idea is a loser from the get-go; the increase in contention for VM pages is alone going to destroy any possible benefit. regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers