본문 바로가기

delfood2

[이슈 #9] Mybatis <collection> 태그 N+1 문제 없이 사용하기 개요 DelFood 주문 기능에 있는 '가격 계산' 로직에서 N+1 쿼리 문제가 발생하는 것을 확인하였습니다. 주문 전 가격을 계산하는 기능이었는데 for문을 돌며 select query를 날리고, 또 mybatis의 collection 태그를 잘못 사용하여 꽤 느린 로직이었습니다. 변경 전 요청과 결과 값 [ { "menuId": "1", "count": "1", "options": [ { "optionId": "1" }, { "optionId": "9" } ] }, { "menuId": "4", "count": "2", "options": [ { "optionId": "4" } ] } ] { "menus": [ { "id": 1, "name": "바사칸치킨", "price": 3000, "option.. 2019. 12. 18.
[이슈 #7] 서버 부하를 줄이기 위한 캐싱 적용 부하 증가 고려 저번 이슈에서 주소 데이터 조회 속도를 인덱스를 적용하여 개선하였습니다. 하지만 주소 조회를 계속해서 진행할수록 DB성능이 점점 떨어지는 것이 느껴졌고 이를 개선하기 위하여 주소 캐시를 적용하기로 하였습니다. 인덱스 적용 포스팅 https://deveric.tistory.com/68 [이슈 #6] 주소 데이터의 빠른 조회를 위해 인덱스 설정하기 얼마 전 주소데이터를 DB에서 관리하도록 변경하였는데, 데이터가 100,000,00건정도 되어서 검색이 정말 느렸습니다. 인덱스를 걸지 않은 상태로 조회를 하면 검색에만 10초가 넘게 걸리는 무시무시한 상황이었습.. deveric.tistory.com 캐싱 전략별 특징 Local Cache와 Global Cache중 어떤 전략을 사용할지 생각해보았.. 2019. 11. 21.