public inbox for [email protected]  
help / color / mirror / Atom feed
From: Adrian Klaver <[email protected]>
To: [email protected]
Subject: Re: Repeatable Read Isolation Level "transaction start time"
Date: Sat, 5 Oct 2024 09:59:00 -0700
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
References: <CAKAnmmLt2ezcf7-LgJkO_oeqK+Ei+XB6F3pHk2mnyadRq3corQ@mail.gmail.com>
	<[email protected]>
	<CANzqJaBjwtzLg_bZHkokUJbtA8gy6RpHjirfdBH9OJGfn5=tmw@mail.gmail.com>
	<[email protected]>
	<CAKAnmmLDpwgqu071t_Q7Fq349dYAgQim1x46U1DCAiiTcUmU2A@mail.gmail.com>
	<CANzqJaAAQFD_JvK=ChmfdGCRNP0G5gMtVBgF52bZiFjQxH8N_Q@mail.gmail.com>
	<CAKAnmmL05Lt89EOnMW111qdUOau+dYG7u8ff5o+ckKKohnNwGg@mail.gmail.com>
	<[email protected]>
	<[email protected]>
	<[email protected]>
	<[email protected]>

On 10/5/24 02:14, Peter J. Holzer wrote:
> On 2024-09-25 18:09:44 -0400, Tom Lane wrote:
>> "Peter J. Holzer" <[email protected]> writes:


>> Admittedly, that would normally not be a very long interval if BEGIN
>> did both things ... but on a busy system you could lose the CPU for
>> awhile in between.
> 
> Assuming that the system does have a global clock of sufficiently
> fine resolution which returns strictly monotonically increasing
> timestamps[1], I think the following is true:
> 
> Every snapshot divides the set of transactions into two non-overlapping
> subsets: Those which have committed early enough that their effects are
> visible in the snapshot and those which haven't. Let's call the first set
> the "earlier" transactions and the second the "later" transactions. Let's
> call the current transaction c and any transaction in the earlier set e
> (we ignore the later transactions for now).
> 
> Performing a commit and taking a snapshot take some time, but there
> should be a time t_C(e) in each commit and t_S(c) in the snapshot, such
> that t_C(e) < t_S(c) for each "earlier" transaction.

Assuming t_C is time of commit and t_S is time of snapshot, is the above 
not the crux of the matter? Namely when in the current transaction the 
snapshot is actually taken. That would determine what constitutes an 
earlier visible transaction relative to the current transaction. In 
other words I am not seeing how this changes anything?

> 
> Within each transaction each timestamp t which could be visible outside
> of the transaction must have been obtained before the commit,
> so t(e) < t_C(e) < t_S(c).
> 
> If we choose the transaction_timestamp to be >= t_S, then
> transaction_timestamp(e) < t_C(e) < t_S(c) <= transaction_timestamp(c)
> and therefore
> transaction_timestamp(e) < transaction_timestamp(c)
> 
> Such a guarantee might be useful for some applications and it's not
> (IMHO) an entirely unreasonable assumption, but it's not true for
> PostgreSQL. So a programmer should be aware of that.
> 
>          hp


-- 
Adrian Klaver
[email protected]







view thread (11+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected]
  Subject: Re: Repeatable Read Isolation Level "transaction start time"
  In-Reply-To: <[email protected]>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox