etc/์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ

[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] ํšŒ๋ณต, ๋ณ‘ํ–‰ ์ œ์–ด

minzhen 2022. 7. 29. 10:17

Recovery(ํšŒ๋ณต)

ํŠธ๋žœ์žญ์…˜๋“ค์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋„์ค‘ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์†์ƒ๋˜์—ˆ์„ ๋•Œ, ์†์ƒ๋˜๊ธฐ ์ด์ „์˜ ์ •์ƒ ์ƒํƒœ๋กœ ๋ณต๊ตฌํ•˜๋Š” ์ž‘์—…
  • ์˜์†์„ฑ ์ฃผ์š” ๊ธฐ๋ฒ•

 

1. ๋กœ๊ทธ ๊ธฐ๋ฐ˜ ํšŒ๋ณต ๊ธฐ๋ฒ•

Deferred Update (์—ฐ๊ธฐ(์ง€์—ฐ) ๊ฐฑ์‹  ๊ธฐ๋ฒ•)

ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ DB์— ๋Œ€ํ•œ ์‹ค์งˆ์  ๊ฐฑ์‹ ์„ ์—ฐ๊ธฐ
  • ํŠธ๋žœ์žญ์…˜์ด ์ˆ˜ํ–‰๋˜๋Š” ๋™์•ˆ์˜ ๊ฐฑ์‹ ์€ ์ผ๋‹จ log์— ๋ณด๊ด€
  • ํŠธ๋žœ์žญ์…˜์˜ ๋ถ€๋ถ„ ์™„๋ฃŒ ์‹œ์ ์— log์— ๋ณด๊ด€ํ•œ ๊ฐฑ์‹  ๋‚ด์šฉ์„ ์‹ค์ œ DB์— ๊ธฐ๋กํ•จ
  • Redo ์ž‘์—…๋งŒ ๊ฐ€๋Šฅ

Immediate Update (์ฆ‰๊ฐ ๊ฐฑ์‹  ๊ธฐ๋ฒ•)

ํŠธ๋žœ์žญ์…˜์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐฑ์‹ ํ•˜๋ฉด, ํŠธ๋žœ์žญ์…˜์ด ๋ถ€๋ถ„ ์™„๋ฃŒ๋˜๊ธฐ ์ „์ด๋ผ๋„ ์ฆ‰์‹œ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ˜์˜
  • ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ํšŒ๋ณต ์ž‘์—…์„ ํ•  ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ ๊ฐฑ์‹ ๋œ ๋‚ด์šฉ์€ ๋ชจ๋‘ Log์— ๋ณด๊ด€์‹œํ‚ด
  • Redo์™€ Undo ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•จ

 

2. ๊ฒ€์‚ฌ์  ํšŒ๋ณต ๊ธฐ๋ฒ•

Check Point (์ฒดํฌํฌ์ธํŠธ ๊ธฐ๋ฒ•)

ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰ ์ค‘, ๋‚˜์ค‘์— ์žฌ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํŠน์ • ๋‹จ๊ณ„์—์„œ ์ฒดํฌํฌ์ธํŠธ๋ฅผ log์— ๋ณด๊ด€ํ•ด๋‘๊ณ , ์žฅ์•  ๋ฐœ์ƒ์‹œ ์ฒดํฌํฌ์ธํŠธ๋ถ€ํ„ฐ ํšŒ๋ณต ์ž‘์—… ์ˆ˜ํ–‰
  • ์žฅ์•  ๋ฐœ์ƒ ์‹œ ํŠธ๋žœ์žญ์…˜ ์ „์ฒด๋ฅผ ์ฒ ํšŒํ•˜์—ฌ ํšŒ๋ณตํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํšŒ๋ณต ์‹œ๊ฐ„์ด ์ ˆ์•ฝ๋จ
  • ์ฒดํฌํฌ์ธํŠธ์—๋Š” ๊ฐฑ์‹  ๋‚ด์šฉ, ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ƒํ™ฉ ๋“ฑ์˜ ์ •๋ณด๊ฐ€ ํฌํ•จ๋จ

 

3. ๊ทธ๋ฆผ์ž ํŽ˜์ด์ง• ํšŒ๋ณต ๊ธฐ๋ฒ•

Shadow Paging (๊ทธ๋ฆผ์ž ํŽ˜์ด์ง€ ๋Œ€์ฒด ๊ธฐ๋ฒ•)

ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰ ์‹œ ๋ณต์ œ๋ณธ์„ ์ƒ์„ฑํ•ด๋‘๊ณ , DB ์žฅ์• ์‹œ ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ณต๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ๊ฐฑ์‹  ์ด์ „์˜ DB๋ฅผ ์ผ์ • ํฌ๊ธฐ ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ๊ฐ ํŽ˜์ด์ง€๋งˆ๋‹ค ๋ณต์‚ฌ๋ณธ์ธ ๊ทธ๋ฆผ์ž ํŽ˜์ด์ง€๋ฅผ ๋ณ„๋„ ๋ณด๊ด€
  • ํŠธ๋žœ์žญ์…˜ ์ž‘์—… Rollback์‹œ ๊ฐฑ์‹  ํ›„ ๋ถ€๋ถ„์„ ๊ทธ๋ฆผ์žํŽ˜์ด์ง€๋กœ ๋Œ€์ฒดํ•˜์—ฌ ํšŒ๋ณต

 

 

 

Concurrency Control (๋ณ‘ํ–‰ ์ œ์–ด)

๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋žจ์˜ ์ด์ ์„ ํ™œ์šฉํ•˜์—ฌ ๋™์‹œ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜์„ ๋ณ‘ํ–‰ ์ˆ˜ํ–‰ํ•  ๋•Œ, ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ํŠธ๋žœ์žญ์…˜๋“ค์ด DB์˜ ์ผ๊ด€์„ฑ์„ ํŒŒ๊ดดํ•˜์ง€ ์•Š๋„๋ก ํŠธ๋žœ์žญ์…˜ ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์ œ์–ดํ•˜๋Š” ๊ฒƒ
  • ๋ณ‘ํ–‰ ์ œ์–ด ์•ˆ ํ•จ → DB์— ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜ ๋™์‹œ ์ ‘๊ทผ ํ—ˆ์šฉ → ๊ฐฑ์‹  ๋ถ„์‹ค, ๋น„์™„๋ฃŒ ์˜์กด์„ฑ, ๋ชจ์ˆœ์„ฑ, ์—ฐ์‡„ ๋ณต๊ท€ ๋“ฑ ๋ฌธ์ œ ๋ฐœ์ƒ
  • ์ผ๊ด€์„ฑ ์ฃผ์š” ๊ธฐ๋ฒ•

 

Locking (๋กœํ‚น)

ํŠธ๋žœ์žญ์…˜์ด ์–ด๋–ค ๋กœํ‚น ๋‹จ์œ„์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์ „์— Lock์„ ์š”์ฒญ → Lock์ด ํ—ˆ๋ฝ ๋˜์–ด์•ผ๋งŒ ๊ทธ ๋กœํ‚น ๋‹จ์œ„๋ฅผ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ธฐ๋ฒ•
  • ํŠธ๋žœ์žญ์…˜ ์™„๋ฃŒ๊นŒ์ง€ ์ถ”๊ฐ€์ ์ธ ์ ‘๊ทผ์„ ์ œํ•œ ⇒ ์ฃผ์š” ๋ฐ์ดํ„ฐ์˜ ์•ก์„ธ์Šค๋ฅผ ์ƒํ˜ธ ๋ฐฐํƒ€์ ์œผ๋กœ ํ•˜๊ฒŒ ๋จ
  • ๋กœํ‚น ๋‹จ์œ„ (Locking Granularity) : ํ•œ๊บผ๋ฒˆ์— ๋กœํ‚นํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด์˜ ํฌ๊ธฐ
    • DB, ํŒŒ์ผ, ๋ ˆ์ฝ”๋“œ, ํ•„๋“œ ๋“ฑ์ด ๋‹จ์œ„๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ
    • ๋กœํ‚น ๋‹จ์œ„ ํผ → ๋กœํฌ ์ˆ˜๊ฐ€ ์ž‘์•„ ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์›€ but ๋ณ‘ํ–‰์„ฑ ์ˆ˜์ค€ ์ €ํ•˜
    • ๋กœํ‚น ๋‹จ์œ„ ์ž‘์Œ → ๋กœํฌ ์ˆ˜ ๋งŽ์•„ ๊ด€๋ฆฌ๊ฐ€ ๋ณต์žก but ๋ณ‘ํ–‰์„ฑ ์ˆ˜์ค€ ํ–ฅ์ƒ

 

Time Stamp Ordering (ํƒ€์ž„ ์Šคํƒฌํ”„ ์ˆœ์„œ)

ํŠธ๋žœ์žญ์…˜๊ณผ ์ฝ์Œ/๊ฐฑ์‹ ๋œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ํƒ€์ž„ ์Šคํƒฌํ”„๋ฅผ ๋ถ€์—ฌํ•ด ํŠธ๋žœ์žญ์…˜์˜ ์ฒ˜๋ฆฌ ์ˆœ์„œ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๊ธฐ๋ฒ•
  • ์ง๋ ฌ์„ฑ ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด ํŠธ๋žœ์žญ์…˜ ๊ฐ„ ์ฒ˜๋ฆฌ ์ˆœ์„œ๋ฅผ ๋ฏธ๋ฆฌ ์„ ํƒํ•˜๋Š” ๊ธฐ๋ฒ• ์ค‘ ๊ฐ€์žฅ ๋ณดํŽธ์ ์ธ ๋ฐฉ๋ฒ•์ž„

 

OCC (๋‚™๊ด€์  ๋ณ‘ํ–‰ ์ œ์–ด, Optimistic concurrency control)

๋ณ‘ํ–‰ ์ˆ˜ํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํŠธ๋žœ์žญ์…˜์ด ํŒ๋… ์ ์šฉ(Read Only) ํŠธ๋žœ์žญ์…˜ ์ผ ๊ฒฝ์šฐ, ํŠธ๋žœ์žญ์…˜ ๊ฐ„์˜ ์ถฉ๋Œ๋ฅ ์ด ๋งค์šฐ ๋‚ฎ๋‹ค๋Š” ์ ์„ ์ด์šฉํ•œ ๊ธฐ๋ฒ•
  • = ์ตœ์  ๋ณ‘ํ–‰ ์ˆ˜ํ–‰ = ๋‚™๊ด€์  ๊ฒ€์ฆ ๊ธฐ๋ฒ•
  • ์ผ๋‹จ ํŠธ๋žœ์žญ์…˜์„ ์ˆ˜ํ–‰ํ•œ ํ›„, conflict๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๋ฉด ํŠธ๋žœ์žญ์…˜์„ abortํ•˜๊ฑฐ๋‚˜ repairํ•˜๋Š” ๋ฐฉ๋ฒ•

 

MVCC (๋‹ค์ค‘ ๋ฒ„์ „ ๋™์‹œ์„ฑ ์ œ์–ด, Multi Version Concurrency Control)

ํƒ€์ž„ ์Šคํƒฌํ”„๋ฅผ ๋น„๊ตํ•ด ์ง๋ ฌ ๊ฐ€๋Šฅ์„ฑ์ด ๋ณด์žฅ๋˜๋Š” ์ ์ ˆํ•œ ๋ฒ„์ „์„ ์„ ํƒํ•˜์—ฌ ์ ‘๊ทผํ•จ
  • = ๋‹ค์ค‘ ๋ฒ„์ „ ์Šคํƒฌํ”„ ๊ธฐ๋ฒ•
  • ํƒ€์ž„ ์Šคํƒฌํ”„ ๊ธฐ๋ฒ•์€ ํŠธ๋žœ์žญ์…˜ ๋ฐ ๋ฐ์ดํ„ฐ์˜ ์ด์šฉ ์‹œ๊ฐ„์„ ์‹œ๊ฐ„ํ‘œ๋กœ ๊ด€๋ฆฌ ↔ ๋‹ค์ค‘ ๋ฒ„์ „ ๊ธฐ๋ฒ•์€ ๊ฐฑ์‹ ๋  ๋•Œ๋งˆ๋‹ค์˜ ๋ฒ„์ „์„ ๋ถ€์—ฌํ•˜์—ฌ ๊ด€๋ฆฌ