database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 9647 게시물 읽기
No. 9647
함수 생성 시 VOLATILE/STABLE/IMMUTABLE 가 어떤 의미를 갖나요?
작성자
지현명(gwise)
작성일
2016-03-09 07:36
조회수
8,111

공식 메뉴얼 일본어 버전을 구글에서 번역하여 보고 있는데 

http://www.postgresql.jp/document/9.5/html/xfunc-volatility.html

 VOLATILE/STABLE/IMMUTABLE 함수 생성시 끝에 붙는 3가지가 구체적으로 어떻게 다른가요?

영문 메뉴얼에는 Side-Effect 있는건 무조건 VOLATILE를 사용하라고 하는데

3개중에 어떤거를 사용하느랴에 따라 함수(프로시저)의 성능이 좌우 될까요?

이 글에 대한 댓글이 총 3건 있습니다.

 저도 영어를 잘하는 편은 아니라 아는 부분만 설명드리겠습니다.

제가 알고 있는 가장 큰 차이점은 

트랜잭션 내에서 VOLATILE(default값)은 지속적으로 값이 변합니다.

STABLE과 IMMUTABLE은 그렇지 않으며 

지속적으로 값을 변경해야하는 logic이라면 VOLATILE 함수로 생성을 하고

아무래도 트랜잭션 내에서 지속적으로 값이 변한다면 

성능이 다른 형태보다는 부하가 발생합니다.

이러한 부분을  고려하고 사용하시고 

도움되시면 좋겠고 다른 분들의 추가설명이 있으면 더 좋을듯하네여

 

김주왕(kimjuking)님이 2016-03-09 10:14에 작성한 댓글입니다.
이 댓글은 2016-03-09 10:14에 마지막으로 수정되었습니다.

http://www.postgresql.kr/docs/current/xfunc-volatility.html

 

급하게 번역했습니다.

오탈자가 있지만, 그래도 일본어 문서 번역해서 읽는 것 보다는 읽기 편할 것이다 믿고.

 

업무 중 교육할 때 늘 하는 말을 인용할게요.

이런 여러 종류의 휘발성에 대한 이야기가 있는데,

간단하게

내가 만든 함수 내용이 데이터베이스를 조작하는 함수라면,  늘 함수 만들던 방식 대로 만들고,

함수 기반 인덱스를 만들기 위해서 어떤 함수가 필요하다면,

그 함수는 immutable 이어야 한다.

이거였습니다.

 

자세한 이야기는 윗 문서를 참고하세요.

김상기(ioseph)님이 2016-03-09 13:44에 작성한 댓글입니다.

답변 감사합니다. 공식문서 번역까지 해주시고 .ㅎㅎ

함수인덱스 사용하지 않는한 기본으로 사용해야 겠네요

지현명(gwise)님이 2016-03-09 16:14에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
9651Postgresql 저작권 문의 [1]
PJC
2016-03-21
8006
9649PGadmin III 에서 오래된 테이블 정리및 삭제에 대해서 질문드립니다 [3]
김윤겸
2016-03-18
7892
9648remote DB접속 질문드립니다. [5]
박정희
2016-03-11
8042
9647함수 생성 시 VOLATILE/STABLE/IMMUTABLE 가 어떤 의미를 갖나요? [3]
지현명
2016-03-09
8111
9646psqlodbc 를 aix 6.1에서 빌드하다가 다음 에러를 만났습니다. [1]
야근야근열매
2016-03-07
8363
9645drop database xxx; 관련 또 다른 질문입니다. [5]
박정희
2016-03-07
8712
9644drop database xxx; 관련해서 질문드립니다. [3]
박정희
2016-03-07
7281
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.050초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다