Обсуждение: Serializable description seems misleading?

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

Serializable description seems misleading?

От
PG Doc comments form
Дата:
The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/12/transaction-iso.html
Description:

Let's say I have two transactions running in Serializable isolation:
T1: Reads a row
T2: Reads the same row
T1: Updates the row
T1: Commits
T2: Commits

You will not get an error on the second commit. These appear to fit the
description of concurrent transactions, and running one before the other
would give different results in the reading of the row by T2, depending on
which transaction was executed first. So how does this square with the docs
that state "it monitors for conditions which could make execution of a
concurrent set of serializable transactions behave in a manner inconsistent
with all possible serial (one at a time) executions".

This seems quite misleading, but I understand there may just be an aspect of
this that I am not understanding.

Re: Serializable description seems misleading?

От
Thomas Munro
Дата:
On Wed, Dec 11, 2019 at 11:27 AM PG Doc comments form
<noreply@postgresql.org> wrote:
> Page: https://www.postgresql.org/docs/12/transaction-iso.html
> Description:
>
> Let's say I have two transactions running in Serializable isolation:
> T1: Reads a row
> T2: Reads the same row
> T1: Updates the row
> T1: Commits
> T2: Commits
>
> You will not get an error on the second commit. These appear to fit the
> description of concurrent transactions, and running one before the other
> would give different results in the reading of the row by T2, depending on
> which transaction was executed first. So how does this square with the docs
> that state "it monitors for conditions which could make execution of a
> concurrent set of serializable transactions behave in a manner inconsistent
> with all possible serial (one at a time) executions".

It only has to be consistent with *one* serial ordering of the
transactions to be allowed, not all serial orderings.  In this case,
the observed values and effects are consistent with T2 running before
T1.

> This seems quite misleading, but I understand there may just be an aspect of
> this that I am not understanding.

Do you think that wording could be improved?