"Lazy loading"과 "eager loading"은 데이터베이스에서 데이터를 로드하고 관리하는 방법을 설명하는 용어입니다.
이 용어들은 주로 개체 관계 매핑(Object-Relational Mapping, ORM) 프레임워크나 데이터베이스 쿼리 작성 시 사용됩니다.
Lazy loading은 데이터를 필요한 시점에 로드하는 방식입니다. 즉, 데이터에 접근하려 할 때 데이터베이스에서 해당 데이터를 로드합니다.
예를 들어, ORM 프레임워크를 사용하여 데이터베이스 테이블 간의 관계를 매핑할 때, 연관된 객체나 데이터를 처음에는 로드하지 않고, 실제로 사용할 때까지 로드하지 않습니다.
이로 인해 초기 데이터베이스 쿼리가 작고 빠르게 실행되지만, 필요한 데이터를 가져오는 중에 추가적인 데이터베이스 쿼리가 발생할 수 있습니다. 이는 "N+1 쿼리 문제"로 알려져 있으며, 성능 문제를 일으킬 수 있습니다.
Eager loading은 관련된 데이터를 필요하기 전에 미리 로드하는 방식입니다. 관련된 모든 데이터를 한 번의 쿼리로 로드하여 데이터베이스의 부하를 줄입니다.
예를 들어, 데이터베이스에서 특정 주문과 그 주문에 연관된 제품을 로드해야 할 때, eager loading을 사용하면 한 번의 쿼리로 주문과 연관된 모든 제품을 한꺼번에 가져올 수 있습니다.
Eager loading은 성능 향상을 가져오지만, 필요한 데이터를 미리 로드하기 때문에 모든 데이터를 사용하지 않을 경우 낭비가 발생할 수 있습니다.
일반적으로는 데이터를 어떻게 사용하느냐와 데이터베이스 스키마 및 쿼리의 구조에 따라 Lazy loading 또는 Eager loading을 선택합니다.
성능 최적화와 데이터 사용 패턴에 따라 두 가지 방식을 적절하게 조합하여 사용하는 것이 중요합니다.