2015년 11월 4일 수요일

데이터베이스(Postgresql)의 3가지 함수 형태 요약

Postgresql에서 정의할 수 있는 3가지 함수 형태이다.


  • IMMUTABLE (불변의)
    • 같은 입력값에 대해서는 항상 같은 결과값이 출력된다.
    • anyway,anytime 같은 값을 보장하며 산술 연산들이 여기에 해당된다.
    • 옵티마이저가 미리 계산해도 무방하다.
  • STABLE (정적인)
    • 같은 트랜잭션 내에서는 같은 입력값에 대해서 같은 결과를 출력한다.
    • current_timestamp와 같이 같은 트랜잭션 내에서 결과가 동일한 경우를 포함한다.
    • 옵티마이저 입장에서는 여러번의 콜을 한번으로 줄일 수 있다.
  • VOLATILE (휘발성의)
    • 매번 함수를 호출한다.
    • random(), curval() 함수처럼 미리 확신할 수 없다.
    • 대량의 row에 매번 적용되지 않도록 고민해야 한다.


트랜잭션이라는 논리적인 구성을 가지는 DB에서는 성능이나 편의성을 위해 최소한으로 필요한 요소들로 보인다.

0 개의 댓글:

댓글 쓰기