본문 바로가기

분류 전체보기64

N+1 문제 다양한 해결법 서론 JPA를 학습하면 무조건 듣는 키워드는 N+1 이다. 보통 블로그에서 소개하는 방식은 fetch join을 통하여 문제를 해결한다고 이야기한다. 물론 틀린 방식은 아니다. 하지만 실제 프로젝트를 만들면서 N+1 문제를 많이 만나보면서 N+1을 처리하는 방식은 여러가지가 있다. 상황에 따라서 N+1 문제를 처리하는 방식을 적절하게 해결하는게 성능 저하의 문제에 대응할 수 있다고 생각했다. 글을 시작하기 이전에 간단하게 정리하면 1:1 연관관계 : Fetch join Collection 연관관계 : default_batch_fetch_size N개의 컬렉션을 fetch join을 하면 MultipleBagFetchException이 발생한다. 특정 컬럼을 조회할 경우에 join을 하고 Projectio.. 2023. 12. 15.
블로그 이사 https://velog.io/@geon_km geon_km (Mugeon Kim) - velog JPA Batch Insert를 통하여 성능 개선 (MySQL, JdbcTemplate) 기존에 프로젝트를 진행하면서 문제를 생성을 일일이 Insert 해야되는 문제점을 발견하여 대량으로 Insert의 문제점을 발견을 하였습니다. 이러한 velog.io 작년부터 글을 Tistory에서 작성을 했는데 마크다운이 너무 불편해서 Velog에서 글을 작성을 합니다. 2023. 7. 22.
[ 서버 사이드 프로젝트 챌린지 ] 23.04.15 - week8 & 회고록 1. 이번 주 스터디에서 학습한 내용 GitHub - Side-Challenge-Study-Time/StudyTime_BE: 스터디 타임 프로젝트(Back_End) 스터디 타임 프로젝트(Back_End). Contribute to Side-Challenge-Study-Time/StudyTime_BE development by creating an account on GitHub. github.com 이번 주 스터디에서는 프로젝트 마무리를 위한 점검 및 발표 시간을 가졌습니다. 이를 통해, 저희 스터디의 성과와 발전을 공유하고, 다른 스터디 팀원들에게도 저희가 마주한 문제와 해결방법, 그리고 스터디를 통해 얻은 경험을 공유할 수 있는 좋은 시간이었습니다. 스터디 타임 프로젝트(Back_End)은 짧은 시간.. 2023. 4. 23.
[ 웹개발 배포 챌린지 스터디 ] 23.04.22 - 회고록 1. 이번 주 스터디에서 학습한 내용 이번 주에는 CI/CD를 구현하는 데 있어서 새로운 방식을 시도해보았습니다. 하지만, 많은 어려움을 겪었습니다. 스크립트 작성 부분에서 많은 오류가 발생하였고, 이를 해결하는 데 많은 시간과 노력이 필요했습니다. 우선, 기존에 학습한 Jenkins 스크립트를 활용하여 CI/CD 파이프 라인을 구현하였는데 Workspace에 Docker를 이용하여 실행하고, 변경된 사항을 Git webhook을 통해 Jenkins workspace에 적용시키는 방식을 사용하였습니다. 그러나, 이번에 시도한 방식은 기존에 사용하던 방식과는 다르기 때문에, 처음부터 모든 것을 새롭게 학습해야 했습니다. 이로 인해 많은 오류가 발생하였고, 이를 해결하는 데에도 시간이 많이 걸려 많은 고민을.. 2023. 4. 23.