Volatilitás (programozás)
A volatilitás fogalma a programozásban arra utal, hogy egy érték (pl. változó, függvényérték, objektumtulajdonság) mennyire változó, jelesül hogy több egymást követő hozzáférés során garantálható-e az állandósága. Egy volatilis, azaz változékony érték több okból módosulhat két hozzáférés között. Például a függvény a háttértárból vagy az adatbázisból vett adatokkal dolgozik, amelyek megváltozhatnak közben, függ az órajeltől, vagy egy objektum valamilyen tulajdonságát a többszálas programozás során egy másik szál módosíthatja. Ezt az információt az optimalizáló algoritmusok hasznosíthatják, illetve a többszálas program szervezésében is szerepet játszik. A fogalom pontos tartalma azonban programozási nyelvenként eltérő.

A PostgreSQL-ben 
A PostgreSQL adatbázis-kezelő rendszerben a volatilitás a függvények visszatérési értéke és mellékhatásai alapján megállapított kategória. Három szintje van:
Volatile (volatilis) A függvény értéke azonos paraméterekkel is hívásról hívásra változhat, módosítja az adatbázist vagy más mellékhatása van. Akkor is ezt a kategóriát kell használni, ha a függvény a random(), currval(), timeofday() vagy ehhez hasonló folyton változó értékű függvények valamelyikét használja. Ez az alapértelmezés szerinti szint, vagyis ha nem használunk külön szintjelölőt, a függvény volatilis lesz. A volatilis függvényeket az optimalizálás során nem lehet egyszerűsíteni, minden alkalommal le kell futniuk.

Stable (stabil) A függvény nem módosíthatja az adatbázist, és egy munkameneten belül azonos paraméterekkel garantáltan azonos eredményt ad. Ilyen lehet például egy indexelésen alapuló összehasonlítás. Az optimalizáló gondoskodik róla, hogy a függvény csak egyszer fusson le, és a továbbiakban a kapott értéket hasznosítja.

Immutable (megváltoztathatatlan) A függvény nem változtat az adatbázis állapotán, és azonos paraméterekkel garantáltan mindig ugyanazt az eredményt adja. Ez a legjobban optimalizálható szint. Például ha egy adatbázistábla egyik mezőjében 1 jelöli, hogy a felhasználó férfi, 2, hogy nő, és írunk egy nem() függvényt, amely szövegesen rendre a 'férfi', 'nő' értékeket adja vissza ezekre a számokra, és minden más bemenetre a NULL értéket, akkor ez egy megváltoztathatatlan függvény lesz, mert ahányszor a 2 argumentummal hívjuk meg, mindig a 'nő' értéket kapjuk, és nincs mellékhatása. Az optimalizáló így a függvényhívásokat konstans értékekkel helyettesítheti, ami nagyon sok rekordon való futtatás esetén jelentős gyorsulást okoz.

A gyorsabb működés érdekében ajánlott a lehetséges legmagasabb volatilitási szint megjelölése.

Források 
 A PostgreSQL-lel kapcsolatban: Function Volatility Categories

Kapcsolódó szócikkek 
 Java-szálak

Programozási alapfogalmak
A volatilitás fogalma a programozásban arra utal , hogy egy érték ( pl. változó , függvényérték , objektumtulajdonság ) mennyire változó , jelesül hogy több egymást követő hozzáférés során garantálható-e az állandósága . Egy volatilis , azaz változékony érték több okból módosulhat két hozzáférés között . Például a függvény a háttértárból vagy az adatbázisból vett adatokkal dolgozik , amelyek megváltozhatnak közben , függ az órajeltől , vagy egy objektum valamilyen tulajdonságát a többszálas programozás során egy másik szál módosíthatja . Ezt az információt az optimalizáló algoritmusok hasznosíthatják , illetve a többszálas program szervezésében is szerepet játszik . A fogalom pontos tartalma azonban programozási nyelvenként eltérő . A PostgreSQL-ben A PostgreSQL adatbázis-kezelő rendszerben a volatilitás a függvények visszatérési értéke és mellékhatásai alapján megállapított kategória . Három szintje van : Volatile ( volatilis ) A függvény értéke azonos paraméterekkel is hívásról hívásra változhat , módosítja az adatbázist vagy más mellékhatása van . Akkor is ezt a kategóriát kell használni , ha a függvény a random ( ) , currval ( ) , timeofday ( ) vagy ehhez hasonló folyton változó értékű függvények valamelyikét használja . Ez az alapértelmezés szerinti szint , vagyis ha nem használunk külön szintjelölőt , a függvény volatilis lesz . A volatilis függvényeket az optimalizálás során nem lehet egyszerűsíteni , minden alkalommal le kell futniuk . Stable ( stabil ) A függvény nem módosíthatja az adatbázist , és egy munkameneten belül azonos paraméterekkel garantáltan azonos eredményt ad . Ilyen lehet például egy indexelésen alapuló összehasonlítás . Az optimalizáló gondoskodik róla , hogy a függvény csak egyszer fusson le , és a továbbiakban a kapott értéket hasznosítja . Immutable ( megváltoztathatatlan ) A függvény nem változtat az adatbázis állapotán , és azonos paraméterekkel garantáltan mindig ugyanazt az eredményt adja . Ez a legjobban optimalizálható szint . Például ha egy adatbázistábla egyik mezőjébenjelöli , hogy a felhasználó férfi , hogy nő , és írunk egy nem ( ) függvényt , amely szövegesen rendre a 'férfi' , 'nő' értékeket adja vissza ezekre a számokra , és minden más bemenetre a NULL értéket , akkor ez egy megváltoztathatatlan függvény lesz , mert ahányszor aargumentummal hívjuk meg , mindig a 'nő' értéket kapjuk , és nincs mellékhatása . Az optimalizáló így a függvényhívásokat konstans értékekkel helyettesítheti , ami nagyon sok rekordon való futtatás esetén jelentős gyorsulást okoz . A gyorsabb működés érdekében ajánlott a lehetséges legmagasabb volatilitási szint megjelölése . Források A PostgreSQL-lel kapcsolatban : Function Volatility Categories Kapcsolódó szócikkek Java-szálak Programozási alapfogalmak