Monotone Zeit

Hallo alle,

habe folgende Frage: Kann man Postgres so konfigurieren, dass Funktionen wie now() eine monotone Zeit liefern?

In modernen OS Releases wird dies ja unterstützt. In der Linux man page zu clock_gettime() steht z.B.:
CLOCK_MONOTONIC
Clock that cannot be set and represents monotonic time since some unspecified starting point.

Für eine auf der Zeit basierende verlässliche, inkrementelle Verarbeitung ist eine monotone Zeitbasis streng genommen notwendig und dafür möchte ich es nutzen. In der Postgresdokumentation habe ich aber nichts zum Stichwort monoton (monotonic) gefunden.


Mit freundlichen Grüßen
Andreas

P.S.: Bin neu in diesem Forum und bitte um Nachsicht, falls meine Frage besser in eine andere Kategorie passen sollte.

Ich verstehe die Frage, nicht ganz. Das ist doch genau das, was now() macht?

Alternativ kannst Du ja auch clock_timestamp() verwenden.

Die unterschiedliche Bedeutung der verschiedenen Funktionen (und wann sie “weitergeschaltet” werden), ist im Handbuch eigentlich gut erklärt:

https://www.postgresql.org/docs/current/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT

ja, evtl. sucht er clock_timestamp(), welches innerhalb einer Transaktio (!) im Gegensatz zu now() den aktuellen timestamp liefert, now() liefert den Startzeitpunkt der Transaktion.

Wenn ich mich drauf verlassen muss, würde ich die Monotonie durch eine (zusätzliche) Sequenz erzwingen. Hat dann mit einem synchronen Zeitwert nichts mehr zu tun, aber ist monoton, sogar bei Schaltzeiten oder so. Das wäre dann eine zusätzliche Spalte, die als sagen wir Subfraktion genutzt werden kann.