๐ก ๋ณธ ๋ฌธ์๋ '์บ์(Cache)'์ ๋ํด ์ ๋ฆฌํด๋์ ๊ธ์ ๋๋ค.
DB๋ฅผ ํ๋ํ๊ณ ๋ค์ํํ๊ณ ์ข ๋ ํจ์จ์ ์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ๊ฑธ ์๋ ์๊ฒ ์ง๋ง, ๊ฐ์ฅ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ์ธ RDBMS๋ก์ ์ฟผ๋ฆฌ ์ ์ก์ ์ค์ธ๋ค๋ฉด ๋์ฑ ๋น ๋ฅธ ์๋น์ค๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ํด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์บ์๋ฅผ ์์์ผ ํ๋ฉฐ, ์๊ฒจ๋ ๋ฐฐ๊ฒฝ ๋ฐ ์ฌ์ฉ๋๋ ๊ตฌ์กฐ๋ฅผ ์ ๋ฆฌํด๋์์ผ๋ ์ฐธ๊ณ ๋ถํ๋๋ฆฝ๋๋ค.
1. ์บ์(Cache)๋?
1.1 ์บ์๋...
- ์ปดํจํฐ ๊ณผํ์์ ์์ฃผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ ๊ฐ์ ๋ฏธ๋ฆฌ ๋ณต์ฌํด๋๋ ์์ ์ฅ์๋ฅผ ๋งํฉ๋๋ค.
- ๋ฐ์ดํฐ ๋ฒ ์ด์ค์์ ์บ์๋? ๋ฐ์ดํฐ๋ฅผ ์์ฃผ ์ฝ์ง๋ง ์ ๋ณ๊ฒฝ๋์ง ์๋ ๋ถ๋ถ์ ํน์ ๊ณต๊ฐ์ ๋ฏธ๋ฆฌ ์ ์ฅํด๋์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ง์ ์ฟผ๋ฆฌ๋ฅผ ์ ์กํ์ง ์๋๋ก ํ๋ ๊ตฌ์กฐ์ ๋๋ค.
1.2 ์บ์ ํ์ ๋ฐฐ๊ฒฝ
- ๋ฌด์ด์ ๋ฒ์น์ ์ํด CPU์ ์ฒ๋ฆฌ์๋๊ฐ ๊ธ๊ฒฉํ ์ฆ๊ฐํ์ง๋ง, ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์๋๋ ๋์ด๋์ง ๋ชปํ์ต๋๋ค.
- ๋ฐ๋ผ์ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค๋ ๋น ๋ฅด๊ณ CPU๋ณด๋ค๋ ๋๋ฆฐ cache๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ CPU์ฌ์ด์ ๋์ ํ์ฌ CPU์ ๋ฐ์ดํฐ ์ ๊ทผ ์๊ฐ์ ์ค์์ต๋๋ค.
1.3 ์บ์์ ์ฅ์
- Look aside Cache: ์บ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๋ณต์ฌํด ๋์ผ๋ฉด, ๊ณ์ฐ์ด๋ ์ ๊ทผ ์๊ฐ์ด ์์ด ๋ ๋น ๋ฅธ ์๋๋ก ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์์ต๋๋ค.
- Write back: ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ๋๋ง๋ค ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๋ ๊ฒ๋ณด๋ค, cache์ ์ ์ฅํ์ฌ ํ๋ฒ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๋ฐ์ดํธํ์ฌ ํจ์จ์ ์ ๋๋ค.
2. ์บ์์ ์ง์ญ์ฑ๊ณผ ๋์ ๋ฐฉ์
2.1 ํ๋ ํ ๋ฒ์น
- ์บ์์ ๊ณ ๋จ๊ฐ ๋๋ฌธ์, ์บ์์ ์ ์ฅ๋์ผ ํ๋ ์ ๋ณด๋ ์ ๋ณ๋ ์ ๋ณด์ฌ์ผ ํฉ๋๋ค.
- ํ๋ ํ ์ ๋ฒ์น์ฒ๋ผ ์์ฃผ, ๊ทธ๋ฆฌ๊ณ ๋ฐ๋ณตํด์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ณํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ฒ์ด '์ง์ญ์ฑ'์ด๋ฉฐ, 3๊ฐ์ง๋ก ๋ถ๋ฅํ ์ ์์ต๋๋ค.
2.2 ์บ์์ ์ ์ฅํ๋ ์ ๋ณด(์ง์ญ์ฑ)
๊ธฐ๋ณธ์ ์ผ๋ก ๊ณ ๋ คํด์ผ ํ ์์์๋ ๋ฐ์ดํฐ ์์ด ์ ์ผ๋ฉฐ, ์ฝ๊ธฐ๋ ๋ง์ง๋ง ์ฐ๊ธฐ๋ ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋งํ๊ณค ํฉ๋๋ค. ๋ํ ๋ค์๊ณผ ๊ฐ์ ์ง์ญ์ฑ์ ๊ณ ๋ คํ๋ค๋ฉด ๋์ฑ ์บ์๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
2.2.1 ์๊ฐ์ ์ง์ญ์ฑ
- ํน์ ๋ฐ์ดํฐ๊ฐ ๊ฐ๊น์ด ๋ฏธ๋์ ๋ ํ๋ฒ ๋ฐ์ดํฐ์ ์ ๊ทผํ ๊ฐ๋ฅ์ฑ์ด ๋์ ๊ฒฝ์ฐ
- ๋ฉ๋ชจ๋ฆฌ ์์ ๊ฐ์ ์ฃผ์์ ์ฌ๋ฌ ์ฐจ๋ก ์ฐ๊ธฐ๋ฅผ ์ํํ๋ ๊ฒฝ์ฐ
2.2.2 ๊ณต๊ฐ์ ์ง์ญ์ฑ
- ํน์ ๋ฐ์ดํฐ์ ๊ฐ๊น์ด ์ฃผ์๊ฐ ์์๋๋ก ์ ๊ทผ๋ ๊ฒฝ์ฐ
- CPU ์บ์, ๋์คํฌ ์บ์์ ๊ฒฝ์ฐ ํ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ์ ๊ทผ์, ๊ทธ ์ฃผ์๋ฟ ์๋๋ผ ํด๋น ๋ธ๋ก์ ์ ๋ถ ์บ์๋ก ๊ฐ์ ธ์ต๋๋ค.
- ์ด๋, ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ค๋ฆ์ฐจ์์ด๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๊ทผํ๋ฉด, ์บ์์ ์ด๋ฏธ ์ ์ฅ๋ ๊ฐ์ ๋ธ๋ก์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ฒ ๋์ด ํจ์ก์ฑ์ด ํฅ์๋ฉ๋๋ค.
2.2.3 ์์ฐจ ์ง์ญ์ฑ
- ํ๋ก๊ทธ๋จ ๋ด ๋ช ๋ น์ด๊ฐ ์์ฐจ์ ์ผ๋ก ๊ตฌ์ฑ๋๋ ๋ฑ์ ๋ฐ์ดํฐ๊ฐ ์์ฐจ์ ์ผ๋ก ์์ธ์ค ๋๋ ๊ฒฝํฅ์ ๋ณด์ผ ๊ฒฝ์ฐ
2.3 ์บ์์ ๋์ ๋ฐฉ์
์บ์ ์๋ฒ๊ฐ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ๊ตฌ์ฑ๋๋ ์์คํ ์ํฉ, ์ฉ๋, ์ค๊ณ์์ ์บ์ฑ ์ ๋ ฅ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์๊ณ ๋งค์ฐ ๋ค์ํ๊ฒ ๊ตฌ์ฑ๋ ์ ์์ผ๋ ๊ฐ์ฅ ๊ฐ๋จํ ๊ตฌ์กฐ์ ๋ํด ์ธ๊ธํ๊ฒ ์ต๋๋ค.
2.3.1 Cache ๊ตฌ์กฐ : Look aside Cache
- Web Server๋ ๋ฐ์ดํฐ๊ฐ Cache์ ์กด์ฌํ๋์ง ํ์ธ
- Cache์ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด Cache์์ ๊ฐ์ ธ์ด(cache hit)
- Cache์ ๋ฐ์ดํฐ๊ฐ ์๊ฑฐ๋ ์ค๋๋์๋ค๋ฉด DB์์ ์ฝ์ด์ด
- DB์์ ์ป์ด์จ ๋ฐ์ดํฐ๋ฅผ Cache์ ๋ค์ ์ ์ฅํจ
2.3.2 Cache ๊ตฌ์กฐ : Write back
- Web Server๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ Cache์ ์ ์ฅํจ
- Cache์ ํน์ ์๊ฐ๋์์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅํจ
- Cache์ ์๋ ๋ฐ์ดํฐ๋ฅผ DB์ ์ ์ฅํจ
- DB์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํจ
๋ง๋ฌด๋ฆฌ
๋ฌผ๋ก ์บ์ฑ์ด ๋ง๋ฅ์ ์๋๋๋ค. ๋น์ฉ๋ ๋น์ฉ์ด์ง๋ง, ์ ๋๋ก ์ฌ์ฉํ์ง ๋ชปํ๋ฉด, ์ต์ ์ผ๋ก ์ ๋ฐ์ดํธ๋์ง ์์ “ํ๋ฆฐ” ๋ฐ์ดํฐ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๊ณตํ ์๋ ์๊ณ ๋น์ฉ์ด ์ต์ ํ๋์ง ์์ ์๋ ์์ต๋๋ค. ๋ํ ์บ์์๋ ๋ฐ์ดํฐ๊ฐ ์์ด๋ฉด ์ธ์ ๊ฐ๋ RDBMS์ ๋ค๋ฅผ ๊ฒ ์์ด์ง๋ฏ๋ก ์ ์ ํ ๋ฐ์ดํฐ ์บ์ ๋ง๋ฃ ๊ธฐ๊ฐ์ ์ค์ ํด์ผ ํฉ๋๋ค. ๊ฐ์ฅ ์ค์ํ ๊ฑด ๊ธฐ์กด์ ์์คํ ์ ์ ํํ ์ด๋ค ๋ถ๋ถ์์ ์ฑ๋ฅ์ด ์ ํ๋๋์ง๋ฅผ ์ฃผ์์ ์ผ๋ก ๋๊ณ ๊ทธ์ ๋ํ ๋์ฒ๋ฅผ ๊ฐ์ฅ ํจ์จ์ ์ผ๋ก ํ๋ ๊ฒ์ด ์ข์ง ์์๊น ์ถ์ต๋๋ค.
์ฐธ๊ณ
- [CS] cache๋?: https://yanacoding.tistory.com/entry/CS-%EC%BA%90%EC%8B%9CCache%EB%9E%80?category=1025489
'Study: ComputerScience(CS) > CS: Basic' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CS] Logging Level์ ๋ํ์ฌ (feat. Logging Framework (spdlog)) (0) | 2022.08.03 |
---|---|
[Web] ์น ๋ธ๋ผ์ฐ์ ์ URL์ ์ ๋ ฅํ๋ฉด ์ด๋ค ์ผ์ด ์๊ธฐ๋์? (feat. Amazon) (0) | 2022.07.19 |
[CS] ๋งํน(Linking)์ ๋ํด ๋ณด๋ค ์ฌ๋์๋ ๋ด์ฉ (0) | 2022.07.05 |
[CS] ์ปดํ์ผ(Compile)์ ๋ํด ๋ณด๋ค ์ฌ๋์๋ ๋ด์ฉ (0) | 2022.07.05 |
[CS] ๋ํผ(Wrapper) ํด๋์ค๋? (0) | 2022.07.04 |