[Computer Science][Database] ๐Ÿ’ฅ ์„ฑ๋Šฅ vs. ๋ฌด๊ฒฐ์„ฑ! ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์˜ ๋ชจ๋“  ๊ฒƒ๐Ÿ”ฅ

๊น€์ƒ์šฑยท2024๋…„ 10์›” 11์ผ
post-thumbnail

๐Ÿ’ก ํŠธ๋žœ์žญ์…˜์˜ Isolation Level์ด๋ž€?

ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€(Isolation Level)์€ ๋™์‹œ์„ฑ ์ œ์–ด์—์„œ ๋งค์šฐ ์ค‘์š”ํ•œ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ์‹คํ–‰๋  ๋•Œ, ๊ฐ ํŠธ๋žœ์žญ์…˜์ด ์„œ๋กœ์—๊ฒŒ ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์–ผ๋งˆ๋‚˜ ํ—ˆ์šฉํ• ์ง€๋ฅผ ์ •์˜ํ•˜๋Š” ๊ธฐ์ค€์ž…๋‹ˆ๋‹ค.

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


๐Ÿšฆ ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์˜ ํ•„์š”์„ฑ

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

โœ… Locking์˜ ์—ญํ• 

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

๐Ÿค” ๊ทธ๋ ‡๋‹ค๋ฉด ๋ฌด์กฐ๊ฑด Locking์ด ์ข‹์„๊นŒ?

๐Ÿšจ ๋ฌธ์ œ์ : ์„ฑ๋Šฅ ์ €ํ•˜

๋ฌด์กฐ๊ฑด Locking์„ ์ ์šฉํ•˜๋ฉด ์„ฑ๋Šฅ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ํฌ๊ฒŒ ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Locking์ด ๋งŽ์„์ˆ˜๋ก ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋А๋ ค์งˆ ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ž˜๋ชป๋œ Locking ๋ฐฉ์‹์€ ์„ฑ๋Šฅ ์ €ํ•˜ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์˜ ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”‘ ๊ฒฐ๋ก : ์ตœ๋Œ€ํ•œ ํšจ์œจ์ ์ธ Locking์ด ํ•„์š”ํ•˜๋‹ค!

์„ฑ๋Šฅ๊ณผ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ๋™์‹œ์— ์œ ์ง€ํ•˜๋ ค๋ฉด, ํšจ์œจ์ ์ธ Locking ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
Lock์˜ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ฑฐ๋‚˜ ์ƒํ™ฉ์— ๋งž๋Š” ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์„ ์ ์ ˆํžˆ ์„ ํƒํ•˜์—ฌ ์ตœ์ ํ™”๋œ ์„ฑ๋Šฅ๊ณผ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๋ชจ๋‘ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


Isolation Level์˜ ์ข…๋ฅ˜

1. Read Uncommitted (๋ ˆ๋ฒจ 0)

Read Uncommitted๋Š” ๊ฐ€์žฅ ๋‚ฎ์€ ์ˆ˜์ค€์˜ ๊ฒฉ๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” Isolation Level์ž…๋‹ˆ๋‹ค. ์ด ๋ ˆ๋ฒจ์—์„œ๋Š” ํŠธ๋žœ์žญ์…˜์ด ์•„์ง ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ "๋”ํ‹ฐ ๋ฆฌ๋“œ(Dirty Read)"๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  • Shared Lock์ด ๊ฑธ๋ฆฌ์ง€ ์•Š์Œ:
    • SELECT ๋ฌธ์žฅ์ด ์‹คํ–‰๋  ๋•Œ Shared Lock์ด ๊ฑธ๋ฆฌ์ง€ ์•Š์œผ๋ฏ€๋กœ, ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜๋„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๊ฒฐ๊ณผ์ ์œผ๋กœ ์•„์ง Commit๋˜์ง€ ์•Š์€, ์ฆ‰ ์™„๋ฃŒ๋˜์ง€ ์•Š์€ ํŠธ๋žœ์žญ์…˜์ด ์ˆ˜์ •ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”ด ๋ฌธ์ œ์ :

  • ๋”ํ‹ฐ ๋ฆฌ๋“œ(Dirty Read)๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์—ˆ๋Š”๋ฐ, ์ดํ›„ ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜์ด ๋กค๋ฐฑ(Rollback)๋˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์ง€๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ผ๊ด€์„ฑ ์—†๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์‹ ๋ขฐ์„ฑ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์–ด๋ ต๊ณ , ์‹ ๋ขฐ์„ฑ์ด ๋‚ฎ์ง€๋งŒ ์„ฑ๋Šฅ ์ธก๋ฉด์—์„œ๋Š” ๋›ฐ์–ด๋‚œ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค.


2. Read Committed (๋ ˆ๋ฒจ 1)

Read Committed๋Š” ํŠธ๋žœ์žญ์…˜์ด ์ˆ˜ํ–‰๋˜๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก Lock์„ ๊ฑธ์–ด์ฃผ๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ด ๋ ˆ๋ฒจ์—์„œ๋Š” ์ปค๋ฐ‹๋œ ๋ฐ์ดํ„ฐ๋งŒ ์ฝ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋”ํ‹ฐ ๋ฆฌ๋“œ๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Shared Lock์ด ๊ฑธ๋ฆผ:
    • ํŠธ๋žœ์žญ์…˜์ด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ, ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— Shared Lock์„ ๊ฑธ์–ด ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
    • ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹๋œ ๋ฐ์ดํ„ฐ๋งŒ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐ŸŸข ์žฅ์ :

  • ๋”ํ‹ฐ ๋ฆฌ๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ. ์ฆ‰, ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์ด ๋” ๋†’์•„์ง‘๋‹ˆ๋‹ค.

๐Ÿ”ด ๋‹จ์ :

  • Non-repeatable Read๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜ A๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์€ ํ›„, ํŠธ๋žœ์žญ์…˜ B๊ฐ€ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•œ ๋’ค์— ํŠธ๋žœ์žญ์…˜ A๊ฐ€ ๋‹ค์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์œผ๋ฉด, ์ฒ˜์Œ๊ณผ ๋‹ค๋ฅธ ๊ฐ’์ด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก : ๋Œ€๋ถ€๋ถ„์˜ SQL ์„œ๋ฒ„์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์œผ๋กœ, ๋”ํ‹ฐ ๋ฆฌ๋“œ๋ฅผ ๋ฐฉ์ง€ํ•˜์—ฌ ์ผ๊ด€์„ฑ์„ ์–ด๋А ์ •๋„ ์œ ์ง€ํ•˜๋ฉด์„œ ์„ฑ๋Šฅ๋„ ์ ์ ˆํžˆ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๋Š” ๊ท ํ˜• ์žˆ๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.


3. Repeatable Read (๋ ˆ๋ฒจ 2)

Repeatable Read๋Š” ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ณด์žฅํ•˜๋Š” ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค. ์ฆ‰, ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์กฐํšŒํ•ด๋„ ๊ทธ ๊ฐ’์ด ํ•ญ์ƒ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

  • Shared Lock์ด ๊ฑธ๋ฆผ:
    • ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ SELECT ๋ฌธ์žฅ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ์— Shared Lock์ด ๊ฑธ๋ฆฌ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ์ˆ˜์ •ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋ง‰์Šต๋‹ˆ๋‹ค.

๐ŸŸข ์žฅ์ :

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

๐Ÿ”ด ๋‹จ์ :

  • Phantom Read ๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ํŠธ๋žœ์žญ์…˜ A๊ฐ€ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์„ ์กฐํšŒํ•œ ํ›„, ํŠธ๋žœ์žญ์…˜ B๊ฐ€ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด, ํŠธ๋žœ์žญ์…˜ A๊ฐ€ ๋‹ค์‹œ ์กฐํšŒํ•  ๋•Œ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก : MySQL์—์„œ ๊ธฐ๋ณธ(Default)์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์กฐํšŒ ์‹œ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜์ง€๋งŒ, ์„ฑ๋Šฅ๊ณผ ์ผ๊ด€์„ฑ์˜ ๊ท ํ˜•์„ ๊ณ ๋ คํ•œ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค.


4. Serializable (๋ ˆ๋ฒจ 3)

Serializable์€ ๊ฐ€์žฅ ๋†’์€ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์œผ๋กœ, ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ ์ž‘์—…์„ ์ „๋ถ€ ์ฐจ๋‹จํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ด ์ˆ˜์ค€์€ ํŠธ๋žœ์žญ์…˜ ๊ฐ„์˜ ์™„๋ฒฝํ•œ ๋…๋ฆฝ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

  • Shared Lock๊ณผ Exclusive Lock์ด ๊ฑธ๋ฆผ:
    • ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ SELECT ๋ฌธ์žฅ์„ ํฌํ•จํ•œ ๋ชจ๋“  ์ž‘์—…์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค.
    • ์“ฐ๊ธฐ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ฝ๊ธฐ ์ž‘์—…๋„ ๋ง‰๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ์˜ ์™„์ „ํ•œ ๋…๋ฆฝ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

๐ŸŸข ์žฅ์ :

  • ํŠธ๋žœ์žญ์…˜ ๊ฐ„์˜ ์™„๋ฒฝํ•œ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ์•„๋ฌด๋Ÿฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.
  • Phantom Read๋„ ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋ฉฐ, ํŠธ๋žœ์žญ์…˜ ๋‚ด์˜ ๋ชจ๋“  ์ž‘์—…์ด ์™„๋ฒฝํžˆ ๋…๋ฆฝ์ ์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

๐Ÿ”ด ๋‹จ์ :

  • ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๊ฐ•๋ ฅํ•œ ์ œ์•ฝ์„ ๋‘๊ธฐ ๋•Œ๋ฌธ์— ๋™์‹œ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ๊ฐ์†Œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก : ๊ฐ€์žฅ ๋†’์€ ์ˆ˜์ค€์˜ ๊ฒฉ๋ฆฌ๋ฅผ ๋ณด์žฅํ•˜์ง€๋งŒ, ์„ฑ๋Šฅ ์ธก๋ฉด์—์„œ๋Š” ํšจ์œจ์ ์ด์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™„๋ฒฝํ•œ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์ด ํ•„์ˆ˜์ ์ธ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.


๐Ÿ” ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€(Isolation Level) ์„ ํƒ ์‹œ ์ฃผ์˜ํ•ด์•ผ ํ•  ๋ฌธ์ œ๋“ค

1๏ธโƒฃ ์„ ํƒ ์‹œ ๊ณ ๋ ค์‚ฌํ•ญ

  1. ๋™์‹œ์„ฑ๊ณผ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์˜ ๊ด€๊ณ„:

    • Isolation Level์€ ํŠธ๋žœ์žญ์…˜์˜ ๋™์‹œ ์‹คํ–‰๊ณผ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ(์ผ๊ด€์„ฑ) ์‚ฌ์ด์˜ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์š”์†Œ์ž…๋‹ˆ๋‹ค.
    • ๋™์‹œ์„ฑ์„ ๋†’์ด๋ฉด ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ์ฒ˜๋ฆฌ๋˜์–ด ์„ฑ๋Šฅ์€ ํ–ฅ์ƒ๋  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ทธ๋งŒํผ ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์ด ๊นจ์งˆ ์œ„ํ—˜์ด ์ปค์ง‘๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ๋ฌด๊ฒฐ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์„ ๊ฐ•ํ™”ํ•˜๋ฉด ๋™์‹œ์„ฑ์ด ๋‚ฎ์•„์ ธ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ฌธ์ œ:

    • ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ด ๋‚ฎ์„ ๊ฒฝ์šฐ, ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ฒŒ ๋˜์–ด Dirty Read, Non-repeatable Read, Phantom Read์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ๋น„์šฉ:

    • Isolation Level์„ ๋†’์ด๋ฉด ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์€ ๋ณด์žฅ๋˜์ง€๋งŒ, ๊ทธ์— ๋”ฐ๋ผ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋Š” ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋†’์€ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์˜ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์— ์ถ”๊ฐ€์ ์ธ ๋ถ€ํ•˜๋ฅผ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2๏ธโƒฃ ๋‚ฎ์€ ๋‹จ๊ณ„ Isolation Level์„ ํ™œ์šฉํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ํ˜„์ƒ๋“ค

1. Dirty Read (๋”ํ‹ฐ ๋ฆฌ๋“œ)

  • ์„ค๋ช…: ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ์ฝ๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜๋Š” ์ƒํ™ฉ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํ•œ ํŠธ๋žœ์žญ์…˜์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์•„์ง Commitํ•˜์ง€ ์•Š์•˜๋Š”๋ฐ, ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ํ˜„์ƒ์ž…๋‹ˆ๋‹ค. ์ด๋•Œ ์ˆ˜์ • ์ค‘์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฒŒ ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ์˜ˆ์‹œ: ํŠธ๋žœ์žญ์…˜ A๊ฐ€ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์žˆ๋Š” ๋™์•ˆ, ํŠธ๋žœ์žญ์…˜ B๊ฐ€ ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜์—ฌ ์ˆ˜์ •๋˜์ง€ ์•Š์€ ์ƒํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜์ค‘์— ํŠธ๋žœ์žญ์…˜ A๊ฐ€ Rollback์„ ์ˆ˜ํ–‰ํ•˜๋ฉด, ํŠธ๋žœ์žญ์…˜ B๊ฐ€ ์ฝ์€ ๋ฐ์ดํ„ฐ๋Š” ๋” ์ด์ƒ ์œ ํšจํ•˜์ง€ ์•Š์€ ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  • ๋ฐœ์ƒ ๋ ˆ๋ฒจ: Read Uncommitted ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ˆ˜์ค€์—์„œ๋Š” ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹๋˜์ง€ ์•Š์•„๋„ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Dirty Read๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.


2. Non-Repeatable Read (๋ฐ˜๋ณต ๋ถˆ๊ฐ€๋Šฅํ•œ ์ฝ๊ธฐ)

  • ์„ค๋ช…: ๊ฐ™์€ ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ๋‘ ๋ฒˆ ์‹คํ–‰ํ•  ๋•Œ, ๊ทธ ์‚ฌ์ด์— ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด ๋‘ ๋ฒˆ์งธ ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์ฒ˜์Œ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์™€ ๋‹ค๋ฅด๊ฒŒ ๋‚˜์˜ค๋Š” ํ˜„์ƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์ผ๊ด€์„ฑ์ด ๊นจ์ง„ ์ƒํƒœ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

    • ์˜ˆ์‹œ: ํŠธ๋žœ์žญ์…˜ A๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•œ ํ›„, ํŠธ๋žœ์žญ์…˜ B๊ฐ€ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•œ ๊ฒฝ์šฐ, ํŠธ๋žœ์žญ์…˜ A๊ฐ€ ๋‹ค์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ–ˆ์„ ๋•Œ ์ฒ˜์Œ๊ณผ ๋‹ค๋ฅธ ๊ฐ’์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.
  • ๋ฐœ์ƒ ๋ ˆ๋ฒจ: Read Committed์™€ Read Uncommitted ์ˆ˜์ค€์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋˜๊ธฐ ์ „์— ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์—์„œ๋Š” Non-Repeatable Read๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


3. Phantom Read (ํŒฌํ…€ ๋ฆฌ๋“œ)

  • ์„ค๋ช…: ํ•œ ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ๊ฐ™์€ ๋ฒ”์œ„์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋‘ ๋ฒˆ ์ด์ƒ ์ฝ์„ ๋•Œ, ์ฒซ ๋ฒˆ์งธ ์ฟผ๋ฆฌ์—์„œ ์กฐํšŒ๋˜์ง€ ์•Š์•˜๋˜ ์ƒˆ๋กœ์šด ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋‘ ๋ฒˆ์งธ ์ฟผ๋ฆฌ์—์„œ ๋‚˜ํƒ€๋‚˜๋Š” ํ˜„์ƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•จ์œผ๋กœ์จ ๋ฐœ์ƒํ•˜๋Š” ํ˜„์ƒ์ž…๋‹ˆ๋‹ค.

    • ์˜ˆ์‹œ: ํŠธ๋žœ์žญ์…˜ A๊ฐ€ ํŠน์ • ์กฐ๊ฑด์— ๋งž๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ์กฐํšŒํ•œ ํ›„, ํŠธ๋žœ์žญ์…˜ B๊ฐ€ ์ƒˆ๋กœ์šด ๋ ˆ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๋ฉด, ํŠธ๋žœ์žญ์…˜ A๊ฐ€ ๋‹ค์‹œ ์กฐํšŒํ•  ๋•Œ ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์ด Phantom Read์ž…๋‹ˆ๋‹ค.
  • ๋ฐœ์ƒ ๋ ˆ๋ฒจ: Repeatable Read, Read Committed, Read Uncommitted ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋“ค์€ ํŠธ๋žœ์žญ์…˜ ๋ฒ”์œ„ ๋‚ด์—์„œ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๊ฒƒ์„ ์ฐจ๋‹จํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— Phantom Read๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€