DB cfg 파라메타에 보면 dft_degree 와
DBM cfg 파라메타의 intra_parallel / max_querydegree 있는데
세 개의 파라메터를 다 바꿔줘야 대용량 데이터를 insert할 때 parallel처리를 하게 되나요??
그리고 DBM cfg 파일의 파라메터를 변경한 후에는 DB2stop으로 instance를 내리고 다시 DB2start를 하는데
인스턴스를 내리지 않고 변경되도록 하는 방법이 혹시 있나요?
적용속성이 deferred 인지 immediately로 된 것인지 어떻게 알 수 있을까요?
그럼 제가 sqllib/function에 xx.so파일을 참조하는 external function을 만드는데 라이브러리 파일을 컴파일하고 so 파일이 변경되면 반영하기 위해 인스턴스를 항상 내렸다 올렸는데 이것도 다른 방법이 있나요?
1. 파라메터에 대한 적용 속성 부분을 확인하는데 두가지 방법이 있을수 있습니다.
가. db2 inforcenter ( 예: DB2 V9.1 기준http://publib.boulder.ibm.com/infocenter/db2luw/v9//index.jsp ) 에서 파라메터 검색시 "매개변수 유형" 과 "전파 클래스"를 참조하여 deferred와 immediately를 구별하는데... 실제는 구별은 이보다 약간 더 복잡하게 몇가지 유형이 더 있습니다. 아뭏튼 한글 번역기준으로 매개변수 유형값이 "구성 가능"이면 일단 offline으로 반영되는 즉, 인스턴스를 내렸다 올려야 되는것이고, 매개변수 유형값이 "구성가능한 온라인" 이라면 인스턴스를 내렸다 올리지 않아도 되는 즉, 온라인에서 반영가능한 값이지만 전파 클래스에 따라서 반영시기가 결정됩니다. 전파클래스에 대한 통상적인 부분은 바로 적용되거나 특정조건 예를 들어 접속세션이 모두 정리된 후라던지 기존 세션은 예전값을 새 세션은 변경값을 갖는 ... 그런 조건이 성립되야 합니다.
나. dbm cfg나 db cfg 를 get 할 때 show detail 옵션을 붙이면 current value와 deferred value 를 볼수 있는데 변경후 current value가 defferred value와 같다면 온라인으로 변경되는 파라메터로 볼수 있습니다.
2. external 로 function을 작성하셨다면 bind 할 package 와 실제 실행 파일로 구분할 수 있을텐데
db 레벨에서 보면 실행파일을 재확인 할 필요는 없을테고, 변경사항이 있다면 package 만 rebind
하면 db레벨에서는 변경사항이 반영될텐데 인스턴스를 내렸다 올릴 필요가 없을것 같은데요?
.so로 만들었다해도 단지 라이브러리 파일을 위해서는 인스턴스를 내렸다 올리는 작업이 불필요해 보입니다.
답글을 보고 bind에 대한 것을 찾아봤는데 잘 모르겠습니다, ㅠㅠ
만얀에 a.so파일이 sqllib/function에 있고,
create function xx
..
external name 'a!bb'
이런 함수가 있다면,
a.so파일을 어떻게 바인드 하는건지 구체적으로 알려주실수 있을까요?
function 모듈중에 Embedded된 SQL 부분이 있다면 그부분이 package 화 될수 있습니다.
function 모듈이 단순히 해당 Language로만으로 작성되었다면 bind 할 package도 없겠습니다.
그런데, SQL이 없이 작성하였다고 가정할 때 function에서 call하기위해 define한 .so 가
캐쉬되는것이 아닐텐데 소스 변경을 하셨다고 굳이 인스턴스 재시작이 필요하셨는지요??