On Wed, Apr 6, 2016 at 8:35 AM, rob stone <floriparob@xxxxxxxxx> wrote: > On Wed, 2016-04-06 at 10:33 +0000, Albe Laurenz wrote: > > <snip> >> Every row has two system columns associated with it: xmin and xmax >> >> xmin is the transaction ID that created the row, while xmax is >> the transaction ID that removed the row. >> >> So when an update takes place, xmax of the original row and xmin >> of the new row are set to the transaction ID of the current >> transaction. > Out of curiosity:- > 1) If you only updated a column defined as BOOLEAN, DATE or TIMESTAMP, > the tuples physical size should be the same. Is it written back to the > same page with altered xmin, xmax values? Being the same size doesn't matter, because it *has* to be copied. If there is room for the copy to go onto the same page, then that is done. If there is not room, then it goes onto a different page. > > 2) If you defined a table with a FILLFACTOR of say 70%, and there is > still space left on its page for the updated tuple, does the same > apply? > > I am curious because of "while xmax is the transaction ID that > *removed* the row". "marked for removal" would be more accurate. If the row were actually physically removed, it would no longer have a xmax to set. Cheers, Jeff -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general