From: | Jim Nasby <jim(at)nasby(dot)net> |
---|---|
To: | Merlin Moncure <mmoncure(at)gmail(dot)com> |
Cc: | PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Set hint bits upon eviction from BufMgr |
Date: | 2011-03-25 15:34:47 |
Message-ID: | 3C21A3CC-4707-483C-AD38-9B013E2D1732@nasby.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Mar 25, 2011, at 9:52 AM, Merlin Moncure wrote:
> Without this bit, the only way to set hint bits going during bufmgr
> eviction is to do a visibility check on every tuple, which would
> probably be prohibitively expensive. Since OLTP environments would
> rarely see this bit, they would not have to pay for the check.
IIRC one of the biggest costs is accessing the CLOG, but what if the bufmgr.c/bgwriter didn't use the same CLOG lookup mechanism as backends did? Unlike when a backend is inspecting visibility, it's not necessary for something like bgwriter to know exact visibility as long as it doesn't mark something as visible when it shouldn't. If it uses a different CLOG caching/accessing method that lags behind the real CLOG then the worst-case scenario is that there's a delay on setting hint bits. But getting grwiter to dothis would likely still be a huge win over forcing backends to worry about it. It's also possible that the visibility check itself could be simplified.
BTW, I don't think you want to play these games when a backend is evicting a page because you'll be slowing a real backend down.
--
Jim C. Nasby, Database Architect jim(at)nasby(dot)net
512.569.9461 (cell) http://jim.nasby.net
From | Date | Subject | |
---|---|---|---|
Next Message | Stephen Frost | 2011-03-25 15:46:38 | Transactional DDL, but not Serializable |
Previous Message | Robert Haas | 2011-03-25 15:32:24 | Re: Re: making write location work (was: Efficient transaction-controlled synchronous replication) |