week 2 hyowon - GANGNAM-JAVA/JAVA-STUDY GitHub Wiki
- Thread ํด๋์ค๋ฅผ ์์๋ฐ๋๋ค ๋์ ๋ค๋ฅธ ํด๋์ค๋ฅผ ์์๋ฐ์ ์ ์๋ค.
- Runnable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ค ๋์ Thread ํด๋์ค์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์์ด Thread์ static ๋ฉ์๋์ธ currentThread()๋ฅผ ํตํด ์ฐธ์กฐํ๋ค.
hashCode() ๊ฐ์ด ๋ชจ๋ ๊ฐ๋ค๋ฉด ์ด๋ค ์ผ์ด ๋ฒ์ด์ง๋์? hashcode()์ equls()๋ ์ธ์ ์ฌ์ฉํ๊ณ ์ ์ฌ์ฉํ๋์ง?
hashCode()
- ๊ฐ์ฒด์ ์ฃผ์๊ฐ์ ๋ณํํ์ฌ ์์ฑํ ๊ฐ์ฒด์ ๊ณ ์ ํ ์ ์๊ฐ. ๋์ผ์ฑ(identity) ๋น๊ต
equals()
- ๋ ๊ฐ์ฒด์ ๋ด์ฉ๋ฌผ(equality)์ด ๊ฐ์์ง ๋น๊ต
์ค๋ช
- ๋ ๋ชจ๋ Object ๊ฐ์ฒด์ ์กด์ฌํ๋ ๋ฉ์๋์ด๋, ์ค๋ฒ๋ผ์ด๋ ๋์ด ํ์ ํด๋์ค์์๋ ๋ค๋ฅธ ์ญํ ์ ํ ์๋ ์๋ค.
- equals() ๊ฐ true๋ผ๋ฉด hashCode() ๊ฐ์ ๊ฐ์์ผ ํ๋ค.
๊ทธ๋ฌ๋, hashCode() ๊ฐ์ด ๊ฐ๋ค๊ณ ํด์ equals()๊ฐ true์ธ๊ฑด ์๋๋ค. - ์๋ก ๋ค๋ฅธ ๋ด์ฉ๋ฌผ์ ๊ฐ์ง ๊ฐ์ฒด๋ผ๋ (ํฌ๋ฐํ ํ๋ฅ ๋ก) hashCode ๊ฐ ๋์ผํ๊ฒ ๋์ฌ ์ ์๋ค.
- ๋ง์ฝ hashCode() ๊ฐ์ด ๋ชจ๋ ๊ฐ๋ค๋ฉด ์ถฉ๋(Collusion) ์ด ์ผ์ด๋๋ค.
- ๋ค๋ฅธ k ๊ฐ์ด ๋์ผํ h(k) ๊ฐ์ ๊ฐ์ ธ ๋์ผํ ์ฌ๋กฏ์ ์ ์ฅ๋๋ ๊ฒฝ์ฐ
- h(k1) == h(k12)
- HashCode() ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ํด ๋ชจ๋ ๊ฐ์ฒด๊ฐ ๊ฐ์ hash ๊ฐ์ ๊ฐ์ง๊ฒ ๋๋๋ก ๋ง๋ค์ด HashMap์ ์ ์ฅ์ ํ๋ค๋ฉด?
- HashMap ๋ด๋ถ์ ์ผ๋ก ํค๋ฅผ ๊ตฌ๋ถํ ๋ ๋ ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ค. hashCode๊ฐ ๊ฐ์์ง๋ฅผ ๋น๊ตํ ํ, equals()๋ก ๊ฐ์ ๋ด์ฉ๋ฌผ์ธ์ง๋ฅผ ๋น๊ตํ๊ฒ ๋๋๋ฐ,
๋ชจ๋ ๊ฐ์ฒด๊ฐ ๊ฐ์ hash๊ฐ์ ๊ฐ์ง๋ฉด ์ฒซ๋ฒ์งธ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ๋๋ฒ์งธ ๊น์ง ๊ฐ๊ฒ ๋๋๋ฐ equals ๋น๊ต๋ ์๊ฐ์ด ๋ ์ค๋ ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ์ํ์๋์ ๋ฌด๋ฆฌ๊ฐ ์๊ธธ ๊ฒ์ด๋ค.
- JVM ๋ฒ์ ์ด ์ฌ๋ผ๊ฐ์ ๋ฐ๋ผ GC๋ฐฉ์์ด ์ถ๊ฐ๋๊ณ ๋ฐ์ ๋จ
- Serial GC, Parallel GC,
Parallel GC
- Minor CD๋ฅผ ์ฒ๋ฆฌํ๋ ์ค๋ ๋๋ฅผ ์ฌ๋ฌ๊ฐ๋ก ๋๋ ค ์ข ๋ ๋น ๋ฅธ ๋์์ด ๊ฐ๋ฅ
- Parallel GC ์ ์ฉ์ ์ํ JVM ์ต์ : -XX:+UseParallelGC, -XX:ParallelGCThreads (Minor GC ์ค๋ ๋ ๊ฐ์)
G1 GC
- ํฐ heap ๋ฉ๋ชจ๋ฆฌ์์ ์งง์ GC ์๊ฐ์ ๋ณด์ฅํ๋ ๋ชฉ์
- G1 GC ์ ์ฉ์ ์ํ JVM ์ต์ : -XX:+UseG1GC
Spring์ AOP์ ํน์ง๊ณผ ์ด๋๋ฐ์ด์ค ์ข ๋ฅ์ ์ฌ์ฉ๋ proxy ํจํด์ ๋ํด ์ค๋ช ํด๋ณด์ธ์.
ํน์ง
- ์ค๋ณต ์ฝ๋๋ฅผ ์ค์ฌ ๊ฐ๋ฐ์๊ฐ ํต์ฌ ๋ก์ง์ ์ ๊ฒฝ์ธ ์ ์๋๋ก ํจ.
์ด๋๋ฐ์ด์ค ์ข ๋ฅ
- JoinPoint : ๋ฉ์๋๋ฅผ ํธ์ถํ๋ '์์ '
- Advice : JoinPoint์์ ์คํ๋์ด์ผ ํ๋ ์ฝ๋
ํก๋จ๊ด์ฌ์ฌ์ ํด๋น(ํธ๋์ญ์ ,๋ก๊ทธ,๋ณด์, ...) - Target : ์ค์ง์ ์ธ ๋น์ง๋์ค ๋ก์ง์ ๊ตฌํํ๋ ์ฝ๋
ํต์ฌ๊ด์ฌ์ฌ์ ํด๋น(๋น์ฆ๋์ค ๋ก์ง) - PointCut : Targetํด๋์ค์ Advice๊ฐ ๊ฒฐํฉ๋ ๋ ๋ ์ฌ์ด์ ๊ฒฐํฉ๊ท์น์ ์ ์ํ๋ ๊ฒ
- Aspect : Advice + Pointcut
- Weaving : AOP์์ JoinPoint๋ค์ Advice๋ก ๊ฐ์ธ๋ ๊ณผ์
Weavingํ๋ ์์ ์ ๋์์ฃผ๋ ๊ฒ์ด AOP ํด์ ์ญํ
Spring AOP์ Proxy ํจํด
- ๋น์ฆ๋์ค ๋ก์ง์ ํธ์ถํ๊ธฐ ์ ์ Proxy Class๊ฐ ํธ์ถ๋์ด ํด๋น ๋ก์ง ์ ํ์ ์คํ๋์ด์ผ ํ๋ ํก๋จ๊ด์ฌ์ฌ๋ฅผ ์คํํจ.
ํด๋์ค, ๋ฉ์๋ ์์ @Transactional์ด ์ถ๊ฐ๋๋ฉด ์ด ํด๋์ค์ ํธ๋์ญ์ ๊ธฐ๋ฅ์ด ์ ์ฉ๋ ํ๋ก์ ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ค.
์ด ํ๋ก์ ๊ฐ์ฒด๋ @Transactional์ด ํฌํจ๋ ๋ฉ์๋๊ฐ ํธ์ถ๋ ๊ฒฝ์ฐ, PlatformTransactionManager๋ฅผ ์ฌ์ฉํ์ฌ ํธ๋์ญ์ ์ ์์ํ๊ณ , ์ ์ ์ฌ๋ถ์ ๋ฐ๋ผ Commit or Rollbackํ๋ค.
์ ํ์์ฑ(propagation)
-
REQUIRED
- ๋ํดํธ ์์ฑ, ๋ถ๋ชจ ํธ๋์ญ์ ๋ด์์ ์คํํ๋ฉฐ ๋ถ๋ชจ ํธ๋์ญ์ ์ด ์์ ๊ฒฝ์ฐ ์๋ก์ด ํธ๋์ญ์ ์ ์์ฑํ๋ค.
-
SUPPORTS
- ์ด๋ฏธ ์์๋ ํธ๋์ญ์ ์ด ์์ผ๋ฉด ์ฐธ์ฌํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ํธ๋์ญ์ ์์ด ์งํํ๊ฒ ๋ง๋ ๋ค.
-
REQUIRES_NEW
- ๋ถ๋ชจ ํธ๋์ญ์ ์ ๋ฌด์ํ๊ณ ๋ฌด์กฐ๊ฑด ์๋ก์ด ํธ๋์ญ์ ์ด ์์ฑ
-
MANDATORY
- REQUIRED์ ๋น์ทํ๊ฒ ์ด๋ฏธ ์์๋ ํธ๋์ญ์ ์ด ์์ผ๋ฉด ์ฐธ์ฌํ๋ค.
- ๋ฐ๋ฉด์ ํธ๋์ญ์ ์ด ์์๋ ๊ฒ์ด ์์ผ๋ฉด ์๋ก ์์ํ๋ ๋์ ์์ธ๋ฅผ ๋ฐ์์ํจ๋ค.
- ํผ์์๋ ๋ ๋ฆฝ์ ์ผ๋ก ํธ๋์ญ์ ์ ์งํํ๋ฉด ์ ๋๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ค.
-
REQUIRES_NEW
- ํญ์ ์๋ก์ด ํธ๋์ญ์ ์ ์์ํ๋ค.
- ์ด๋ฏธ ์งํ ์ค์ธ ํธ๋์ญ์ ์ด ์์ผ๋ฉด ํธ๋์ญ์ ์ ์ ์ ๋ณด๋ฅ์ํจ๋ค.
-
NOT_SUPPORTED
- ํธ๋์ญ์ ์ ์ฌ์ฉํ์ง ์๊ฒ ํ๋ค.
- ์ด๋ฏธ ์งํ ์ค์ธ ํธ๋์ญ์ ์ด ์์ผ๋ฉด ๋ณด๋ฅ์ํจ๋ค.
-
NEVER
- ํธ๋์ญ์ ์ ์ฌ์ฉํ์ง ์๋๋ก ๊ฐ์ ํ๋ค.
- ์ด๋ฏธ ์งํ ์ค์ธ ํธ๋์ญ์ ๋ ์กด์ฌํ๋ฉด ์๋๋ค ์๋ค๋ฉด ์์ธ๋ฅผ ๋ฐ์์ํจ๋ค.
-
NESTED
- ์ด๋ฏธ ์งํ์ค์ธ ํธ๋์ญ์ ์ด ์์ผ๋ฉด ์ค์ฒฉ ํธ๋์ญ์ ์ ์์ํ๋ค.
- ์ค์ฒฉ ํธ๋์ญ์ ์ ํธ๋์ญ์ ์์ ๋ค์ ํธ๋์ญ์ ์ ๋ง๋๋ ๊ฒ์ด๋ค.
- ํ์ง๋ง ๋ ๋ฆฝ์ ์ธ ํธ๋์ญ์ ์ ๋ง๋๋ REQUIRES_NEW์๋ ๋ค๋ฅด๋ค.
ReadOnly
ํธ๋์ญ์ ฉ์ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ์ค์ ํ๋ค. ์ฑ๋ฅ ์ต์ ํ์ ์ฌ์ฉ๋ ์ ์๊ณ , ์ฐ๊ธฐ ์์ ์ด ์ผ์ด๋๋ ๊ฒ์ ์๋์ ์ผ๋ก ๋ฐฉ์งํ ์๋ ์๋ค.
ํธ๋์ญ์ ๋กค๋ฐฑ ์์ธ
์ต์ : rollback-for, rollbackFor, rollbackForClassName, noRollBackFor
๋ฐํ์ ์์ธ ๋ง๊ณ ๋ ๋กค๋ฐฑ์ด ์ผ์ด๋๋๋ก ํ๊ฑฐ๋, ๋ฐํ์ ์์ธ์์ ๋กค๋ฐฑํ์ง ์์ ์์ธ๋ฅผ ํด๋์ค๋ก ์์ฑ
timeout ์์ฑ
์ง์ ํ ์๊ฐ ๋ด์ ํด๋น ๋ฉ์๋ ์ํ์ด ์๋ฃ๋์ง ์์ ๊ฒฝ์ฐ rollback ์ํ.
์ธ์ฆ(Authentication)
- ํด๋น ์ฌ์ฉ์๊ฐ ๋ณธ์ธ์ด ๋ง๋์ง ํ์ธํ๋ ์ ์ฐจ
์ธ๊ฐ, ๊ถํ๋ถ์ฌ(Authorization)
- ์ธ์ฆ๋ ์ฌ์ฉ์๊ฐ ์์ฒญ๋ ์์์ ์ ๊ทผ ๊ฐ๋ฅํ์ง๋ฅผ ๊ฒฐ์ ํ๋ ์ ์ฐจ
spring์ ์ธ์ฆ๋ฐฉ์
- credential ๊ธฐ๋ฐ ์ธ์ฆ : ์ฌ์ฉ์๋ช ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ ์ด์ฉํ ๋ฐฉ์ (Spring์ ์ธ์ฆ ๋ฐฉ์)
- ์ด์ค ์ธ์ฆ(twofactor ์ธ์ฆ) : ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๊ฐ์ธ ์ ๋ณด๋ฅผ ์ธ์ฆ ํ, ๋ค๋ฅธ ์ธ์ฆ ์ฒด๊ณ(์: ๋ฌผ๋ฆฌ์ ์ธ ์นด๋)๋ฅผ ์ด์ฉํ์ฌ ๋๊ฐ์ง์ ์กฐํฉ์ผ๋ก ์ธ์ฆํ๋ ๋ฐฉ์
- ํ๋์จ์ด ์ธ์ฆ : ์๋์ฐจ ํค์ ๊ฐ์ ๋ฐฉ์
์ธ์ฆ
- ์ธ์ฆ ๋งค๋์ (Authentication Manager)๊ฐ ์ธ์ฆ์ ๋ํ ์ค์ ์ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํฉ๋๋ค.
- ์ธ์ฆ ๋งค๋์ ๋ ์ธ์ฆ๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ์ ๋ณด๋ฅผ UserDetails ํ์ ์ผ๋ก ๋ฐํํฉ๋๋ค.
- ์ด๋ฅผ ์ํด์๋, ์ด๋ป๊ฒ ๊ด๋ จ ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋์ง ํ๋จํ UserDetailsService๋ฅผ ์ด์ฉํฉ๋๋ค.
- ๋ฐ๋ผ์, ๊ฐ๋ฐ์๊ฐ ํด์ผ ํ๋ ๊ฒ์ UserDetailsService ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ณ ์ธ์ฆ ๋งค๋์ ์ ์ฐ๊ฒฐ์์ผ์ฃผ๋ฉด ๋ฉ๋๋ค.
์ธ๊ฐ
์ ์ ์ ์์ฒญ์ AuthenticationFilter์์ Authentication ๊ฐ์ฒด๋ก ๋ณํํด AuthenticationManager(ProviderManager)์๊ฒ ๋๊ฒจ์ฃผ๊ณ , AuthenticationProvider(DaoAuthenticationProvider)๊ฐ ์ค์ ์ธ์ฆ์ ํ ์ดํ์ ์ธ์ฆ์ด ์๋ฃ๋๋ฉด Authentication๊ฐ์ฒด๋ฅผ ๋ฐํํด์ค๋ค.
- AbstractAuthenticationProcessingFilter : ์น ๊ธฐ๋ฐ ์ธ์ฆ์์ฒญ์์ ์ฌ์ฉ๋๋ ์ปดํฌ๋ํธ๋ก POST ํผ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค. ์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ค๋ฅธ ํํฐ๋ก ์ ๋ฌํ๊ธฐ ์ํด์ Authentication ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์ผ๋ถ ํ๋กํผํฐ๋ฅผ ์ค์ ํ๋ค.
- AuthenticationManager : ์ธ์ฆ์์ฒญ์ ๋ฐ๊ณ Authentication์ ์ฑ์์ค๋ค.
- AuthenticationProvider : ์ค์ ์ธ์ฆ์ด ์ผ์ด๋๊ณ ๋ง์ฝ ์ธ์ฆ ์ฑ๊ณต์ Authentication ๊ฐ์ฒด์ authenticated = true๋ก ์ค์ ํด์ค๋ค.
Spring Security ๋ ProviderManager ๋ผ๋ AuthenticationManager ์ธํฐํ์ด์ค์ ์ ์ผํ ๊ตฌํ์ฒด๋ฅผ ์ ๊ณตํ๋ค. ProviderManager ๋ ํ๋ ๋๋ ์ฌ๋ฌ ๊ฐ์ AuthenticationProvider ๊ตฌํ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์๋ค. AuthenticationProvider๋ ๋ง์ด ์ฌ์ฉ๋๊ณ ProviderManager(AuthenticationManager ์ ๊ตฌํ์ฒด) ์๋ ์ ํตํฉ๋๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ป๊ฒ ๋์ํ๋ ์ง ์ดํดํ๋ ๊ฒ์ด ์ค์ํ๋ค.
- SQL HINT : SQL ์คํ๊ณํ์ ์ฌ์ฉ์๊ฐ ์ํ๋ ์ชฝ์ผ๋ก ์ ๋ํ๋ ๋๊ตฌ
- OPTIMAZER์๊ฒ SQL๋ฌธ ์คํ์ ์ํ ๋ฐ์ดํฐ ์ค์บ๋ ๊ฒฝ๋ก, ์กฐ์ธ ๋ฐฉ๋ฒ ๋ฑ์ SQL๋ฌธ์ผ๋ก ์๋ ค์ฃผ๋ ๊ฒ.
- ํน์ง
- ์คํ๊ณํ์ ์ ์ดํ๋ค : ์ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์คํ๊ณํ์ด ์์ฑ๋์ง ์์ ๊ฒฝ์ฐ, ์๋ก์ด ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ๋ ์์ง๋ง hint๋ก ์ตํฐ๋ง์ด์ ์๊ฒ ์ํ๋ ์คํ๊ณํ์ ์์ฑํ๋๋ก ์ ๋ํ ์ ์๋ค.
- ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋๋ค : ์๋ชป ์ ๋ ฅํด๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์์ผ๋ฉฐ ๋ค๋ง ํํธ๊ฐ ์ ์ฉ๋์ง ์์ ๋ฟ์ด๋ค.
- ์ ํ ๋๋ ์ทจ์ฌ๋ ์ ์๋ค : ์ณ์ ๋ฌธ๋ฒ์ผ๋ก ์์ฑํด๋ ์ตํฐ๋ง์ด์ ์ ์ํด ๋ฒ๋ ค์ง ์๋, ์ ํ๋ ์๋ ์๋ค.
- ๋ค์ํ ์ข ๋ฅ๊ฐ ์กด์ฌํ๋ค : ๋ค์ํ ์ข ๋ฅ์ ํํธ๊ฐ ์์ผ๋ฉฐ, ๋ฒ์ ์ ๋ ๋๋ง๋ค ์ถ๊ฐ๋๋ค.
- ์ข
๋ฅ(sql)
- ์กฐ์ธ์์ : STRAIGHT_JOIN (from์ ์ ๋ํ๋ ์์๋๋ก ์กฐ์ธ, mysql)
- ์กฐ์ธํ์ : {LOOP | MERGE | HASH } JOIN
- ์ง๊ณํ์ : {HASH | ORDER } GROUP
- UNION : {CONACT | HASH | MERGE } UNION
- ์กฐ์ธ์์์ ์ง : FORCE ORDER
- ์ง์ ํ ์ฒ์ ํ๋ค์ ๋นจ๋ฆฌ ๊ฒ์ : FAST number_rows
- ๋ณ๋ ฌ ์ฒ๋ฆฌ ์ ํ : MAXDOP number
- ์ฟผ๋ฆฌ ์ต์ ํ ํ๋ก๊ทธ๋จ์ ์ผ๋ฐ์ ์ผ๋ก ์ฟผ๋ฆฌ์ ๋ํด ์ต์์ ์คํ ๊ณํ์ ์ ํํ๋ฏ๋ก <query_hint>๋ฅผ ๋น๋กฏํ ํํธ๋ ์๋ จ๋ ๊ฐ๋ฐ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ์๊ฐ ์ตํ์ ์๋จ์ผ๋ก๋ง ์ฌ์ฉํ์.
- ์ ์ด๋ SQL SERVER ์์๋ ํํธ๊ฐ ํ์ค ์ฟผ๋ฆฌ ๊ธฐ๋ฒ์ด ์๋๋ค.
Redis | Memcached | |
---|---|---|
์ ์ฅ์ | In Memory Storage | |
์ ์ฅ ๋ฐฉ์ | Key-Value | |
๋ฐ์ดํฐ ํ์ | String, Set, Sorted Set, Hash, List | String |
๋ฐ์ดํฐ ์ ์ฅ | Memory, Disk | Only Memory |
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฌ์ฉ | ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฌ์ฉ ํ์ง ์์(๋ช ์์ ์ผ๋ก๋ง ๋ฐ์ดํฐ ์ญ์ ๊ฐ๋ฅ) | ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ์ LRU ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ ์ญ์ ํ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฌ์ฉ |
์ค๋ ๋ | Single Thread | Multi Thread |
์บ์ฑ ์ฉ๋ | Key, Value ๋ชจ๋ 512MB | Key name 250 byte, Value 1MB |
- Redis์ ์ฅ์
- ๋ค์ํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ง์
- ๋ฐ์ดํฐ ๋ณต๊ตฌ๊ฐ ๊ฐ๋ฅ
- ๋ฐ์ดํฐ๋ฅผ Disk์๋ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์๋ฒ๋ ํ๋ก์ธ์ค๊ฐ ๋๋ฐ ์ข ๋ฃ๋๋ ์ํฉ์์ ์ ์ค๋ ๋ฐ์ดํฐ๋ฅผ ๋ณต๊ตฌํ ์ ์์
- ๋ค์ํ Data Eviction ์ ์ฑ
์ ์ง์
- LRU์๊ณ ๋ฆฌ์ฆ์ ํตํ Eviction()์ ์ง์ํ๋ Memcached์๋ ๋ฌ๋ฆฌ,
Redis๋ 6๊ฐ์ง Ecivtion ์ ์ฑ ์ ํตํด ๋์ฑ ์ธ๋ฐํ Eviction ์ ์ด๊ฐ ๊ฐ๋ฅ
- LRU์๊ณ ๋ฆฌ์ฆ์ ํตํ Eviction()์ ์ง์ํ๋ Memcached์๋ ๋ฌ๋ฆฌ,
- Memcached์ ๋นํด ๊ด๋ จ ๋ฌธ์๊ฐ ๋ ๋ง๋ค.
- Memcached์ ์ฅ์
- ๋ฉํฐ์ค๋ ๋ ์ํคํ ์ฒ๋ฅผ ์ง์
- Redis์ ๋นํด ์ ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๊ตฌ
- html๊ณผ ๊ฐ์ ์ ์ ๋ฐ์ดํฐ ์บ์ฑ์ ์ ๋ฆฌ.
Redis๋ Copy&Write ๋ฐฉ์์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ค์ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๊ตฌ
- html๊ณผ ๊ฐ์ ์ ์ ๋ฐ์ดํฐ ์บ์ฑ์ ์ ๋ฆฌ.
-
ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค์ด๋ ํ๋์ ํธ๋์ญ์ ์ isolated๊ฐ ์ฑ๊ณตํ๋ ๋ฒ์๋ฅผ ์ธก์ ํ ๋ ์ฐ์ด๋ ๋ฐฉ๋ฒ
-
READ UNCOMMITTED
- ํธ๋์ญ์ ์ด ๊ฒฉ๋ฆฌ๋์ด์์ง ์์
- Dirty-Reads๊ฐ ๋ฐ์ํจ
(Dirty-reads : ์์ง ์ปค๋ฐ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ Read)
-
READ COMMITTED
- ๋ค๋ฅธ ํธ๋์ญ์ ์ด write-locked๋ ๊ฒ์ด ํ๋ฆด ๋๊น์ง ๊ธฐ๋ค๋ฆผ.
- Nonrepeatable Reads๊ฐ ๋ฐ์
(Nonrepeatable Reads : ํ ํธ๋์ญ์ ์ด ๊ฐ์ ๋ด์ฉ์ผ๋ก ๋ ๋ฒ selectํ์ ๋ ๋ค๋ฅธ ๊ฐ์ด ๋์ค๋ ๋ฌธ์ )
-
REPEATABLE READ
- ๋ค๋ฅธ ํธ๋์ญ์ ์ด write-locked๋ ๊ฒ์ด ํ๋ฆด ๋๊น์ง ๊ธฐ๋ค๋ฆผ. ํธ๋์ญ์ ์ด ์์๋๊ธฐ ์ ์ ์ปค๋ฐ๋ ๋ด์ฉ๋ง ์กฐํ ๊ฐ๋ฅ
- Phantoms ๊ฐ ๋ฐ์
(Phantoms : ์๋๋ select์ ๋์ค์ง ์์์ผ๋ ๋ค์ select์ ๋์ค๋ row)
-
SERIALIZABLE
- ์ฝ๊ธฐ ์์ ์๋ ์ ๊ธ์ ๊ฒ.
- ํ ํธ๋์ญ์
์ด DB๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ ํจ๊ณผ.
Transaction isolation level Dirty reads Nonrepeatable reads Phantoms Read uncommitted X X X Read committed -- X X Repeatable read -- -- X Serializable -- -- --
redis vs memcached : (https://deveric.tistory.com/65)
Isolation Level : (https://docs.microsoft.com/ko-kr/sql/odbc/reference/develop-app/transaction-isolation-levels?view=sql-server-ver15)
Transactional : (https://goddaehee.tistory.com/167)
์ธ์ฆ, ์ธ๊ฐ : (https://coding-start.tistory.com/153)