반응형
- MySQL Query Plan2021-10-24 01:50:52오늘은 제가 프로젝트중 작성했던 쿼리들을 실행 계획을 통해 index를 타고 있는지 확인해 보겠습니다. Docker로 MySQL을 띄우고 procedure를 만들어서 1만건 씩 dummy 데이터를 적재하고 조회하겠습니다. (데이터베이스 툴로는 DBeaver를 사용하고 있습니다.) 먼저 코스와 연관된 정보를 함께 조인해서 출력하는 쿼리를 보겠습니다. type column을 보면 locatoin 테이블과 course 좋아요에 대한 쿼리는 인덱스를 타고 있지만 course에 경우 type column이 all로 index를 타지 못하고 있습니다. 풀 테이블 스캔으로 1만건을 다 스캔하고 있는데요 사실 이것은 쿼리도 문제지만 전체 데이터를 다 끌고 오는것도 문제라 생각됩니다. 예시로 1만건으로 들었지만 실제 p..
- JPA 반복문 쿼리 vs Batch Insert2021-10-10 20:52:25전에 프로젝트를 진행하며 for문을 돌며 query를 날려야했던 상황이 있었는데 그때 공부했던 내용을 정리해 보겠습니다. 우선 문제 상황은 하나의 course에는 여러개의 location과 hash-tag를 가지고 있고 사용자가 등록하고자 하는 course를 요청에서 받아 location과 hash-tag를 등록하는 상황이었습니다. 이때 저는 반복문을 돌며 쿼리를 수행하는게 매번 반복문을 돌때마다 db와 네트워크를 n번 만큼 타야하기 때문에 성능적으로 저하가 있을 것 같다고 생각을 하게 되었고 결과적으로 JPA의 save로 단건 저장하던 쿼리를 saveAll로 여러건 묶어서 보내는 것이 성능이 더 좋게 나온다는 테스트 결과를 가지고 코드를 작성했습니다. 이 과정에서 save를 사용하든 saveAll을 사..
반응형