Eager loading vs Lazy loading
Lazy Loading์ ์ฐ๊ด๋ ๋ฐ์ดํฐ๋ค์ ์ค์ ๋ก ์ ๊ทผํ๊ธฐ ์ ์๋ ๋ก๋ฉํ์ง ์๋๋ค. Lazy loading์ ์์๋ฅผ ๋ณด์.
๋ฐ์ดํฐ์ ์ ๊ทผํ๊ธฐ ์ํด users๋ฅผ ํธ์ถํ๋ 1๋ฒ์ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฆฌ๊ณ , ์ดํ do ๋ฃจํ์์ user.profile.age
๊ตฌ๋ฌธ์ ์ํด profile์ ์ ๊ทผํ ๋๋ง๋ค N๋ฒ์ ์ฟผ๋ฆฌ๋ฅผ ์ถ๊ฐ๋ก ๋ ๋ฆฌ๊ฒ๋๋ค.
์ด๋ฐ ๋ฌธ์ ๋ฅผ N+1 Problem๋ผ๊ณ ํ๋ค. ๊ทผ๋ณธ์ ์ผ๋ก ORM์์ Lazy Loading์ ์ฌ์ฉํ ๋ ๋ฐ์๋๋ ๋ฌธ์ ์ธ ๊ฒ์ด๋ค.
Rails๋ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด includes
๋ผ๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํด์ค๋ค.
With includes, Active Record ensures that all of the specified associations are loaded using the minimum possible number of queries
์ ์๋์ฒ๋ผ ์ฝ๋๋ฅผ ์์ ํด๋ณด์.
์ ์ฝ๋์์๋ ๋ ๋ฒ์ ์ฟผ๋ฆฌ๊ฐ ๋ฐ์ํ๋ค. users ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ๋ ํ๋ฒ, users์ ๋ํ profile์ ์ฐพ๋๋ฐ ํ๋ฒ. ์ด๋ฌํ ๋ก๋ฉ ๋ฐฉ์์ eager loading์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๊ทธ๋ผ joins
๊ฐ includes
๋ณด๋ค ํจ์จ์ ์ธ ๊ฒฝ์ฐ๋ ๋ฌด์์ผ๊น? ์๋์ฒ๋ผ ํํฐ์ ์ญํ ์ ํ ๊ฒฝ์ฐ ํจ์จ์ ์ด๋ค.
do ๋ฃจํ์์ profile์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , profile์ ๋จ์ง filter์ ์ญํ ์ ํ๋ ๊ฒ์ด๋ค.
Last updated