ํŠธ๋žœ์žญ์…˜(Transaction)๊ณผ ACID

์•ž์—์„œ RDB๋Š” ๋ฌด์Šจ ์ผ์ด ์žˆ์–ด๋„ ๋ฐ์ดํ„ฐ๋Š” ์ •์ƒ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•œ๋‹ค๊ณ  ํ•˜์˜€๋‹ค.

๊ทธ๊ฑธ ์–ด๋–ป๊ฒŒ?

๋ฐ”๋กœ ๊ทธ ํ•ต์‹ฌ์ด ํŠธ๋žœ์žญ์…˜(Transaction)๊ณผ ACID ์›์น™์ด๋‹ค.


ํŠธ๋žœ์žญ์…˜(Transaction)์ด๋ž€?

ํŠธ๋žœ์žญ์…˜ : ํ•˜๋‚˜์˜ ์ž‘์—… ๋‹จ์œ„๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ์ „๋ถ€ ์„ฑ๊ณตํ•˜๊ฑฐ๋‚˜ ์ „๋ถ€ ์‹คํŒจํ•ด์•ผ ํ•˜๋Š” ์—ฐ์‚ฐ

์–ด๋ ค์›Œ ๋ณด์ด์ง€๋งŒ ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜๋ฉด โ€œ๋ฌถ์Œ์ฒ˜๋ฆฌโ€์ธ ์…ˆ์ด๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด A๊ฐ€ B์—๊ฒŒ 10๋งŒ์›์„ ๊ณ„์ขŒ์ด์ฒดํ•˜์˜€์„ ๋•Œ ์•„๋ž˜์™€ ๊ฐ™์€ ๋‹จ๊ณ„๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.

  1. A ๊ณ„์ขŒ์—์„œ 10๋งŒ์› ์ถœ๊ธˆ
  2. B ๊ณ„์ขŒ์— 10๋งŒ์› ์ž…๊ธˆ


ํ•˜์ง€๋งŒ A ๊ณ„์ขŒ์—์„œ๋Š” ๋ˆ์ด ๋น ์กŒ๋Š”๋ฐ B ๊ณ„์ขŒ์—๋Š” ๋ˆ์ด ์•ˆ ๋“ค์–ด๊ฐ”๋‹ค๋ฉด?
๋ˆ์ด ์‚ฌ๋ผ์ง„๊ฑฐ๋‹ค..์ด๊ฑด ์ ˆ๋Œ€ ์ผ์–ด๋‚˜์„œ๋Š” ์•ˆ๋˜๋Š” ์ƒํ™ฉ์ด๋‹ค

๊ทธ๋ž˜์„œ ํŠธ๋žœ์žญ์…˜์€ ๋‘˜ ๋‹ค ์„ฑ๊ณตํ•˜๋ฉด ์ €์žฅ / ํ•˜๋‚˜๋ผ๋„ ์‹คํŒจํ•˜๋ฉด ์ „๋ถ€ ์ทจ์†Œ
์ด๋Ÿฐ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

์ฆ‰ ๋ถ€๋ถ„ ์„ฑ๊ณต์ด๋ผ๋Š” ๊ฐœ๋… ์ž์ฒด๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.


ACID ์›์น™์ด๋ž€?


ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•ด ๋ฐฐ์šธ๋•Œ ๋ฌด์กฐ๊ฑด ํ•œ๋ฒˆ์”ฉ ๋“ฃ๊ฒŒ๋˜๋Š” ๊ฐœ๋…์ด๋‹ค.

ACID = Atomicity + Consistency + Isolation + Durability

ํŠธ๋žœ์žญ์…˜์ด ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์ง€์ผœ์•ผ ํ•˜๋Š” ๊ทœ์น™

ACID ๊ฐ๊ฐ 4๊ฐ€์ง€ ํŠน์„ฑ์—์„œ ์ฒซ๊ธ€์ž๋ฅผ ๋”ฐ์™€์„œ ACID๋ผ๊ณ  ํ•˜๋Š”๋ฐ ํ•˜๋‚˜์”ฉ ์„ค๋ช…ํ•ด๋ณด๊ฒ ๋‹ค.

1๏ธโƒฃ Atomicity (์›์ž์„ฑ)


์•„๊นŒ ๊ณ„์ขŒ ์ด์ฒด์—์„œ ์„ค๋ช…ํ•œ ๋ถ€๋ถ„์ด๋‹ค.
โ€œ์ „๋ถ€ ์‹คํ–‰๋˜๊ฑฐ๋‚˜ ์ „๋ถ€ ์‹คํ–‰๋˜์ง€ ์•Š๊ฑฐ๋‚˜โ€
๋ชจ๋‘ ์„ฑ๊ณต ์‹œ์—๋Š” ์ปค๋ฐ‹์„, ํ•˜๋‚˜๋ผ๋„ ์‹คํŒจ ์‹œ ๋กค๋ฐฑ์„

์ฆ‰ ํŠธ๋žœ์žญ์…˜์€ ์ž‘์—…์ด ์ชผ๊ฐœ์ง€์ง€์•Š๊ณ  ์›์ž์ ์ด์—ฌ์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

2๏ธโƒฃ Consistency (์ผ๊ด€์„ฑ)


ํŠธ๋žœ์žญ์…˜ ์ „ํ›„ ๋ฐ์ดํ„ฐ๋Š” ํ•ญ์ƒ ์˜ฌ๋ฐ”๋ฅธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ž”์•ก์ด ์Œ์ˆ˜๊ฐ€ ๋˜๋ฉด ์•ˆ ๋œ๋‹ค๋˜๊ฐ€, ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ณ„์ขŒ์— ์†ก๊ธˆํ•˜๋ฉด ์•ˆ ๋œ๋‹ค.

์ด๊ฑด DB๊ฐ€ ์ œ์•ฝ์กฐ๊ฑด์œผ๋กœ ๋ง‰๋Š”๋‹ค.

balance >= 0 ๊ฐ™์€ ๊ทœ์น™์ด ๊นจ์ง€๋ฉด ์•„์˜ˆ ์ €์žฅ์ด ์•ˆ ๋œ๋‹ค.

์ฆ‰ ์ด์ƒํ•œ ๋ฐ์ดํ„ฐ ์ž์ฒด๋ฅผ ๋ชป ๋„ฃ๊ฒŒ ํ•œ๋‹ค.

3๏ธโƒฃ Isolation (๊ฒฉ๋ฆฌ์„ฑ)


๋™์‹œ์— ์‹คํ–‰๋ผ๋„ ์„œ๋กœ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด A ๊ณ„์ขŒ์— 100๋งŒ์›์ด ์žˆ๋Š”๋ฐ, ๋‘ ์‚ฌ๋žŒ์ด ๋™์‹œ์— ์ถœ๊ธˆํ•˜๋ฉด?

๋‘˜ ๋‹ค 100๋งŒ์› ๋ณด๊ณ  ๋ˆ ๋นผ๋ฒ„๋ฆด ์ˆ˜ ์žˆ๋‹ค

๊ทธ๋Ÿฌ๋ฉด? ๋ฐ์ดํ„ฐ๊ฐ€ ๊ผฌ์ธ๋‹ค.

๊ทธ๋ž˜์„œ DB๋Š” SELECT โ€ฆ FOR UPDATE ๊ฐ™์€ ๊ฑธ๋กœ ์ž ๊ธˆ์„ ๊ฑด๋‹ค.
๋‚ด๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜ ๋ชป ๊ฑด๋“œ๋ฆฐ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ฆ‰ ๊ฐ ์ž‘์—…์„ ๋”ฐ๋กœ ๊ฒฉ๋ฆฌํ•ด์„œ ์‹คํ–‰ํ•œ๋‹ค.

4๏ธโƒฃ Durability (์ง€์†์„ฑ)


ํ•œ ๋ฒˆ ์ €์žฅ๋˜๋ฉด ์ ˆ๋Œ€ ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š”๋‹ค.

COMMIT์ด ๋๋‚˜๋ฉด ์„œ๋ฒ„ ๊บผ์ ธ๋„, DB ํ„ฐ์ ธ๋„ ๋ฐ์ดํ„ฐ๋Š” ๋‚จ์•„ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
๊ทธ๋ž˜์„œ DB๋Š” ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธฐ๊ณ  ๋””์Šคํฌ์— ๊ธฐ๋กํ•œ๋‹ค.

์ฆ‰ ์ €์žฅ๋์œผ๋ฉด ๋๊นŒ์ง€ ์ฑ…์ž„์ง„๋‹ค.


๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์„œ ํ•œ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.

๊ณ ๋ฆฝ์„ฑ ๋ถ€๋ถ„์—์„œ ๋‚ด๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜ ๋ชป ๊ฑด๋“œ๋ฆฐ๋‹ค๋ฉด, ๋ฐ์ดํ„ฐ ๋งŽ์•„์ง€๋ฉด ์—„์ฒญ ๋А๋ ค์ง€์ง€ ์•Š์„๊นŒ??

ใ…‡ใ…‡ ๋งž๋‹ค.

๊ฒฉ๋ฆฌ์„ฑ์„ ๊ฐ•ํ•˜๊ฒŒ ์œ ์ง€ํ• ์ˆ˜๋ก ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๊ณ  ๊ฒฐ๊ตญ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง„๋‹ค.

๋ฐ์ดํ„ฐ๋Š” ์•ˆ์ „ํ•˜์ง€๋งŒ ์„ฑ๋Šฅ์ด ๋А๋ ค์ง€๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ž˜์„œ DB๋Š” ๊ฒฉ๋ฆฌ ์ˆ˜์ค€(Isolation Level)์ด๋ผ๋Š” ๊ฐœ๋…์„ ํ†ตํ•ด ์„ฑ๋Šฅ๊ณผ ์•ˆ์ •์„ฑ ์‚ฌ์ด์—์„œ ๊ท ํ˜•์„ ๋งž์ถ˜๋‹ค.


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


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

๊ฒฉ๋ฆฌ ์ˆ˜์ค€ 4๋‹จ๊ณ„ ๊ตฌ์กฐ

์‚ฌ์ง„์„ ๋ณด๋ฉด ์œ„์—์„œ๋ถ€ํ„ฐ READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE ์ด 4๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•œ๋‹ค.
์œ„๋กœ ์˜ฌ๋ผ๊ฐˆ ์ˆ˜๋ก ์†๋„๋Š” ๋นจ๋ผ์ง€์ง€๋งŒ ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ๋ชปํ•˜๊ณ , ์•„๋ž˜๋กœ ๋‚ด๋ ค์˜ฌ์ˆ˜๋ก ํŠธ๋žœ์žญ์…˜์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ์†๋„๋Š” ๋А๋ ค์ง€์ง€๋งŒ, ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค๋Š”๋ฐ ์ž์„ธํžˆ ์•Œ์•„๋ณด์ž.

1๏ธโƒฃ READ UNCOMMITTED

๊ฐ€์žฅ ๋‚ฎ์€ ์ˆ˜์ค€์ด๋‹ค. ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์•„์ง COMMIT๋„ ์•ˆ ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด DB์—๋Š” 10๋งŒ์›์ด ๋“ค์–ด์žˆ๋Š” ๊ณ„์ขŒ๊ฐ€ ์žˆ๋‹ค์น˜์ž.

ํŠธ๋žœ์žญ์…˜ A โ†’ ๊ธˆ์•ก +5๋งŒ์› (์•„์ง COMMIT ์•ˆ ํ•จ) โ†’ DB ๋‚ด๋ถ€ ์ƒํƒœ: 15๋งŒ์›
์ด๋•Œ ํŠธ๋žœ์žญ์…˜ B๊ฐ€ ์กฐํšŒํ•˜๋ฉด? โ†’ 15๋งŒ์›์„ ์ฝ๋Š”๋‹ค (์•„์ง ํ™•์ •๋˜์ง€ ์•Š์€ ๊ฐ’)

๊ทผ๋ฐ A๊ฐ€ ๋‚˜์ค‘์— ROLLBACK ํ•˜๋ฉด?? โ†’ ์‹ค์ œ DB๋Š” ๋‹ค์‹œ 10๋งŒ์›์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค.
B๋Š” ์กด์žฌํ•˜์ง€๋„ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด๋ฒ„๋ฆฐ๊ฑฐ๋‹ค.

์ด๊ฑธ Dirty Read๋ผ๊ณ  ํ•œ๋‹ค.
์ด๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด..์ปค๋ฐ‹๋œ ๋ฐ์ดํ„ฐ๋งŒ ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ฉด ๋˜๋Š”๊ฑฐ๋‹ค.

2๏ธโƒฃ READ COMMITTED

์œ„์—์„œ ๋งํ•œ ์ปค๋ฐ‹๋œ ๋ฐ์ดํ„ฐ๋งŒ ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ์„ค์ •ํ•œ ๊ฒƒ์ด๋‹ค.

์ด๋ฅผ ํ†ตํ•ด Dirty Read๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์•„์ง ๋ฌธ์ œ๋Š” ๋‚จ์•„์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด DB ์ดˆ๊ธฐ ์ƒํƒœ: 10๋งŒ์›์ผ๋•Œ
ํŠธ๋žœ์žญ์…˜ B โ†’ ์ฒ˜์Œ ์กฐํšŒ โ†’ 10๋งŒ์›
๊ทธ ์‚ฌ์ด์— ํŠธ๋žœ์žญ์…˜ A โ†’ +5๋งŒ์› ํ›„ COMMIT โ†’ DB ์ƒํƒœ: 15๋งŒ์›
๋‹ค์‹œ ํŠธ๋žœ์žญ์…˜ B๊ฐ€ ์กฐํšŒํ•˜๋ฉด? โ†’ ์ด๋ฒˆ์—๋Š” 15๋งŒ์›์ด ๋‚˜์˜จ๋‹ค

์ฆ‰ ๊ฐ™์€ ํŠธ๋žœ์žญ์…˜ ์•ˆ์—์„œ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ๋‘ ๋ฒˆ ์‹คํ–‰ํ–ˆ๋Š”๋ฐ ๊ฐ’์ด ๋ฐ”๋€๋‹ค..

์ด๊ฑธ Non-Repeatable Read๋ผ๊ณ  ํ•˜๋Š”๋ฐ ์ด๋ฌธ์ œ๋Š” ๋˜ ๋‹ค์Œ ๊ณ ๋ฆฝ ์ˆ˜์ค€์—์„œ ํ•ด๊ฒฐ๊ฐ€๋Šฅํ•˜๋‹ค.

3๏ธโƒฃ REPEATABLE READ

ํ•œ ํŠธ๋žœ์žญ์…˜ ์•ˆ์—์„œ๋Š” ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ญ์ƒ ๋™์ผํ•˜๊ฒŒ ์ฝ๋„๋ก ๋ณด์žฅํ•˜๋Š” ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ด๋‹ค.

์•„๊นŒ ๋ฌธ์ œ์˜€๋˜ ์ƒํ™ฉ์„ ๋‹ค์‹œ ๋ณด์ž

DB ์ดˆ๊ธฐ ์ƒํƒœ: 10๋งŒ์›
ํŠธ๋žœ์žญ์…˜ B (์ฒ˜์Œ ์กฐํšŒ) โ†’ 10๋งŒ์›
๊ทธ ์‚ฌ์ด์— ํŠธ๋žœ์žญ์…˜ A โ†’ +5๋งŒ์› ํ›„ COMMIT โ†’ DB ์ƒํƒœ: 15๋งŒ์›
์ด ์ƒํƒœ์—์„œ ํŠธ๋žœ์žญ์…˜ B๊ฐ€ ๋‹ค์‹œ ์กฐํšŒํ•˜๋ฉด -> ์—ฌ์ „ํžˆ 10๋งŒ์›์ด ๋‚˜์˜จ๋‹ค

์ฆ‰ ๊ฐ™์€ ํŠธ๋žœ์žญ์…˜ ์•ˆ์—์„œ๋Š” ๊ฐ’์ด ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.

ํ•˜์ง€๋งŒ ์•„์ง ๋ฌธ์ œ๊ฐ€ ํ•˜๋‚˜ ๋‚จ์•˜๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์กฐ๊ฑด ์กฐํšŒ๋ฅผ ํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž
ํŠธ๋žœ์žญ์…˜ B โ†’ ์ž”์•ก์ด 10๋งŒ์› ์ด์ƒ์ธ ๊ณ„์ขŒ ์กฐํšŒ โ†’ ์ฒ˜์Œ ๊ฒฐ๊ณผ: 1๊ฐœ
๊ทธ ์‚ฌ์ด์— ํŠธ๋žœ์žญ์…˜ A โ†’ ์ƒˆ๋กœ์šด ๊ณ„์ขŒ ์ถ”๊ฐ€ (์ž”์•ก 20๋งŒ์›) ํ›„ COMMIT
๋‹ค์‹œ ํŠธ๋žœ์žญ์…˜ B๊ฐ€ ๊ฐ™์€ ์กฐ๊ฑด์œผ๋กœ ์กฐํšŒํ•˜๋ฉด โ†’ ๊ฒฐ๊ณผ๊ฐ€ 2๊ฐœ๊ฐ€ ๋œ๋‹ค
์—†๋˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ‘์ž๊ธฐ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์ด๋‹ค..

์ด๊ฑธ Phantom Read๋ผ๊ณ  ํ•œ๋‹ค.
Non-Repeatable-Read์˜ ํ•œ ์ข…๋ฅ˜๋กœ, ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ๊ธฐ๊ฑฐ๋‚˜, ๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์ง€๋Š” ๋ฌธ์ œ๋ฅผ ๋งํ•œ๋‹ค.

๊ทผ๋ฐ ์ดํ•ด๊ฐ€ ์•ˆ๋˜๋Š” ๋ถ€๋ถ„์ด ์ƒ๊ธด๋‹ค.. ๊ฐ™์€ ํŠธ๋žœ์žญ์…˜์ด ์•„๋‹ˆ๋‹ˆ๊นŒ(COMMIT ํ›„๋‹ˆ๊นŒ) ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ๋˜๋Š”๊ฑฐ ์•„๋‹Œ๊ฐ€?

ใ…‡ใ…‡ ๋งž๋Š” ๋ง์ด๋‹ค. ์‹ค์ œ๋กœ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ”๋€Œ๋Š” ๊ฒŒ ์ž์—ฐ์Šค๋Ÿฝ๋‹ค.

๊ทธ๋Ÿผ ์™œ ์ด๊ฑธ ๋ฌธ์ œ๋กœ ๋ณด๋Š” ๊ฑธ๊นŒ?

ํ•ต์‹ฌ์€ โ€œ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๋€Œ์—ˆ๋ƒโ€๊ฐ€ ์•„๋‹ˆ๋ผ โ€œ๊ฐ™์€ ํŠธ๋žœ์žญ์…˜ ์•ˆ์—์„œ ์กฐํšŒ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์กŒ๋ƒโ€๋‹ค..

ํŠธ๋žœ์žญ์…˜์€ ๋‹จ์ˆœํ•œ ์ฟผ๋ฆฌ ํ•˜๋‚˜๊ฐ€ ์•„๋‹ˆ๋ผ ํ•˜๋‚˜์˜ ์ž‘์—… ๋‹จ์œ„๋‹ค.
์ฆ‰ ํŠธ๋žœ์žญ์…˜ B ์ž…์žฅ์—์„œ๋Š” ์ฒซ ๋ฒˆ์งธ ์กฐํšŒ ๊ฒฐ๊ณผ: 1๊ฐœ, ๋‘ ๋ฒˆ์งธ ์กฐํšŒ ๊ฒฐ๊ณผ: 2๊ฐœ โ†’ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ๋Š”๋ฐ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ”๋€Œ์–ด๋ฒ„๋ฆฐ ๊ฒƒ์ด๋‹ค..

์ฆ‰ REPEATABLE READ๋Š” โ€œ์ด๋ฏธ ์ฝ์€ ๋ฐ์ดํ„ฐโ€๋Š” ๋ณดํ˜ธํ•˜์ง€๋งŒ, โ€œ์กฐ๊ฑด์— ์˜ํ•ด ์กฐํšŒ๋˜๋Š” ์ „์ฒด ๋ฒ”์œ„โ€๊นŒ์ง€๋Š” ๋ณดํ˜ธํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์„ ์ฝ๋Š” ๊ฑด ์ •์ƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๊ฒŒ ๋‚ด ์ž‘์—… ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”๊พธ๋‹ˆ๊นŒ ๋ฌธ์ œ์ธ ๊ฒƒ์ด๋‹ค.

4๏ธโƒฃ SERIALIZABLE

๊ฐ€์žฅ ๋†’์€ ์ˆ˜์ค€์ด๋‹ค. ํŠธ๋žœ์žญ์…˜์„ ๋งˆ์น˜ ํ•˜๋‚˜์”ฉ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ฒ˜๋ฆฌํ•œ๋‹ค.

์œ„์™€ ๊ฐ™์€ ์ƒํ™ฉ์ผ๋•Œ, ํŠธ๋žœ์žญ์…˜ B๊ฐ€ ์กฐํšŒ๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ๊ทธ ๋™์•ˆ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜(A)์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†๋‹ค. SELECT ์กฐ๊ฑด ์ž์ฒด์— ์ž ๊ธˆ์„ ๊ฑธ์–ด, ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๊ฐ€ ๋ผ์–ด๋“ค ์ˆ˜ ์—†๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ž˜์„œ Phantom Read๊นŒ์ง€ ๋ชจ๋‘ ๋ฐฉ์ง€๋œ๋‹ค.
๋ฐ์ดํ„ฐ๊ฐ€ ๊ผฌ์ผ ์ผ์ด ์•„์˜ˆ ์—†๋‹ค๋Š” ๊ฑฐ๋‹ค.
ํ•˜์ง€๋งŒ ๊ทธ๋งŒํผ ์„ฑ๋Šฅ์ด ๋งค์šฐ ๋А๋ฆฌ๋‹ค..

์ตœ์ข…์ ์œผ๋กœ ์ •๋ฆฌ๋ฅผ ํ•˜์ž๋ฉด

  • READ UNCOMMITTED โ†’ Dirty Read ๋ฐœ์ƒ
  • READ COMMITTED โ†’ Dirty Read ํ•ด๊ฒฐ (ํ•˜์ง€๋งŒ ๊ฐ’ ๋ฐ”๋€œ)
  • REPEATABLE READ โ†’ ๊ฐ’ ์œ ์ง€ (ํ•˜์ง€๋งŒ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ์ƒ๊น€)
  • SERIALIZABLE โ†’ ์™„๋ฒฝํ•˜์ง€๋งŒ ๋А๋ฆผ



์‹ค๋ฌด์—์„œ ์‚ฌ์šฉ

๊ทธ๋ž˜์„œ ์‹ค๋ฌด์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ์“ธ๊นŒ??

๋Œ€๋ถ€๋ถ„ ๊ธฐ๋ณธ์€ READ COMMITTED ๋˜๋Š” REPEATABLE READ์ด๋‹ค.
์„ฑ๋Šฅ ๊ดœ์ฐฎ๊ณ  ๋Œ€๋ถ€๋ถ„ ๋ฌธ์ œ ์—†์ด ๋™์ž‘ํ•˜๋‹ˆ๊นŒ.
ํ•˜์ง€๋งŒ ์ •๋ง ์ค‘์š”ํ•œ ๊ฒฝ์šฐ(๊ธˆ์œต, ๊ฒฐ์ œ ๋“ฑ)์—๋Š” SERIALIZABLE ์‚ฌ์šฉํ•œ๋‹ค.

๊ฒฉ๋ฆฌ์„ฑ์€ ๋ฌด์กฐ๊ฑด ๋†’๋‹ค๊ณ  ์ข‹์€ ๊ฒŒ ์•„๋‹ˆ๋ผ ์„œ๋น„์Šค ์ƒํ™ฉ์— ๋งž๊ฒŒ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ด๋‹ค.

ํƒœ๊ทธ: , ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: