TIL(Today I Learned)

2월 13일(수)

공부한 내용을 제 언어로 빠르게 정리한 내용이라서 잘못된 내용이 있을 수 있습니다.

서버 스터디

  • n+1 문제
    • 상품 테이블과 상품 옵션 테이블이 있다고 가정하자.
    • 그리고 상품 목록 페이지에서 상품을 나열하고 상품에 포함되는 상품 옵션을 동시에 보여준다고 하자.
    • 상품 테이블에서 상품 목록을 가져오는 쿼리를 1개 실행해야하고,
    • 각각의 상품 ID를 통해 해당하는 상품 옵션을 가져오는 쿼리를 N개 실행해야한다. (상품이 n개 이므로)
    • 이러한 문제를 n+1 문제라고 한다.
    • 즉 불필요하게 쿼리를 많이 실행해서 성능 문제를 발생하는 것을 n+1 문제라고 한다.
    • 쿼리를 최적화 하거나(하나의 쿼리로 필요한 정보를 가져오도록), JOIN 을 활용하여 이를 해결할 수 있다.
  • Lazy Loading vs Eager Loading
    • Lazy Loading은 필요할때 로드하는 것
    • Eager Loading은 미리 로드하는 것