본문 바로가기
IT/DB

Eager Loding, Lazy Loading

by Cyber_ 2024. 11. 7.

Eager Loding과 Lazy Loding은 ORM(Object-Relational Mapping)을 사용하는 데이터베이스 쿼리 전략에서 매우 중요한 두 가지 개념입니다. 이 두 전략은 데이터베이스에서 그 관련 객체를 언제 어떻게 불러올지 결정하는 방식을 정의 합니다.

Eager Loading

Eager Loding은 필요한 관련 데이터를 처음 쿼리할 때 사전에 미리 로드하는 방식입니다. 즉, 주 객체와 연관된 객체들을 초기 쿼리 실행 시 함께 불러오는 전략을 말합니다. 이 방식은 필요한 모든 데이터를 단 한번의 쿼리(또는 몇 번의 쿼리)로 완전히 로드하여, 애플리케이션이 그 데이터를 필요로 할 때 추가적인 데이터베이스 요청을 방지합니다.

 

장점: 연관된 데이터를 즉시 사용할 수 있으므로, 애플리케이션의 성능을 향상시킬 수 있습니다. 추가적인 쿼리가 없기 때문에 쿼리 수를 줄일 수 있습니다.

 

단점: 처음 쿼리할 때 불필요하게 많은 데이터틀 로드할 수 있으며, 이는 메모리 사용량을 증가시킬 수 있습니다.

 

예시: 사용자가 로그인 후 대시보드에 바로 그의 프로필 정보와 관련된 여러 데이터를 보여줘야 하는 경우 적합

Lazy Loading

Lazy Loading은 객체의 관련 데이터를 실제로 필요할 때까지 로드하지 않는 방식입니다. 즉, 주 객체만 먼저 로드하고, 연관된 객체에 접근할 때 로드하는 전략을 사용합니다. 이는 필요에 따라 관련 데이터를 개별적으로 쿼리하여 로드합니다.

 

장점: 초기 로드 시간을 줄일 수 있으며, 사용하지 않을 데이터는 로드하지 않아 전체적인 메모리 사용량을 절약할 수 있습니다.

 

단점: 나중에 각 관련 데이터에 접근할 때마다 추가적인 쿼리가 필요하기 때문에, 전체적으로 더 많은 쿼리가 발생할 수 있으며 이는 성능 저하로 이어질 수 있습니다.

 

예시: 웹 페이지에서 사용자가 특정 UI요소를 클릭하여 주가 정보를 요청하는 경우 적합. 예를 들어, "더 보기" 버튼을 클릭 했을 때만 추가 데이터를 로드하는 경우

'IT > DB' 카테고리의 다른 글

N+1 문제와 해결방법문제와 해결방법  (3) 2024.11.07
DB에 이미지를 저장할까? URL을 저장할까?  (0) 2024.04.16
Django와 PostgreSQL 어울리는 이유  (0) 2024.04.16
MySQL vs PostgreSQL  (0) 2024.04.16