본문 바로가기

batch-performance6

[Querydsl 2편] querydsl 성능 관련 정리 source 는 Github 에 있습니다. 목차는 Querydsl 목차 에 있습니다. [Querydsl 2편] querydsl 성능 관련 정리 Querydsl Tip implement, extends implement, extends 를 사용해서 querydsl 사용하지 않는 것이 좋습니다. JpaQueryFactory 만 빈으로 선언해주면 implement, extends 를 사용하지 않아도 됩니다. 동적 쿼리 BooleanExpression 아래처럼 명시적으로 만드는게 좋습니다. return queryFactory .selectFrom(xxx) .where(eqAge(age), eqTel(tel)) .fetch(); private BooleanExpression eqAge(String age) { x.. 2021. 12. 14.
QuerydslPagingItemReader 병렬 처리 정리 source 는 Github 에 있습니다. QuerydslPagingItemReader 병렬 처리 가능한가? QuerydslPagingItemReader 는 querydsl 을 이용하여 db 데이터를 읽어올 때, 페이지 단위로 읽어오는 컴포넌트입니다. 상세 설명 QuerydslPagingItemReader 결론부터 얘기하면 QuerydslPagingItemReader 병렬 처리 시, thread-safe 합니다. 아래 소스를 보면 QuerydslPagingItemReader 는 AbstractPagingItemReader 상속받고 있습니다. spring-bagch 내부 엔진에서 AbstractPagingItemReader 의 doRead() 를 호출하고, doRead() 내에서 QuerydslPaging.. 2021. 9. 29.
spring batch partitioner 정리 source 는 Github 에 있습니다. spring batch partitioner 정리 partitioner 개념 partitioner 는 하나의 jvm 내에서 멀티 스레드로 처리하는 방법입니다. partitioner 에서 데이터를 나누고 각 스텝에 나눈 데이터를 분배하여, 스텝에서는 분배받은 데이터를 가지고 프로그램을 수행합니다. 스레드 측면에서 보면 partitioner 라는 스레드가 데이터를 나눠서 각 스텝에 나눠주는데, 이 스텝들은 별도의 스레드에서 동작하게 됩니다. 즉, ItemReader, ItemWriter 가 thread-safe 하지 않아도 됩니다. Multi thread step 의 경우 ItemReader, ItemWriter 는 thread-safe 해야 합니다. Multi t.. 2021. 8. 18.
spring batch jpa 환경에서 ID 생성전략에 따른 bulk insert 하는법 source 는 Github 에 있습니다. spring batch jpa 환경에서 ID 생성전략에 따른 bulk insert 하는법 spring batch jpa 환경에서 bulk insert 하는법을 정리했습니다. jpa ID 생성전략에 따라 bulk insert 하는법을 정리해봤습니다. 애플리케이션에서 ID 를 채번하는 방법 애플리케이션에서 ID 를 채번해서 repository.save(xxx) 를 호출하면 merge 방식으로 동작합니다. merge 의 상세 동작은 1차 캐시에서 엔티티를 찾게되고, 데이터가 없으면 DB 를 조회하게 됩니다. 그런 후 데이터를 반환할 때 복사본을 만들게 되는데 약간의 리소스를 소모하게 됩니다. 복사본을 만드는 이유는 동시성 때문입니다. 만약 하나의 Entity 에 여러.. 2021. 6. 24.