Skip to content

Latest commit

ย 

History

History
159 lines (88 loc) ยท 4.71 KB

File metadata and controls

159 lines (88 loc) ยท 4.71 KB

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


ํŠธ๋ Œ์žญ์…˜์ด๋ž€?

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—… ๋‹จ์œ„


์ƒํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚จ๋‹ค๋Š” ๊ฒƒ โ†’ SQL ์งˆ์˜์–ด๋ฅผ ํ†ตํ•ด DB์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ

- SELECT
- INSERT
- DELETE
- UPDATE

์ž‘์—… ๋‹จ์œ„ โ†’ ๋งŽ์€ SQL ๋ช…๋ น๋ฌธ๋“ค์„ ์‚ฌ๋žŒ์ด ์ •ํ•˜๋Š” ๊ธฐ์ค€์— ๋”ฐ๋ผ ์ •ํ•˜๋Š” ๊ฒƒ

์˜ˆ์‹œ) ์‚ฌ์šฉ์ž A๊ฐ€ ์‚ฌ์šฉ์ž B์—๊ฒŒ ๋งŒ์›์„ ์†ก๊ธˆํ•œ๋‹ค.

* ์ด๋•Œ DB ์ž‘์—…
- 1. ์‚ฌ์šฉ์ž A์˜ ๊ณ„์ขŒ์—์„œ ๋งŒ์›์„ ์ฐจ๊ฐํ•œ๋‹ค : UPDATE ๋ฌธ์„ ์‚ฌ์šฉํ•ด ์‚ฌ์šฉ์ž A์˜ ์ž”๊ณ ๋ฅผ ๋ณ€๊ฒฝ
- 2. ์‚ฌ์šฉ์ž B์˜ ๊ณ„์ขŒ์— ๋งŒ์›์„ ์ถ”๊ฐ€ํ•œ๋‹ค : UPDATE ๋ฌธ์„ ์‚ฌ์šฉํ•ด ์‚ฌ์šฉ์ž B์˜ ์ž”๊ณ ๋ฅผ ๋ณ€๊ฒฝ

ํ˜„์žฌ ์ž‘์—… ๋‹จ์œ„ : ์ถœ๊ธˆ UPDATE๋ฌธ + ์ž…๊ธˆ UPDATE๋ฌธ
โ†’ ์ด๋ฅผ ํ†ตํ‹€์–ด ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด๋ผ๊ณ  ํ•œ๋‹ค.
- ์œ„ ๋‘ ์ฟผ๋ฆฌ๋ฌธ ๋ชจ๋‘ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์–ด์•ผ๋งŒ "ํ•˜๋‚˜์˜ ์ž‘์—…(ํŠธ๋žœ์žญ์…˜)"์ด ์™„๋ฃŒ๋˜๋Š” ๊ฒƒ์ด๋‹ค. `Commit`
- ์ž‘์—… ๋‹จ์œ„์— ์†ํ•˜๋Š” ์ฟผ๋ฆฌ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์‹คํŒจํ•˜๋ฉด ๋ชจ๋“  ์ฟผ๋ฆฌ๋ฌธ์„ ์ทจ์†Œํ•˜๊ณ  ์ด์ „ ์ƒํƒœ๋กœ ๋Œ๋ ค๋†“์•„์•ผํ•œ๋‹ค. `Rollback`


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


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


  • ์›์ž์„ฑ(Atomicity)

    ํŠธ๋žœ์žญ์…˜์ด DB์— ๋ชจ๋‘ ๋ฐ˜์˜๋˜๊ฑฐ๋‚˜, ํ˜น์€ ์ „ํ˜€ ๋ฐ˜์˜๋˜์ง€ ์•Š์•„์•ผ ๋œ๋‹ค.

  • ์ผ๊ด€์„ฑ(Consistency)

    ํŠธ๋žœ์žญ์…˜์˜ ์ž‘์—… ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋Š” ํ•ญ์ƒ ์ผ๊ด€์„ฑ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

  • ๋…๋ฆฝ์„ฑ(Isolation)

    ๋‘˜ ์ด์ƒ์˜ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ๋ณ‘ํ–‰ ์‹คํ–‰๋˜๊ณ  ์žˆ์„ ๋•Œ, ์–ด๋–ค ํŠธ๋žœ์žญ์…˜๋„ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜ ์—ฐ์‚ฐ์— ๋ผ์–ด๋“ค ์ˆ˜ ์—†๋‹ค.

  • ์ง€์†์„ฑ(Durability)

    ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฉด, ๊ฒฐ๊ณผ๋Š” ์˜๊ตฌ์ ์œผ๋กœ ๋ฐ˜์˜๋˜์–ด์•ผ ํ•œ๋‹ค.


Commit

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


Rollback

ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๊ฐ€ ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด ํŠธ๋žœ์žญ์…˜ ์›์ž์„ฑ์ด ๊นจ์ง„ ๊ฒฝ์šฐ

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


์ƒํ™ฉ์ด ์ฃผ์–ด์ง€๋ฉด DB ์ธก๋ฉด์—์„œ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„์ง€ ๋Œ€๋‹ตํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ




Transaction ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ DBMS์˜ ์ „๋žต

์ดํ•ด๋ฅผ ์œ„ํ•œ 2๊ฐ€์ง€ ๊ฐœ๋… : DBMS์˜ ๊ตฌ์กฐ / Buffer ๊ด€๋ฆฌ ์ •์ฑ…


  1. DBMS์˜ ๊ตฌ์กฐ

ํฌ๊ฒŒ 2๊ฐ€์ง€ : Query Processor (์งˆ์˜ ์ฒ˜๋ฆฌ๊ธฐ), Storage System (์ €์žฅ ์‹œ์Šคํ…œ)

์ž…์ถœ๋ ฅ ๋‹จ์œ„ : ๊ณ ์ • ๊ธธ์ด์˜ page ๋‹จ์œ„๋กœ disk์— ์ฝ๊ฑฐ๋‚˜ ์“ด๋‹ค.

์ €์žฅ ๊ณต๊ฐ„ : ๋น„ํœ˜๋ฐœ์„ฑ ์ €์žฅ ์žฅ์น˜์ธ disk์— ์ €์žฅ, ์ผ๋ถ€๋ถ„์„ Main Memory์— ์ €์žฅ


  1. Page Buffer Manager or Buffer Manager

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

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


  1. UNDO

ํ•„์š”ํ•œ ์ด์œ  : ์ˆ˜์ •๋œ Page๋“ค์ด **Buffer ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋”ฐ๋ผ์„œ ๋””์Šคํฌ์— ์ถœ๋ ฅ**๋  ์ˆ˜ ์žˆ์Œ. Buffer ๊ต์ฒด๋Š” transaction๊ณผ๋Š” ๋ฌด๊ด€ํ•˜๊ฒŒ buffer์˜ ์ƒํƒœ์— ๋”ฐ๋ผ์„œ, ๊ฒฐ์ •๋จ. ์ด๋กœ ์ธํ•ด, ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์ง€ ์•Š์€ transaction์ด ๋ณ€๊ฒฝํ•œ page๋“ค์€ ์›์ƒ ๋ณต๊ตฌ ๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ, ์ด ๋ณต๊ตฌ๋ฅผ undo๋ผ๊ณ  ํ•จ.

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

    steal : ์ˆ˜์ •๋œ ํŽ˜์ด์ง€๋ฅผ ์–ธ์ œ๋“ ์ง€ ๋””์Šคํฌ์— ์“ธ ์ˆ˜ ์žˆ๋Š” ์ •์ฑ…

    • ๋Œ€๋ถ€๋ถ„์˜ DBMS๊ฐ€ ์ฑ„ํƒํ•˜๋Š” Buffer ๊ด€๋ฆฌ ์ •์ฑ…
    • UNDO logging๊ณผ ๋ณต๊ตฌ๋ฅผ ํ•„์š”๋กœ ํ•จ.

    ยฌsteal : ์ˆ˜์ •๋œ ํŽ˜์ด์ง€๋“ค์„ EOT (End Of Transaction)๊นŒ์ง€๋Š” ๋ฒ„ํผ์— ์œ ์ง€ํ•˜๋Š” ์ •์ฑ…

    • UNDO ์ž‘์—…์ด ํ•„์š”ํ•˜์ง€ ์•Š์ง€๋งŒ, ๋งค์šฐ ํฐ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ๊ฐ€ ํ•„์š”ํ•จ.

  1. REDO

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

Buffer ๊ด€๋ฆฌ ์ •์ฑ…์— ์˜ํ–ฅ์„ ๋ฐ›์Œ

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


    FORCE : ์ˆ˜์ •ํ–ˆ๋˜ ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ Transaction commit ์‹œ์ ์— disk์— ๋ฐ˜์˜

    transaction์ด commit ๋˜์—ˆ์„ ๋•Œ ์ˆ˜์ •๋œ ํŽ˜์ด์ง€๋“ค์ด disk ์ƒ์— ๋ฐ˜์˜๋˜๋ฏ€๋กœ redo ํ•„์š” ์—†์Œ.


    ยฌFORCE : commit ์‹œ์ ์— ๋ฐ˜์˜ํ•˜์ง€ ์•Š๋Š” ์ •์ฑ…

    transaction์ด disk ์ƒ์˜ db์— ๋ฐ˜์˜๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๊ธฐ์— redo ๋ณต๊ตฌ๊ฐ€ ํ•„์š”. (๋Œ€๋ถ€๋ถ„์˜ DBMS ์ •์ฑ…)



[์ฐธ๊ณ ์‚ฌํ•ญ]