Laravel

Performance Optimization

쿼리 최적화, N+1 문제, eager loading, lazy loading, 캐싱 전략, 데이터베이스 인덱싱, 프로파일링 도구

22 면접 질문·
Senior
1

Laravel에서 N+1 문제란 무엇입니까?

답변

N+1 문제는 Eloquent가 컬렉션을 가져오기 위해 하나의 쿼리를 실행한 다음 관계를 로드하기 위해 항목마다 추가 쿼리를 실행할 때 발생합니다. 이는 데이터베이스 접근을 배가시키고 대규모에서 성능을 크게 저하시킵니다. with()를 사용한 eager loading을 적용하면 N개의 쿼리 대신 하나의 추가 쿼리로 모든 관계를 로드합니다.

2

관계를 로드할 때 N+1 문제를 해결하려면 어떤 메서드를 사용해야 합니까?

답변

with() 메서드는 eager loading을 수행하여 관계를 하나의 추가 쿼리로 로드합니다. 관계에 접근할 때 모델마다 쿼리를 실행하는 대신 모든 관계를 미리 로드합니다. 이는 SQL 쿼리 수를 크게 줄이고 성능을 향상시킵니다.

3

eager loading과 lazy loading의 차이점은 무엇입니까?

답변

eager loading은 with()를 통해 메인 쿼리와 함께 관계를 즉시 로드하는 반면, lazy loading은 첫 접근 시 필요할 때 관계를 로드합니다. lazy loading은 루프 안에서 관계에 접근하면 N+1 문제를 일으킬 수 있습니다. 관계를 사용할 예정이라면 여러 쿼리를 피하기 위해 eager loading이 권장됩니다.

4

Laravel에서 Cache::remember()의 역할은 무엇입니까?

5

Cache::remember()와 Cache::rememberForever()의 차이점은 무엇입니까?

+19 면접 질문

다음 면접을 위해 Laravel을 마스터하세요

모든 질문, flashcards, 기술 테스트, 코드 리뷰 연습, 면접 시뮬레이터에 접근하세요.

무료로 시작하기