기록하는 개발자

Mybatis PostgreSQL 다중 UPDATE 본문

웹 개발/Spring

Mybatis PostgreSQL 다중 UPDATE

gitseok 2022. 10. 14. 15:16

PostgreSQL의 jsonb_array_elements을 활용해서 다중업데이트 쿼리를 만들었는데 

 

PostgreSQL 다중 Update - batch update

300만건이 넘는 데이터를 주기적으로 update 해야하는데 서버와 DB의 과도한 부하 발생을 대비하기 위해 사용 unnest 는 PostgreSQL의 내장 함수로 입력된 Array를 행집합으로 반환해준다. update test_table se

gitseok.tistory.com

Mybatis의 foreach를 사용해서 적용해보았다.

 

 

<update id="updateData" parameterType="java.util.List" >
	update test_table
	set data = (ex_data->'data')::int
	from jsonb_array_elements(
		'[
		 <foreach collection="list" item="item" separator=", ">
			 { "id": ${item.id}, "data": ${item.data}}
		</foreach>
		 ]'
		 )as ex_data
	where id = (ex_data->'id')::int
    </update>

 

- collection : 전달받은 인자 값 (파라미터 명을 적는게 아닌 List, Array 타입을 적는 것)
   ㄴ 받아온 parameterType과 일치해야함
- item : 전달받은 인자에 지정할 변수명
- separator : 반복 되는 사이에 들어가는 문자열
- open : 해당 구문이 시작될 때 들어가는 문자열
- close : 해당 구문이 끝날 때 들어가는 문자열
- index : 반복되는 구문 번호(0부터 시작)
Comments