๐ŸŒ Transaction Isolation Level

may_soouuยท2020๋…„ 10์›” 21์ผ
0

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

DBMS(Database management system) ์€ ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ์„ ์ •์˜ํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.
๊ทธ ์ค‘ ํ•˜๋‚˜๊ฐ€ Transaction isolation level ์ด๋‹ค

Transaction isolation level (ํŠธ๋ Œ์ ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€)
: ๋™์‹œ์— ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ์ฒ˜๋ฆฌ๋  ๋•Œ, ํŠน์ • ํŠธ๋žœ์žญ์…˜์ด ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๋ ˆ๋ฒจ

๐ŸŒˆ isolation level ์˜ 4๋‹จ๊ณ„

  • Read Uncommitted
  • Read Committed
  • Repeatable Read
  • Serializable

๋Œ€๋ถ€๋ถ„์€ read committed ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, read uncommitted ์˜ ๊ฒฝ์šฐ ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค.

Serializable๋กœ ๊ฐˆ์ˆ˜๋ก ๊ณ ๋ฆฝ๋„๊ฐ€ ๋†’์•„์ง€๊ณ  ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง„๋‹ค.

1. Read Uncommitted

  • ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค
  • commit, rollback ์—ฌ๋ถ€์— ์ƒ๊ด€ ์—†์ด ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์˜ ๋ณ€๊ฒฝ/์กฐํšŒ ํ—ˆ์šฉ
  • ์–ด๋– ํ•œ ํŠธ๋žœ์ ์…˜์—์„œ ์ž‘์—…์ด ์™„๋ฃŒ ๋˜์ง€ ์•Š์•„๋„ ๋‹ค๋ฅธ ํŠธ๋žœ์ ์…˜์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Œ
  • Dirty Read ๋ฐœ์ƒ
    - ์™„๋ฃŒ๋˜์ง€ ์•Š์€ ํŠธ๋žœ์ ์…˜์„ ๋‹ค๋ฅธ ํŠธ๋žœ์ ์…˜์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ

2. Read committed

  • ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ ํ•˜๋Š” ๊ฒƒ(์˜ค๋ผํด DBMS์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ)
  • ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋ผ๋„ ์ปค๋ฐ‹์ด ์™„๋ฃŒ ๋œ ํŠธ๋žœ์ ์…˜๋งŒ ๋‹ค๋ฅธ ํŠธ๋žœ์ ์…˜์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ์Œ
  • Non-Repetable Read ๋ฐœ์ƒ
    - Repetable Read : ๋ฐ์ดํ„ฐ ์กฐํšŒ ์‹œ, ํ•ญ์ƒ ๋™์ผํ•œ ์‘๋‹ต์„ ๋ณด์žฅํ•˜๋Š” ๊ณ ๋ฆฝ ์ˆ˜์ค€
    • ์ปค๋ฐ‹ ์ „, select ๋ฌธ ์กฐํšŒ ์‹œ ๋‚˜์˜จ ๋ฐ์ดํ„ฐ ์™€ ์ปค๋ฐ‹ ํ›„, select ๋ฌธ ์กฐํšŒ ์‹œ ๋‚˜์˜จ ๋ฐ์ดํ„ฐ ๊ฐ€ ๋‹ค๋ฆ„
    • ex. ํ†ต์žฅ์— 10๋งŒ์› ์žˆ๊ณ , 10๋งŒ์› ์ธ์ถœํ•˜๋ ค๊ณ  ํ•จ. ์ธ์ถœ ์ง์ „ ์ž๋™์ด์ฒด๋กœ 8๋งŒ์›์ด ๋น ์ ธ๋‚˜๊ฐ€์„œ 2๋งŒ์› ๋‚จ์•„์žˆ๋Š” ์ƒํ™ฉ์ธ๋ฐ 10๋งŒ์›์ด ์ธ์ถœ ๊ฐ€๋Šฅํ•ด์ง€๋Š” ๋ฌธ์ œ

3. Repeatable Read

  • ํŠธ๋ Œ์ ์…˜ ๋งˆ๋‹ค ํŠธ๋ Œ์ ์…˜ ID๋ฅผ ๋ถ€์—ฌํ•œ๋‹ค.
  • ์ž์‹ ์˜ ํŠธ๋žœ์ ์…˜ ๋ฒˆํ˜ธ๋ณด๋‹ค ๋‚ฎ์€ ํŠธ๋žœ์ ์…˜ ๋ฒˆํ˜ธ์—์„œ ๋ณ€๊ฒฝ๋œ (์ปค๋ฐ‹๋œ) ๊ฒƒ๋งŒ ๋ณด๋Š” ๊ฒƒ

4. Serializable

  • ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ด์ง€๋งŒ ๊ฐ€์žฅ ์—„๊ฒฉํ•œ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€
  • ์„ฑ๋Šฅ ์ธก๋ฉด์—์„œ ๋™์‹œ ์ฒ˜๋ฆฌ์„ฑ๋Šฅ์ด ๊ฐ€์žฅ ๋‚ฎ์Œ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค

์ถœ์ฒ˜

profile
back-end ๊ฐœ๋ฐœ์ž

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