๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ŒCS/DB

[DB] ํŠธ๋žœ์žญ์…˜(Transaction)

by dar0m! 2021. 4. 23.

๊ฐœ๋…

ํŠธ๋žœ์žญ์…˜(Transaction)์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚ค๋Š” ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…์˜ ๋‹จ์œ„ ๋˜๋Š” ํ•œ๊บผ๋ฒˆ์— ๋ชจ๋‘ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ์ผ๋ จ์˜ ์—ฐ์‚ฐ์„ ์˜๋ฏธํ•œ๋‹ค.

  1. ํŠธ๋žœ์žญ์…˜์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์—์„œ ๋ณ‘ํ–‰ ์ œ์–ด ๋ฐ ํšŒ๋ณต ์ž‘์—… ์‹œ ์ฒ˜๋ฆฌ๋˜๋Š” ์ž‘์—…์˜ ๋…ผ๋ฆฌ์  ๋‹จ์œ„์ด๋‹ค.
  2. ์‚ฌ์šฉ์ž๊ฐ€ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์„œ๋น„์Šค ์š”๊ตฌ ์‹œ ์‹œ์Šคํ…œ์ด ์‘๋‹ตํ•˜๊ธฐ ์œ„ํ•œ ์ƒํƒœ ๋ณ€ํ™˜ ๊ณผ์ •์˜ ์ž‘์—…๋‹จ์œ„์ด๋‹ค.
    • ์ƒํƒœ๋ณ€ํ™” : SQL์งˆ์˜์–ด(SELECT | INSERT | UPDATE | DELETE)๋ฅผ ํ†ตํ•ด DB์— ์ ‘๊ทผํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒํƒœ๊ฐ€ ๋ณ€ํ™”ํ•˜๋Š” ๊ฒƒ
    • ์ž‘์—… ๋‹จ์œ„ : ์ผ๋ จ์˜ ์—ฐ์‚ฐ(SQL ๋ช…๋ น๋ฌธ ์ง‘ํ•ฉ). ์‚ฌ๋žŒ์ด ์ •ํ•˜๋Š” ๊ธฐ์ค€(ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ)์— ๋”ฐ๋ผ ์ •์˜ํ•จ

ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ์„ค๊ณ„๋ฅผ ์ž˜ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ๋งŽ์€ ์ด์ ์„ ๊ฐ€์ ธ๋‹ค์ค€๋‹ค.

Lock ๊ณผ ํŠธ๋žœ์žญ์…˜

Lock
- ์—ฌ๋Ÿฌ Connection์—์„œ ๋™์‹œ์— ๋™์ผํ•œ ์ž์›์„ ์š”์ฒญํ•  ๊ฒฝ์šฐ, ํ•œ ์‹œ์ ์— ํ•˜๋‚˜์˜ Connection๋งŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ์—ญํ• 
- ๋™์‹œ์„ฑ ์ œ์–ด
ํŠธ๋žœ์žญ์…˜
- ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์ ์ธ ์ž‘์—… ์…‹ ์ž์ฒด๊ฐ€ 100% ์ ์šฉ๋˜๊ฑฐ๋‚˜ ์•„๋ฌด๊ฒƒ๋„ ์ ์šฉ๋˜์ง€ ์•Š์•„์•ผํ•จ์„ ๋ณด์žฅ
- ๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ์„ ๋ณด์žฅ

 

ํŠธ๋žœ์žญ์…˜ ํŠน์ง•(ACID)

  • ์›์ž์„ฑ(Atomicity)
    • ํŠธ๋žœ์žญ์…˜์ด DB์— ๋ชจ๋‘ ๋ฐ˜์˜๋˜๊ฑฐ๋‚˜, ํ˜น์€ ์ „ํ˜€ ๋ฐ˜์˜๋˜์ง€ ์•Š์•„์•ผ ๋œ๋‹ค. (= ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์€ Commit๋˜๊ฑฐ๋‚˜ Rollback๋œ๋‹ค.)
    • Commit : ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์— ์†ํ•˜๋Š” ์ฟผ๋ฆฌ๋ฌธ ๋ชจ๋‘ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์–ด์•ผ๋งŒ ํ•˜๋‚˜์˜ ์ž‘์—…(ํŠธ๋žœ์žญ์…˜)์ด ์™„๋ฃŒ๋˜๋Š” ๊ฒƒ์ด๋‹ค.
    • Rollback : ์ž‘์—… ๋‹จ์œ„์— ์†ํ•˜๋Š” ์ฟผ๋ฆฌ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์‹คํŒจํ•˜๋ฉด ๋ชจ๋“  ์ฟผ๋ฆฌ๋ฌธ์„ ์ทจ์†Œํ•˜๊ณ  ์ด์ „ ์ƒํƒœ๋กœ ๋Œ๋ ค๋†“์•„์•ผ ํ•œ๋‹ค.
    • ํšŒ๋ณต
  • ์ผ๊ด€์„ฑ(Consistency)
    • ํŠธ๋žœ์žญ์…˜์˜ ์ž‘์—… ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋Š” ํ•ญ์ƒ ์ผ๊ด€์„ฑ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
    • ๋™์‹œ์„ฑ ์ œ์–ด
  • ๋…๋ฆฝ์„ฑ(Isolation)
    • ๋‘˜ ์ด์ƒ์˜ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ๋ณ‘ํ–‰ ์‹คํ–‰๋˜๊ณ  ์žˆ์„ ๋•Œ, ์–ด๋–ค ํŠธ๋žœ์žญ์…˜๋„ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜ ์—ฐ์‚ฐ์— ๋ผ์–ด๋“ค ์ˆ˜ ์—†๋‹ค.
    • ๋™์‹œ์„ฑ ์ œ์–ด
  • ์ง€์†์„ฑ(Durability)
    • ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฉด, ๊ฒฐ๊ณผ๋Š” ์˜๊ตฌ์ ์œผ๋กœ ๋ฐ˜์˜๋˜์–ด์•ผ ํ•œ๋‹ค.
    • ํšŒ๋ณต

 

์—ฐ์‚ฐ

ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์€ Commit ๋˜๊ฑฐ๋‚˜ Rollback ๋˜์–ด์•ผ ํ•œ๋‹ค.

Commit

ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋๋‚ฌ๊ณ , DB๊ฐ€ ์ผ๊ด€์„ฑ์žˆ๋Š” ์ƒํƒœ์ผ ๋•Œ ํŠธ๋žœ์žญ์…˜์ด ํ–‰ํ•œ ์—ฐ์‚ฐ์ด ์™„๋ฃŒ๋œ ๊ฒƒ์„ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์—ฐ์‚ฐ

Rollback

ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๊ฐ€ ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ผ๊ด€์„ฑ์„ ๊นจ๋œจ๋ ธ์„ ๋•Œ, ํŠธ๋žœ์žญ์…˜์˜ ์ผ๋ถ€๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ๋”๋ผ๋„, ์›์ž์„ฑ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ด ํŠธ๋žœ์žญ์…˜์ด ํ–‰ํ•œ ๋ชจ๋“  ์—ฐ์‚ฐ์„ ์ทจ์†Œ(Undo)ํ•˜๋Š” ์—ฐ์‚ฐ์ด๋‹ค.

transaction์ด ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์ง€ ์•Š์•˜์„ ๋•Œ, last consistent state(ex. ํŠธ๋žœ์žญ์…˜์˜ ์‹œ์ž‘ ์ƒํƒœ)๋กœ Rollback ํ•  ์ˆ˜ ์žˆ์Œ.

ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ rollback,
์‹œ์Šคํ…œ ์˜ค๋ฅ˜์™€ ๊ฐ™์€ ํŠธ๋žœ์žญ์…˜ ์™ธ๋ถ€ ์š”์ธ์œผ๋กœ ์ธํ•ด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ ํšŒ๋ณต์„ ํ•œ๋‹ค.

 

ํŠธ๋žœ์žญ์…˜์˜ ์ƒํƒœ

ํŠธ๋žœ์žญ์…˜ ์ƒํƒœ ๋‹ค์ด์–ด๊ทธ๋žจ(์ถœ์ฒ˜ : https://d2.naver.com/helloworld/407507)

  • ํ™œ๋™(Active) : ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰์ค‘์ธ ์ƒํƒœ
  • ์‹คํŒจ(Failed) : ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ค‘๋‹จ๋œ ์ƒํƒœ
  • ์ฒ ํšŒ(Aborted) : ํŠธ๋žœ์žญ์…˜์ด ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด Rollback ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ ์ƒํƒœ
  • ๋ถ€๋ถ„ ์™„๋ฃŒ(Partially Committed) : ํŠธ๋žœ์žญ์…˜์˜ ๋งˆ์ง€๋ง‰ ์—ฐ์‚ฐ๊นŒ์ง€ ์‹คํ–‰ํ–ˆ์ง€๋งŒ, Commit ์—ฐ์‚ฐ์ด ์‹คํ–‰๋˜๊ธฐ ์ง์ „์˜ ์ƒํƒœ
  • ์™„๋ฃŒ(Committed) : ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด Commit ์—ฐ์‚ฐ์„ ์‹คํ–‰ํ•œ ํ›„์˜ ์ƒํƒœ

 

ํŠธ๋žœ์žญ์…˜ ์‹œ ์ฃผ์˜ํ•  ์ 

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค Connection ๊ฐœ์ˆ˜๊ฐ€ ์ œํ•œ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ํŠธ๋žœ์žญ์…˜์˜ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™”ํ•ด์•ผ ํ•œ๋‹ค.
  • Conntection์„ ์†Œ์œ ํ•˜๋Š” ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ์ˆ˜๋ก ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ Connection ์ˆ˜๋Š” ์ค„์–ด๋“ ๋‹ค.

๊ต์ฐฉ์ƒํƒœ

๋‘ ๊ฐœ ์ด์ƒ์˜ ํŠธ๋žœ์žญ์…˜์ด ํŠน์ • ์ž์›์˜ ์ž ๊ธˆ์„ ํš๋“ํ•œ ์ฑ„ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์†Œ์œ ํ•˜๊ณ  ์žˆ๋Š” ์ž ๊ธˆ์„ ์š”๊ตฌํ•˜์—ฌ ์•„๋ฌด๋ฆฌ ๊ธฐ๋‹ค๋ ค๋„ ์ƒํ™ฉ์ด ๋ฐ”๋€Œ์ง€ ์•Š๋Š” ์ƒํƒœ

๊ต์ฐฉ์ƒํƒœ์˜ ๋นˆ๋„๋ฅผ ๋‚ฎ์ถ”๋Š” ๋ฐฉ๋ฒ•

  • ํŠธ๋žœ์žญ์…˜์„ ์ž์ฃผ Commit
  • ์ •ํ•ด์ง„ ์ˆœ์„œ๋Œ€๋กœ ํ…Œ์ด๋ธ”์— ์ ‘๊ทผ
    • ํŠธ๋žœ์žญ์…˜ 1 ์ด ํ…Œ์ด๋ธ” B -> A ์˜ ์ˆœ์œผ๋กœ ์ ‘๊ทผํ–ˆ๊ณ , ํŠธ๋žœ์žญ์…˜ 2 ๋Š” ํ…Œ์ด๋ธ” A -> B์˜ ์ˆœ์œผ๋กœ ์ ‘๊ทผํ–ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜๋“ค์ด ๋™์ผํ•œ ํ…Œ์ด๋ธ” ์ˆœ์œผ๋กœ ์ ‘๊ทผํ•˜๊ฒŒ ํ•œ๋‹ค.
  • ์ฝ๊ธฐ ์ž ๊ธˆ ํš๋“(SELECT ~ FOR UPDATE) ์‚ฌ์šฉ์„ ํ”ผํ•จ
  • ํ…Œ์ด๋ธ” ๋‹จ์œ„์˜ ์ž ๊ธˆ์„ ํš๋“ํ•ด ๊ฐฑ์‹ ์„ ์ง๋ ฌํ™”
    • ํ•œ ํ…Œ์ด๋ธ”์˜ ๋ณต์ˆ˜ ํ–‰์„ ๋ณต์ˆ˜์˜ ์—ฐ๊ฒฐ์—์„œ ์ˆœ์„œ ์—†์ด ๊ฐฑ์‹ ํ•˜๋ฉด ๊ต์ฐฉ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ๋‹ค, ์ด ๊ฒฝ์šฐ์—๋Š” ํ…Œ์ด๋ธ” ๋‹จ์œ„์˜ ์ž ๊ธˆ์„ ํš๋“ํ•ด ๊ฐฑ์‹ ์„ ์ง๋ ฌํ™” ํ•˜๋ฉด ๋™์‹œ์„ฑ์„ ๋–จ์–ด์ง€์ง€๋งŒ ๊ต์ฐฉ์ƒํƒœ๋ฅผ ํšŒํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค.
 

[DB] ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€(Transaction Isolation Level)

๊ฐœ๋… ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ์ˆ˜์ค€(isolation level)์ด๋ž€ ๋™์‹œ์— ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ์ฒ˜๋ฆฌ๋  ๋•Œ, ํŠธ๋žœ์žญ์…˜๋ผ๋ฆฌ ์–ผ๋งˆ๋‚˜ ์„œ๋กœ ๊ณ ๋ฆฝ๋˜์–ด ์žˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, ํŠน์ • ํŠธ๋žœ์žญ์…˜์ด ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์— ๋ณ€๊ฒฝํ•œ ๋ฐ

dar0m.tistory.com

 

DBMS์˜ ๊ตฌ์กฐ

DBMS ๊ตฌ์กฐ(์ถœ์ฒ˜ : https://mangkyu.tistory.com/19, https://gyoogle.dev/blog/computer-science/data-base/Transaction.html)

ํฌ๊ฒŒ ์งˆ์˜ ์ฒ˜๋ฆฌ๊ธฐ(Query Processor)์™€ ์ €์žฅ ์‹œ์Šคํ…œ(Storage System) ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค.

  • ์ž…์ถœ๋ ฅ ๋‹จ์œ„๋Š” ๊ณ ์ • ๊ธธ์ด์˜ ํŽ˜์ด์ง€(Page)๋‹จ์œ„๋กœ ๋””์Šคํฌ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ด๋‹ค.
  • ์ €์žฅ ๊ณต๊ฐ„์€ ๋น„ํœ˜๋ฐœ์„ฑ ์ €์žฅ ์žฅ์น˜์ธ ๋””์Šคํฌ๋กœ ์ผ๋ถ€๋ถ„์€ Main Memory์— ์ €์žฅํ•œ๋‹ค.

Buffer ๊ด€๋ฆฌ ์ •์ฑ…

DBMS์˜ ์ €์žฅ ์‹œ์Šคํ…œ(Storage System)์— ์†ํ•˜๋Š” ๋ชจ๋“ˆ ์ค‘ ํ•˜๋‚˜๋กœ, Main Memory์— ์œ ์ง€ํ•˜๋Š” ํŽ˜์ด์ง€๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ชจ๋“ˆ
  • Page Buffer Manager
  • Buffer Manager

Buffer ๊ด€๋ฆฌ ์ •์ฑ…์— ๋”ฐ๋ผ undo ๋ณต๊ตฌ์™€, redo ๋ณต๊ตฌ๊ฐ€ ์š”๊ตฌ๋˜๊ฑฐ๋‚˜ ๊ทธ๋ ‡์ง€ ์•Š๊ฒŒ ๋˜๋ฏ€๋กœ transaction ๊ด€๋ฆฌ์— ๋งค์šฐ ์ค‘์š”ํ•œ ๊ฒฐ์ •์„ ๊ฐ€์ ธ์˜จ๋‹ค.

 

ํšŒ๋ณต(๋ณต๊ตฌ๋ฐฉ๋ฒ•)

์‹œ์Šคํ…œ ์˜ค๋ฅ˜์™€ ๊ฐ™์€ ํŠธ๋žœ์žญ์…˜ ์™ธ๋ถ€ ์š”์ธ์œผ๋กœ ์ธํ•ด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ์— ํšŒ๋ณต์„ ํ•œ๋‹ค.
์‹œ์Šคํ…œ ์˜ค๋ฅ˜ ๋˜๋Š” ๋ฌผ๋ฆฌ์ ์ธ ๋ฌธ์ œ๋ฅผ ์‹คํŒจ(failure)๋ผ๊ณ  ํ•œ๋‹ค.

UNDO : ์›์ƒํƒœ๋กœ ๋˜๋Œ๋ฆผ

์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์ง€ ์•Š์€ transaction์ด ๋ณ€๊ฒฝํ•œ page๋“ค์€ ์›์ƒ ๋ณต๊ตฌ ๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ, ์ด ๋ณต๊ตฌ๋ฅผ undo๋ผ๊ณ  ํ•œ๋‹ค.
๋”๋ณด๊ธฐ

Buffer ๊ต์ฒด๋Š” transaction๊ณผ๋Š” ๋ฌด๊ด€ํ•˜๊ฒŒ Buffer์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ๊ฒฐ์ •๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ •๋œ Page๊ฐ€ Buffer ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋”ฐ๋ผ์„œ ๋””์Šคํฌ์— ์ถœ๋ ฅ๋  ์ˆ˜ ์žˆ์Œ.
∴ undo๋กœ ๋ณต๊ตฌ

์ˆ˜์ •๋œ ํŽ˜์ด์ง€๋ฅผ ๋””์Šคํฌ์— ์“ฐ๋Š” ์‹œ์ ์œผ๋กœ ๋ถ„๋ฅ˜

  • STEAL : ์ˆ˜์ •๋œ ํŽ˜์ด์ง€๋ฅผ ์–ธ์ œ๋“ ์ง€ ๋””์Šคํฌ์— ์“ธ ์ˆ˜ ์žˆ๋Š” ์ •์ฑ…
    • UNDO ์ž‘์—…์ด ํ•„์š”ํ•˜์ง€ ์•Š์ง€๋งŒ, ๋งค์šฐ ํฐ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ๊ฐ€ ํ•„์š”ํ•จ.
  • ¬STEAL : ์ˆ˜์ •๋œ ํŽ˜์ด์ง€๋“ค์„ EOT (End Of Transaction)๊นŒ์ง€๋Š” ๋ฒ„ํผ์— ์œ ์ง€ํ•˜๋Š” ์ •์ฑ…
    • ๋Œ€๋ถ€๋ถ„์˜ DBMS๊ฐ€ ์ฑ„ํƒํ•˜๋Š” Buffer ๊ด€๋ฆฌ ์ •์ฑ…
    • UNDO logging๊ณผ ๋ณต๊ตฌ๋ฅผ ํ•„์š”๋กœ ํ•จ.
  • ์‚ฌ์šฉ์ž๊ฐ€ ํ–ˆ๋˜ ์ž‘์—…์„ ๋ฐ˜๋Œ€๋กœ ์ง„ํ–‰ํ•ด ์›์ƒํƒœ๋กœ ๋˜๋Œ๋ฆฐ๋‹ค.

REDO : ์žฌ๋ฐ˜์˜

์ด๋ฏธ commitํ•œ transaction์˜ ์ˆ˜์ •์„ ์žฌ๋ฐ˜์˜ํ•˜๋Š” ๋ณต๊ตฌ ์ž‘์—…
๋”๋ณด๊ธฐ

Buffer ๊ด€๋ฆฌ ์ •์ฑ…์— ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค.

Transaction์ด ์ข…๋ฃŒ๋˜๋Š” ์‹œ์ ์— ํ•ด๋‹น transaction์ด ์ˆ˜์ •ํ•œ page๋ฅผ ๋””์Šคํฌ์— ์“ธ ๊ฒƒ์ธ๊ฐ€ ์•„๋‹Œ๊ฐ€๋กœ ๋ถ„๋ฅ˜

  • FORCE : ์ˆ˜์ •ํ–ˆ๋˜ ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ Transaction commit ์‹œ์ ์— disk์— ๋ฐ˜์˜
    • transaction์ด commit ๋˜์—ˆ์„ ๋•Œ ์ˆ˜์ •๋œ ํŽ˜์ด์ง€๋“ค์ด disk ์ƒ์— ๋ฐ˜์˜๋˜๋ฏ€๋กœ redo ํ•„์š” ์—†์Œ.
  • ¬FORCE : commit ์‹œ์ ์— ๋ฐ˜์˜ํ•˜์ง€ ์•Š๋Š” ์ •์ฑ…
    • transaction์ด disk ์ƒ์˜ db์— ๋ฐ˜์˜๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๊ธฐ์— redo ๋ณต๊ตฌ๊ฐ€ ํ•„์š”.
    • ๋Œ€๋ถ€๋ถ„์˜ DBMS ์ •์ฑ…
  • ์ด์ „ ์ƒํƒœ๋กœ ๋˜๋Œ์•„๊ฐ„ ํ›„, ์‹คํŒจ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์ „๊นŒ์ง€์˜ ๊ณผ์ •์„ ๊ทธ๋Œ€๋กœ ๋”ฐ๋ผ๊ฐ€๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
  • redo๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰ ๋˜๊ธฐ๊นŒ์ง€์˜ ๊ณผ์ •์„ ๊ธฐ๋กํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋ฅผ log๋ผ๊ณ  ํ•œ๋‹ค.

Check Point

  • check point๋กœ ์„ค์ •ํ•œ ์ง€์  ์ด์ „ ๊นŒ์ง€๋Š” ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰์ด ๋ผ์„œ disk์— ํ™•์‹คํžˆ ์ €์žฅ๋œ ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
  • check point๋ฅผ ์„ค์ •ํ•˜๋Š” ์ด์œ ๋Š” ์‹œ์Šคํ…œ์„ ํšŒ๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๋˜๋Œ์•„๊ฐˆ ๋•Œ, ๋„ˆ๋ฌด ๋งŽ์ด ๋˜๋Œ์•„๊ฐ€์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.
  • ๋งŒ์•ฝ ์‹คํŒจ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ํšŒ๋ณต์„ ํ•  ๋•Œ check point๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ๋‹ค๋ฉด, redo๋Š” check point ์‹œ์ ๋ถ€ํ„ฐ log๋ฅผ ๋”ฐ๋ผ๊ฐ€๋ฉด์„œ ํŠธ๋žœ์žญ์…˜์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ, undo๋Š” log๋ฅผ ๋”ฐ๋ผ๊ฐ€์ง€ ์•Š๊ณ  ํŠธ๋žœ์žญ์…˜์„ ์žฌ์ˆ˜ํ–‰ ํ•œ๋‹ค.

์˜ˆ์‹œ

  • ์‹œ์Šคํ…œ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, undo ๋ฐ์ดํ„ฐ๋„ ๋ชจ๋‘ ๋‚ ์•„๊ฐ„๋‹ค.
  • ๊ฒฐ๊ตญ redo ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด์„œ ๋งˆ์ง€๋ง‰ Check Point๋ถ€ํ„ฐ ์žฅ์• ๊นŒ์ง€ DB Buffer Cache๋ฅผ ๋ณต๊ตฌํ•˜๊ฒŒ ๋œ๋‹ค.
  • ๋ณต๊ตฌ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด undo๋ฅผ ์ด์šฉํ•˜์—ฌ Commit ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ Rollbackํ•จ์œผ๋กœ์จ ๋ณต๊ตฌ๋ฅผ ์™„๋ฃŒํ•˜๊ฒŒ ๋œ๋‹ค.
  • ๊ฒฐ๊ตญ Redo๊ฐ€ Undo๋ฅผ ๋ณต๊ตฌํ•˜๊ณ  ์ตœ์ข…์ ์œผ๋กœ Undo๊ฐ€ ๋ณต๊ตฌ๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค.

  • ํŠธ๋žœ์žญ์…˜ T1
    • check point ์ด์ „์— ์‹คํ–‰์ด ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฏ€๋กœ failure ๋˜๋”๋ผ๋„ ์ด๋ฏธ disk์— ์ €์žฅ์ด ๋œ ์ƒํƒœ์ด๋ฏ€๋กœ ํšŒ๋ณต์„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ํŠธ๋žœ์žญ์…˜ T2
    • check point ์ด์ „์— ์‹คํ–‰๋œ ๋‚ด์šฉ์€ disk์— ๋ฐ˜์˜์ด ๋˜์—ˆ์œผ๋ฏ€๋กœ check point ์ดํ›„์˜ ๋‚ด์šฉ์„ log๋ฅผ ๋”ฐ๋ผ๊ฐ€๋Š” redo๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • ํŠธ๋žœ์žญ์…˜ T3
    • failure ์‹œ์ ์— ์‹คํ–‰์ค‘์ด์˜€์œผ๋ฏ€๋กœ check point ์‹œ์ ์œผ๋กœ undoํ•œ ํ›„, ํŠธ๋žœ์žญ์…˜์„ ์žฌ์‹คํ–‰ํ•œ๋‹ค.
  • ํŠธ๋žœ์žญ์…˜ T4
    • check point ์ดํ›„์— ์‹คํ–‰๋๊ณ  failure ์‹œ์  ์ „์— ์‹คํ–‰์ด ๋๋‚ฌ์œผ๋ฏ€๋กœ redo๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • ํŠธ๋žœ์žญ์…˜ T5
    • check point ์ดํ›„์— ์‹คํ–‰๋๊ณ  failure ์‹œ์ ์— ์‹คํ–‰์ค‘์ด์˜€์œผ๋ฏ€๋กœ ์‹œ์ž‘์ง€์ ๊นŒ์ง€ undoํ•œ ํ›„, ํŠธ๋žœ์žญ์…˜์„ ์žฌ์‹คํ–‰

 

์ฐธ๊ณ 

'๐Ÿ“ŒCS > DB' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[DB] ํŠธ๋žœ์žญ์…˜ ์ „ํŒŒ ์„ค์ •  (0) 2021.05.02
[DB] ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€(Transaction Isolation Level)  (0) 2021.04.23
[DB] ์บ์‹œ, Redis  (0) 2021.04.18
[DB] Connection Pool  (0) 2021.04.18
[DB] ์ •๊ทœํ™”  (0) 2021.04.11

๋Œ“๊ธ€