본문 바로가기

개인생각/회고

코드숨 10주차 회고

한 것(Fact)

유저 프로필 관련 기능 구현
Github Action으로 CI 설정
RSS를 통한 피드 기능 구현

느낀 것(Feelings)

JPA 정확히 알고 사용하자

이번 주 진행하고 있는 RSS를 통한 피드 기능을 개발하던 중 로그의 레벨을 디버깅 레벨로 놓고 보니 피드를 저장할 때마다 insert query가 발생하는 것을 발견하였다. rss를 통해 등록되는 피드는 최신의 10개만 등록되기 때문에 큰 문제가 없을 수도 있지만 이를 하나씩 날리는 것 보다는 bulk로 묶어서 생성하는 것이 좋을 듯하여 saveAll을 사용하였고 hibernate의 batch_size를 1000으로 변경하였지만, 여전히 하나씩 insert query가 발생하는 것이었다.
원인을 찾아보니 ID를 자동 생성에 @GeneratedValue(strategy = GenerationType.IDENTITY)을 사용하고 있었고 AUTO나 IDENTITY의 경우 saveAll을 하여도 개별적으로 수행하게 되어 있었다. 참고문서 - Hibernate ORM 5.4 doc

배치 사이즈를 줘서 배치가 실행되는 것을 확인할 수 있었는데 약간의 성능향상은 있었으나 insert query가 그대로 발생하여 정확히 비교가 된 것인지 애매하여 사용하지 않았고 SEQUENCE 방식으로 구현하면 가능할 것 같으나 일단은 10회씩 고정적으로 발생하기 때문에 그냥 진행하기로 했다.

자기 선언(Affirmation)

테스트를 먼저 작성하고 기능을 구현하는 건 어려운 것 같다.
프로젝트를 진행하면서 문제점이 발견될 때마다 기록을 해두었는데 기능 구현이 모두 완료되면 이것들을 하나씩 개선하도록 하자.

'개인생각 > 회고' 카테고리의 다른 글

코드숨 마지막 회고  (0) 2021.04.21
코드숨 11주차 회고  (0) 2021.04.12
코드숨 9주차 회고  (0) 2021.03.29
코드숨 8주차 주간회고  (0) 2021.03.21
코드숨 7주차 주간회고  (0) 2021.03.14