Immutable-, Stable- und Volatile-Funktionen - Unterschied?

Hallo Forumleser,

ich möchte nur mal erläutern, wie ich das mit den Immutable-, Stable- und Volatile-Funktionen verstanden habe und ihr sagt mir ob ich richtig liege.

Volatile sind alle Funktionen, die Datenbank-Elemente verändern, also gecachte Ergebnisse als ungültig erklären könnten.

Stable sind Funktionen, die die Datenbank nicht verändern, aber von Tabelleninhalte oder Umgebungsvariablen abhängig sind und somit gecachte Ergebnisse nutzen könnten. Wenn die Tabellen, die genutzt werden, verändert werden, werden die Cache-Elemente als ungültig erklärt und müssen erneut ausgeführt werden.

Immutable sind Funktionen, die keine Abhängigkeit von Tabellen oder Umgebungsvariablen haben. Ihr Ergebnis wird allein von den Eingabeparametern beeinflusst. Caches werden nie ungültig.

Kurz: Volatile bei DB-verändernden Funktionen benutzen. Stable bei nicht verändernden DB-Funktionen nutzen, die aber Select ausführen, die das Ergebnis beeinflussen könnten. Immutable benutzen, wenn die Funktion nur durch ihre Eingabeparameter beeinflusst wird.

Ist das richtig so?

Ja.

Andreas