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