On Thu, 2008-08-07 at 12:55 +0200, Jochem van Dieten wrote: > On Thu, Aug 7, 2008 at 12:38 PM, Simon Riggs wrote: > > I propose creating "Visibility Groups" that *explicitly* limit the > > ability of a transaction to access data outside its visibility group(s). > > Doesn't every transaction need to access data from the catalogs? > Wouldn't the inclusion of a catalogs visibility group in every > transaction negate any potential benefits?
True, but I don't see the catalogs as frequently updated data. The objective is to isolate frequently updated tables from long running statements that don't need to access them. Tables can be in multiple visibility groups, perhaps that wasn't clear. When we seek to vacuum a table, we take the lowest xmin of any group it was in when we took snapshot. e.g. Long running statement accesses table L, so must access table L and catalog tables only. We set this explicitly. Frequently updated table F is accessed by general transactions that have set no visibility group, i.e. the implicit group is "all tables". So catalog and table L would be in in two groups, while F in only one. As a result, the xmin used for table F will be later than the one used for table L because the long running statement's transaction is not included in the calculation of the xmin for table F. The transaction accessing L has explicitly defined the limit of its access, so removing rows from F is possible without breaking MVCC. -- Simon Riggs www.2ndQuadrant.com PostgreSQL Training, Services and Support -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers