On Mon, Oct 26, 2015 at 4:09 PM, Amit Kapila <amit.kapil...@gmail.com> wrote:
> On Mon, Oct 26, 2015 at 12:07 PM, Ashutosh Bapat < > ashutosh.ba...@enterprisedb.com> wrote: > >> >> >> On Mon, Oct 26, 2015 at 10:19 AM, Amit Kapila <amit.kapil...@gmail.com> >> wrote: >>> >>> >>> I think Oracle just copies the changed part of old row to rollback >>> segment. >>> Also in Redo logs, it just writes the changed column value (both old and >>> new). So for the case we are discussing in this thread (one changed >>> column out of 200 columns), Oracle will just write the old value of that >>> column in Redo and then in rollback segment, and write the new value >>> in Redo and then do the in-place update in heap row. >>> >>> >> In that case, readers would pay the penalty for constructing the row. >> > > Readers that have snapshot older than update-transaction needs to > pay such cost, otherwise all newer transactions can directly read from > page. Also not all old-transaction readers have to pay any such cost. > > Can you please explain your last sentence? > > Not only that, such a design has an advantage that the bloat due to > older data won't be there. > -- Best Wishes, Ashutosh Bapat EnterpriseDB Corporation The Postgres Database Company