전자정부배치 재문의 드립니다.
- 작성자 :
- y*****2
- 작성일 :
- 2025-02-18 08:49:46
- 조회수 :
- 178
- 구분 :
- 개발환경 / 4.2
- 진행상태 :
- 완료
Q
안녕하세요!
전자정부배치기준으로 대량의 데이터를 처리 시
마이바티스의 <selectKey 또는 select max(a)+1 하게 되면
계속 같은 값을 리턴 시키는데 혹시 가이드 및 해결 방안을 구할 수 있을까요? 질문을 드렸는데요
마이바티스에서 아래와 같이 다건의 데이터를 insert 에서 실행 시키면 같은 값이 리턴되어 오류가 발생합니다.
<selectKey keyProperty="wkHisSeqKey" resultType="String" order="BEFORE">
select coalesce(max(nullif(wk_his_seq_key::numeric, 0)), 0) + 1
from kfms.tb_cosm0016
where cp_cd = #{empCpCd} /* 회사코드 */
</selectKey>
하나의 트랜잭션으로 처리가 되지 않아서 그런 것 같습니다.
chunk(1) 옵션을 주어 한건마다 커밋을 하게되면 해결은 되나 좋은 방법이 아닌거 같아서요.
좋은 방법이 있으면 가이드 및 샘플 좀 부탁드립니다.
전자정부배치기준으로 대량의 데이터를 처리 시
마이바티스의 <selectKey 또는 select max(a)+1 하게 되면
계속 같은 값을 리턴 시키는데 혹시 가이드 및 해결 방안을 구할 수 있을까요? 질문을 드렸는데요
마이바티스에서 아래와 같이 다건의 데이터를 insert 에서 실행 시키면 같은 값이 리턴되어 오류가 발생합니다.
<selectKey keyProperty="wkHisSeqKey" resultType="String" order="BEFORE">
select coalesce(max(nullif(wk_his_seq_key::numeric, 0)), 0) + 1
from kfms.tb_cosm0016
where cp_cd = #{empCpCd} /* 회사코드 */
</selectKey>
하나의 트랜잭션으로 처리가 되지 않아서 그런 것 같습니다.
chunk(1) 옵션을 주어 한건마다 커밋을 하게되면 해결은 되나 좋은 방법이 아닌거 같아서요.
좋은 방법이 있으면 가이드 및 샘플 좀 부탁드립니다.
환경정보
-
- OS 정보 :
- 표준프레임워크 버전 :
- JDK(JRE) 정보 :
- WAS 정보 :
- DB 정보 :
- 기타 환경 정보 :
A
안녕하세요.
표준프레임워크 센터입니다.
배치처리시에 Chunk 기반으로 데이터 처리를 지원하는데
chunk(1) 이면 Commit Interval = 1을 의미 하기 때문에
이경우는 문제가 발생하지 않은 듯 합니다.
물론 이경우 대용량 데이타 처리시 성능 문제가 발생하며
시스템의 환경에 따라 적절한 처리 단위를 명시하실 필요는 있습니다.
이 Chunk 기반이 트랜잭션 처리 단위가 되기 때문에
기재하신 select max(a)+1는 문제가 발생할수 밖에 없습니다.
관련하여 구현 성격에 따라
RDB에서 주로 사용하는 Sequence 또는 Auto Increment를 활용하셔야 할듯 합니다.
전체적인 배치 구성을 알수 없으나
이를 통해 같은 트랜잭션 내에서 처리가 가능 할듯 합니다.
관련한 배치 가이드 문서는 다음과 같습니다.
https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:brte:batch_core:step_v3.7#step_configuration
감사합니다.
표준프레임워크 센터입니다.
배치처리시에 Chunk 기반으로 데이터 처리를 지원하는데
chunk(1) 이면 Commit Interval = 1을 의미 하기 때문에
이경우는 문제가 발생하지 않은 듯 합니다.
물론 이경우 대용량 데이타 처리시 성능 문제가 발생하며
시스템의 환경에 따라 적절한 처리 단위를 명시하실 필요는 있습니다.
이 Chunk 기반이 트랜잭션 처리 단위가 되기 때문에
기재하신 select max(a)+1는 문제가 발생할수 밖에 없습니다.
관련하여 구현 성격에 따라
RDB에서 주로 사용하는 Sequence 또는 Auto Increment를 활용하셔야 할듯 합니다.
전체적인 배치 구성을 알수 없으나
이를 통해 같은 트랜잭션 내에서 처리가 가능 할듯 합니다.
관련한 배치 가이드 문서는 다음과 같습니다.
https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:brte:batch_core:step_v3.7#step_configuration
감사합니다.