On Mon, Mar 14, 2011 at 01:56:22PM +0200, Heikki Linnakangas wrote:
> On 12.03.2011 12:40, Noah Misch wrote:
>> The installation that inspired my original report recently upgraded from 
>> 9.0.1
>> to 9.0.3, and your fix did significantly decrease its conflict frequency.  
>> The
>> last several conflicts I have captured involve XLOG_BTREE_REUSE_PAGE records.
>> (FWIW, the index has generally been pg_attribute_relid_attnam_index.)  I've
>> attached a test script demonstrating the behavior.  _bt_page_recyclable 
>> approves
>> any page deleted no more recently than RecentXmin, because we need only 
>> ensure
>> that every ongoing scan has witnessed the page as dead.  For the hot standby
>> case, we need to account for possibly-ongoing standby transactions.  Using
>> RecentGlobalXmin covers that, albeit with some pessimism: we really only need
>> LEAST(RecentXmin, PGPROC->xmin of walsender_1, .., PGPROC->xmin of 
>> walsender_N)
>> - vacuum_defer_cleanup_age.  Not sure the accounting to achieve that would 
>> pay
>> off, though.  Thoughts?
>
> Hmm, instead of bloating the master, I wonder if we could detect more  
> accurately if there are any on-going scans, in the standby. For example,  
> you must hold a lock on the index to scan it, so only transactions  
> holding the lock need to be checked for conflict.

That would be nice.  Do you have an outline of an implementation in mind?

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to