Обсуждение: what's hsitoric MVCC Snapshot?

Поиск
Список
Период
Сортировка

what's hsitoric MVCC Snapshot?

От
"jacktby@gmail.com"
Дата:
Here are the comments in src/include/utils/snapshot.h.
        /*
* For normal MVCC snapshot this contains the all xact IDs that are in
* progress, unless the snapshot was taken during recovery in which case
* it's empty. For historic MVCC snapshots, the meaning is inverted, i.e.
* it contains *committed* transactions between xmin and xmax.
*
* note: all ids in xip[] satisfy xmin <= xip[i] < xmax
*/
TransactionId *xip;
I can't understand the historic MVCC snapshots? can you give me a scenario
to describe this?

jacktby@gmail.com

Re: what's hsitoric MVCC Snapshot?

От
Adrian Klaver
Дата:
On 3/5/23 06:49, jacktby@gmail.com wrote:
> Here are the comments in src/include/utils/snapshot.h.
> /*
> * For normal MVCC snapshot this contains the all xact IDs that are in
> * progress, unless the snapshot was taken during recovery in which case
> * it's empty. For historic MVCC snapshots, the meaning is inverted, i.e.
> * it contains *committed* transactions between xmin and xmax.
> *
> * note: all ids in xip[] satisfy xmin <= xip[i] < xmax
> */
> TransactionId *xip;
> I can't understand the historic MVCC snapshots? can you give me a scenario
> to describe this?

 From the same file:


/*
  * A tuple is visible iff it follows the rules of SNAPSHOT_MVCC, but
  * supports being called in timetravel context (for decoding catalog
  * contents in the context of logical decoding).
          */
SNAPSHOT_HISTORIC_MVCC,

> ------------------------------------------------------------------------
> jacktby@gmail.com

-- 
Adrian Klaver
adrian.klaver@aklaver.com




Re: what's hsitoric MVCC Snapshot?

От
Adrian Klaver
Дата:
On 3/5/23 07:58, Adrian Klaver wrote:
> On 3/5/23 06:49, jacktby@gmail.com wrote:
>> Here are the comments in src/include/utils/snapshot.h.
>> /*
>> * For normal MVCC snapshot this contains the all xact IDs that are in
>> * progress, unless the snapshot was taken during recovery in which case
>> * it's empty. For historic MVCC snapshots, the meaning is inverted, i.e.
>> * it contains *committed* transactions between xmin and xmax.
>> *
>> * note: all ids in xip[] satisfy xmin <= xip[i] < xmax
>> */
>> TransactionId *xip;
>> I can't understand the historic MVCC snapshots? can you give me 
>> a scenario
>> to describe this?
> 
>  From the same file:
> 
> 
> /*
>   * A tuple is visible iff it follows the rules of SNAPSHOT_MVCC, but
>   * supports being called in timetravel context (for decoding catalog
>   * contents in the context of logical decoding).
>           */
> SNAPSHOT_HISTORIC_MVCC,

Also:

typedef struct SnapshotData *Snapshot;

#define InvalidSnapshot         ((Snapshot) NULL)

/*
  * Struct representing all kind of possible snapshots.
  *
  * There are several different kinds of snapshots:
  * * Normal MVCC snapshots
  * * MVCC snapshots taken during recovery (in Hot-Standby mode)
  * * Historic MVCC snapshots used during logical decoding
  * * snapshots passed to HeapTupleSatisfiesDirty()
  * * snapshots passed to HeapTupleSatisfiesNonVacuumable()
  * * snapshots used for SatisfiesAny, Toast, Self where no members are
  *       accessed.
  *
  * TODO: It's probably a good idea to split this struct using a NodeTag
  * similar to how parser and executor nodes are handled, with one type for
  * each different kind of snapshot to avoid overloading the meaning of
  * individual fields.
  */

> 
>> ------------------------------------------------------------------------
>> jacktby@gmail.com
> 

-- 
Adrian Klaver
adrian.klaver@aklaver.com