JiwonDev

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

by JiwonDev

# ๋ฌด๊ฒฐ์„ฑ๊ณผ ์ •ํ•ฉ์„ฑ

๋ฌด๊ฒฐ์„ฑ(Integrity) : ํ ์ด ์—†์ด ์˜จ์ „ํ•จ. ๋ฐ์ดํ„ฐ ๊ฐ’์ด ์ •ํ™•ํ•œ ์ƒํƒœ์ธ๊ฐ€? ์ด์ƒํ•œ ๊ฐ’์ด ์•„๋‹Œ๊ฐ€?

์ •ํ•ฉ์„ฑ(Consistency) : ๋ชจ๋“  ํŠธ๋žœ์žญ์…˜์—์„œ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๊ฐ’์ด ๋ชจ์ˆœ ์—†์ด ์ผ์น˜ํ•œ๊ฐ€?

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ๊ณผ ์ •ํ•ฉ์„ฑ์„ ์ง€ํ‚ค๊ธฐ์œ„ํ•ด ํƒ€์ž…๋งˆ๋‹ค ๋‹ค๋ฅธ '์ œ์•ฝ์กฐ๊ฑด'์„ ๊ฑธ์–ด ์‚ฌ์šฉํ•œ๋‹ค.

http://www.gurubee.net/lecture/3583

 


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

ํŠธ๋žœ์žญ์…˜์—์„œ ์ผ๊ด€์„ฑ์ด ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ์ˆ˜์ค€. ๊ตฌ์ฒด์ ์œผ๋กœ ๋งํ•˜์ž๋ฉด ๋™์‹œ์— ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ์ฒ˜๋ฆฌ ๋  ๋•Œ, A ํŠธ๋žœ์žญ์…˜์ด BํŠธ๋žœ์žญ์…˜์—์„œ [๋ณ€๊ฒฝ&์กฐํšŒํ•˜๋Š” ๋ฐ์ดํ„ฐ]๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ• ์ง€ ๋ง์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์ˆ˜์ค€์„ ์˜๋ฏธํ•œ๋‹ค.

 

ํŠธ๋žœ์žญ์…˜์€ ์›์ž์ ์ด๋ฉด์„œ ๋…๋ฆฝ์ ์ธ ์ˆ˜ํ–‰์„ ํ•ด์•ผํ•œ๋‹ค.(ACID) ๊ทธ๋ž˜์„œ ํŠธ๋žœ์žญ์…˜์ด DB๋ฅผ ๋‹ค๋ฃจ๋Š” ๋™์•ˆ, ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ๊ด€์—ฌ ๋ชปํ•˜๊ฒŒ Locking์„ ํ•ด์•ผํ•˜๋Š”๋ฐ, ๋ฌด์ž‘์ • ๋‹ค ์ž ๊ทธ๊ฒŒ๋˜๋ฉด DB์˜ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ๋–จ์–ด์ง„๋‹ค. ์–ด๋””๊นŒ์ง€ ์ž ๊ธ€ ๊ฒƒ์ธ๊ฐ€ ์ •ํ•˜๋Š” ๊ฒƒ์ด ํŠธ๋žœ์žญ์…˜์˜ ๊ฒฉ๋ฆฌ์ˆ˜์ค€์ด๋‹ค.

 


# Shared Lock ๊ณผ Exclusive Lock

  • ์ด ๋‘๊ฐ€์ง€๋ฅผ ํ…Œ์ด๋ธ”์˜ row(๋ฐ์ดํ„ฐ)๋งˆ๋‹ค ๊ฑธ๋ฆฌ๋Š” row-level lock์ด๋ผ๊ณ  ํ•œ๋‹ค.
  • Shared Lock(S lock): ์ฝ๊ธฐ, ๊ณต์œ ์— ๋Œ€ํ•œ lock
  • Exclusive Lock(X lock): ์ƒํ˜ธ๋ฒ ํƒ€์ ์ธ lock, ์ฆ‰ ์“ฐ๊ธฐ์— ๋Œ€ํ•œ lock

์‰ฝ๊ฒŒ๋งํ•ด Shared lock์„ ์‚ฌ์šฉํ•˜๋Š” ์ฟผ๋ฆฌ๋ผ๋ฆฌ๋Š” ๊ฐ™์€ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค. ํ•˜์ง€๋งŒ Exclusive lock์ด ๊ฑธ๋ฆฐ ๋ฐ์ดํ„ฐ๋Š” ๋‹ค๋ฅธ ์–ด๋– ํ•œ ์ฟผ๋ฆฌ๋„ ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.


# ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ์ˆ˜์ค€ 4๋‹จ๊ณ„

๊ธฐ๋ณธ์ ์œผ๋กœ ๋ ˆ๋ฒจ์ด ์ฆ๊ฐ€ํ•  ์ˆ˜๋ก lock์˜ ๋ฒ”์œ„๊ฐ€ ์ปค์ ธ ๋™์‹œ ์ฒ˜๋ฆฌ์„ฑ๋Šฅ์€ ๋–จ์–ด์ง€๊ณ  ๋ฌด๊ฒฐ์„ฑ์„ ์—„๊ฒฉํ•˜๊ฒŒ ์œ ์ง€ํ•œ๋‹ค.

  1. READ UNCOMMITTED (์ปค๋ฐ‹ ๋ฌด์‹œํ•˜๊ณ  ์ค‘๊ฐ„์— ๋ง‰ ์ฝ๊ธฐ)
  2. READ COMMITTED (์ปค๋ฐ‹๋œ ๋ฐ์ดํ„ฐ๋งŒ ์ฝ๊ธฐ)
  3. REPEATABLE READ (ํ•œ ํŠธ๋žœ์žญ์…˜์—์„œ ์—ฌ๋Ÿฌ๋ฒˆ ์ฝ์–ด๋„ ๋™์ผํ•จ ๋ณด์žฅ)
  4. SERIALIZABLE

 

# LV 0. Read uncommitted

  • ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š”๋‹ค. ์ฆ‰ Lock๋”ฐ์œˆ ๊ฑธ์ง€ ์•Š๋Š”๋‹ค.
  • ํŠธ๋žœ์žญ์…˜ Commit, Rollback ์—ฌ๋ถ€์— ์ƒ๊ด€์—†์ด ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ๊ฐ’์„ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹น์—ฐํ•œ๊ฑฐ์ง€๋งŒ ์ •ํ•ฉ์„ฑ(๋ชจ๋“  ํŠธ๋žœ์žญ์…˜์—์„œ ์ผ์น˜ํ•จ) ๋ฌธ์ œ๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•œ๋‹ค.
  • Dirty Read(ํŠธ๋žœ์žญ์…˜ ์ž‘์—…์ด ์™„๋ฃŒ๋˜์ง€ ์•Š์€ ๋ฏธ์™„์„ฑ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์Œ) ํ˜„์ƒ์ด ๋ฐœ์ƒํ•œ๋‹ค.


# LV 1. Read committed

  • ์ปค๋ฐ‹๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š”๋‹ค. (๋‹น์—ฐํžˆ Rollback๋œ ๋ฐ์ดํ„ฐ๋Š” ์ฝ์ง€ ๋ชปํ•œ๋‹ค.)
  • ์‹ค์ œ ํ…Œ์ด๋ธ” ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋ฐฑ์—…๋˜์–ด ๋ณต๊ตฌ ๊ฐ€๋Šฅํ•œ Undo ์˜์—ญ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋œ๋‹ค.
  • ๋Œ€๋ถ€๋ถ„์˜ RDB์—์„œ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ด๋‹ค.
  • Dirty Read๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.


@ Read Committed์˜ ๋ฌธ์ œ์ 

  • ํ•œ ํŠธ๋žœ์žญ์…˜๋‚ด์—์„œ ๊ฐ™์€ ๊ฐ’์„ ์—ฌ๋Ÿฌ๋ฒˆ ์ฝ์—ˆ์„ ๋•Œ, ๋™์ผํ•จ์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค. (Repeatable READ ์ •ํ•ฉ์„ฑ)
  • ํŠธ๋žœ์žญ์…˜ A๊ฐ€ ๊ฐ™์€ ๊ฐ’์„ ๋‹ค์‹œ ์ฝ๊ธฐ์ „์— ํŠธ๋žœ์žญ์…˜B ์—์„œ ์ปค๋ฐ‹์ด ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • ์€ํ–‰์˜ ์ž…์ถœ๊ธˆ ๊ฐ™์ด ๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ์ด ์ค‘์š”ํ•œ ์„œ๋น„์Šค์—์„œ ์ฐพ๊ธฐํž˜๋“  ์น˜๋ช…์ ์ธ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.


# LV 3 Repeatable Read

  • ํ•œ ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ๊ฐ™์€ ๊ฐ’์„ ์—ฌ๋Ÿฌ๋ฒˆ ์ฝ์–ด๋„ ์ •ํ•ฉ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ์ฝ๊ธฐ์ด๋‹ค.
  • DB๋งˆ๋‹ค ๊ตฌํ˜„๋ฐฉ๋ฒ•์ด ๋‹ค๋ฅด๋‹ค. ๋ณดํ†ต ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜์Œ์ฝ์„ ๋•Œ snapshot์„ ์ฐ์–ด ์ •ํ•ฉ์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค.
  • ์Šค๋ƒ…์ƒท์„ ์ฐ์–ด์„œ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋ฉด Phantom Read๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. (์•„๋ž˜์— ์„ค๋ช…)

๋ฐ์ดํ„ฐ๋Š” ์ด๋ฏธ Jeju๋กœ ๋ฐ”๋€Œ์—ˆ๋Š”๋ฐ, ์šฐ์ธก ํŠธ๋žœ์žญ์…˜์€ ๋ฐฑ์—…(Undo, ์Šค๋ƒ…์ƒท)์„ ๊ณ„์† ์ฝ๋Š”๋‹ค.

 

@Repeatable Read์˜ ๋ฌธ์ œ์ 

  • Phantom Read (ํ•œ ํŠธ๋žœ์žญ์…˜์—์„œ ํŠน์ • ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋ณด์˜€๋‹ค๊ฐ€ ์•ˆ๋ณด์˜€๋‹ค๊ฐ€ ํ•˜๋Š” ํ˜„์ƒ) ๋ฐœ์ƒํ•œ๋‹ค.
  • ํ•œ ํŠธ๋žœ์žญ์…˜์—์„œ ๊ฐ’์„ ์ฝ์—ˆ์„ ๋•Œ, ์ฒซ๋ฒˆ์งธ์—๋Š” ์•ˆ๋ณด์ด๋˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋‘๋ฒˆ์งธ ์กฐํšŒ์—์„œ๋Š” ๋ณด์ด๋Š” ํ˜„์ƒ.
  • ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์“ฐ๊ธฐ ์ž ๊ธˆ๊นŒ์ง€ ๊ฑธ์–ด์•ผ ํ•œ๋‹ค.

 


# LV 4 Serializable

  • ๋‹จ์ˆœํ•˜๊ณ  ๋ฌด์‹ํ•œ ๊ฒฉ๋ฆฌ์ˆ˜์ค€
  • ํ•œ ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋˜๊ธฐ ์ „๊นŒ์ง€ ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. (lock)
  • ๋™์‹œ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์ด ๊ฐ€์žฅ ๋‚ฎ๊ณ  ๋ฐ๋“œ๋ฝ ๋ฐœ์ƒ๊ฐ€๋Šฅ์„ฑ์ด ๋งค์šฐ ๋†’๋‹ค.
  • Phantom Read๋ฅผ ํฌํ•จํ•œ ๋Œ€๋ถ€๋ถ„์˜ ๋ฌธ์ œ๋Š” ๋ง‰์„ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ์„ฑ๋Šฅ์ด ๋„ˆ๋ฌด ๋–จ์–ด์ ธ ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

 


# ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ์ˆ˜์ค€ ๋ฌธ์ œํ˜„์ƒ

์œ„์—์„œ ์„ค๋ช…ํ•œ ๋ฌธ์ œ๋“ค์„ ์ •๋ฆฌํ•œ ํ‘œ์ด๋‹ค.

Dirty Read : ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ์ˆ˜์ •์ค‘์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค. (๋”๋Ÿฌ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์Œ)

Non-Repetable Read : ํ•œ ํŠธ๋žœ์žญ์…˜๋‚ด์—์„œ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ์ฝ์—ˆ์„ ๋•Œ ์ •ํ•ฉ์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ

Phantom Read : ํ•œ ํŠธ๋žœ์žญ์…˜์—์„œ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ๋‘๋ฒˆ ์ˆ˜ํ–‰ํ•  ๋•Œ, ์ฒซ๋ฒˆ์งธ ์ฟผ๋ฆฌ์— ์—†๋˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋˜๋Š” ๋ฌธ์ œ

 

์ด ๊ธ€์„ ์ฝ์—ˆ๋‹ค๋ฉด, ์•„๋ž˜์˜ ํ‘œ๊ฐ€ ๋ฌด์Šจ ์˜๋ฏธ์ธ์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์„ ๊ฒƒ์ด๋‹ค.

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

JiwonDev

JiwonDev

ํ™œ๋™ํ•˜๊ธฐ