공식 메뉴얼 일본어 버전을 구글에서 번역하여 보고 있는데
http://www.postgresql.jp/document/9.5/html/xfunc-volatility.html
VOLATILE/STABLE/IMMUTABLE 함수 생성시 끝에 붙는 3가지가 구체적으로 어떻게 다른가요?
영문 메뉴얼에는 Side-Effect 있는건 무조건 VOLATILE를 사용하라고 하는데
3개중에 어떤거를 사용하느랴에 따라 함수(프로시저)의 성능이 좌우 될까요?
저도 영어를 잘하는 편은 아니라 아는 부분만 설명드리겠습니다.
제가 알고 있는 가장 큰 차이점은
트랜잭션 내에서 VOLATILE(default값)은 지속적으로 값이 변합니다.
STABLE과 IMMUTABLE은 그렇지 않으며
지속적으로 값을 변경해야하는 logic이라면 VOLATILE 함수로 생성을 하고
아무래도 트랜잭션 내에서 지속적으로 값이 변한다면
성능이 다른 형태보다는 부하가 발생합니다.
이러한 부분을 고려하고 사용하시고
도움되시면 좋겠고 다른 분들의 추가설명이 있으면 더 좋을듯하네여
http://www.postgresql.kr/docs/current/xfunc-volatility.html
급하게 번역했습니다.
오탈자가 있지만, 그래도 일본어 문서 번역해서 읽는 것 보다는 읽기 편할 것이다 믿고.
업무 중 교육할 때 늘 하는 말을 인용할게요.
이런 여러 종류의 휘발성에 대한 이야기가 있는데,
간단하게
내가 만든 함수 내용이 데이터베이스를 조작하는 함수라면, 늘 함수 만들던 방식 대로 만들고,
함수 기반 인덱스를 만들기 위해서 어떤 함수가 필요하다면,
그 함수는 immutable 이어야 한다.
이거였습니다.
자세한 이야기는 윗 문서를 참고하세요.
답변 감사합니다. 공식문서 번역까지 해주시고 .ㅎㅎ
함수인덱스 사용하지 않는한 기본으로 사용해야 겠네요