Re: Option to ensure monotonic timestamps

Поиск
Список
Период
Сортировка
От Andres Freund
Тема Re: Option to ensure monotonic timestamps
Дата
Msg-id 20180220175151.ykjxejrevq4hwytx@alap3.anarazel.de
обсуждение исходный текст
Ответ на Option to ensure monotonic timestamps  (Brent Kerby <blkerby@gmail.com>)
Ответы Re: Option to ensure monotonic timestamps  (Patrick Krecker <pkrecker@gmail.com>)
Список pgsql-hackers
Hi,

Leaving Tom's concerns aside:

On 2018-02-19 13:42:31 -0700, Brent Kerby wrote:
> Hi, I'm new to Postgres hacking, and I'm interested in the possibility of a
> new feature to make it possible to ensure that Postgres-generated
> timestamps never decrease even if the system clock may step backwards. My
> use case is that I'm implementing a form of temporal tables based on
> transaction commit timestamps (as returned by pg_xact_commit_timestamp),
> and to ensure the integrity of the system I need to know that the ordering
> of the commit timestamps will always be consistent with the order in which
> the transactions actually committed.

The acquiration of the commit timestamp and the actual visibility of the
commit will not necessarily be sufficient for many things. A backend can
theoretically sleep for an hour between

static TransactionId
RecordTransactionCommit(void)
{
...
        SetCurrentTransactionStopTimestamp();
/* here */
        XactLogCommitRecord(xactStopTimestamp,
                            nchildren, children, nrels, rels,
                            nmsgs, invalMessages,
                            RelcacheInitFileInval, forceSyncCommit,
                            MyXactFlags,
                            InvalidTransactionId /* plain commit */ );
}

static void
CommitTransaction(void)
{
...
        /*
         * We need to mark our XIDs as committed in pg_xact.  This is where we
         * durably commit.
         */
        latestXid = RecordTransactionCommit();

/* here */

    /*
     * Let others know about no transaction in progress by me. Note that this
     * must be done _before_ releasing locks we hold and _after_
     * RecordTransactionCommit.
     */
    ProcArrayEndTransaction(MyProc, latestXid);

whether that affects your approach I do not know.


> Any thoughts?

Why are you looking to do something timestamp based in the first place?
It's a bit hard to give good advice without further information...

Greetings,

Andres Freund


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Andres Freund
Дата:
Сообщение: Re: ALTER TABLE ADD COLUMN fast default
Следующее
От: Tom Lane
Дата:
Сообщение: Re: ALTER TABLE ADD COLUMN fast default