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

2020. 4. 27. 15:35ยท๐Ÿ“ Computer Science/โœ Database

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

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

 

1. ACID

  • ์›์ž์„ฑ(Atomicity): ํŠธ๋žœ์žญ์…˜์˜ ์—ฐ์‚ฐ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ชจ๋‘ ๋ฐ˜์˜๋˜๋„๋ก ์™„๋ฃŒ(Commit)๋˜๋“ ์ง€ ์•„๋‹ˆ๋ฉด ์ „ํ˜€ ๋ฐ˜์˜๋˜์ง€ ์•Š๋„๋ก ๋ณต๊ตฌ(Rollback)๋˜์–ด์•ผ ํ•œ๋‹ค.
  • ์ผ๊ด€์„ฑ(Consistency): ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋œ ๋‹ค์Œ์˜ ์ƒํƒœ์—์„œ๋„ ํŠธ๋žœ์žญ์…˜์ด ์ผ์–ด๋‚˜๊ธฐ ์ „์˜ ์ƒํ™ฉ๊ณผ ๋™์ผํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•ด์•ผ ํ•œ๋‹ค.
  • ๊ณ ๋ฆฝ์„ฑ(Isolation): ํ•œ ํŠธ๋žœ์žญ์…˜์ด ์ž‘์—…์„ ํ•˜๋Š” ๋™์•ˆ ์™„๋ฃŒ๋˜๊ธฐ ์ „์—๋Š” ์ž‘์—… ์ค‘์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜๋“ค์ด ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค.
  • ์ง€์†์„ฑ(Durability): ํŠธ๋žœ์žญ์…˜์˜ ์‹คํ–‰์ด ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰ ์™„๋ฃŒ๋œ ํ›„์—๋Š” ์‹œ์Šคํ…œ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์€ ๊ณ„์† ๋ณด์กด๋˜์–ด์•ผ ํ•œ๋‹ค.

 

2. ํŠธ๋žœ์žญ์…˜ ๊ณ ๋ฆฝํ™” ๋ ˆ๋ฒจ(Isolation Level)

ํŠธ๋žœ์žญ์…˜์—์„œ ์ผ๊ด€์„ฑ ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ—ˆ์šฉํ•˜๋„๋ก ํ•˜๋Š” ์ˆ˜์ค€์„ ๋งํ•œ๋‹ค.

 

1) ํ•„์š”์„ฑ

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

 

2) ๋‚ฎ์€ ๋‹จ๊ณ„์˜ ๊ณ ๋ฆฝํ™” ๋ ˆ๋ฒจ์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ํ˜„์ƒ

๋™์‹œ์„ฑ์„ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด ๋™์‹œ์„ฑ์ด ๋–จ์–ด์ง€๊ฒŒ ๋œ๋‹ค.

 

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

 

๋™์‹œ์„ฑ ์ œ์–ด ์˜ค๋ฅ˜

 

3) ์ข…๋ฅ˜

Read Uncommitted(๋ ˆ๋ฒจ 0)

  • SELECT ๋ฌธ์žฅ์ด ์ˆ˜ํ–‰๋˜๋Š” ๋™์•ˆ ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— Shared Lock์ด ๊ฑธ๋ฆฌ์ง€ ์•Š๋Š” ๋ ˆ๋ฒจ์ด๋‹ค. 
  • ํŠธ๋žœ์žญ์…˜์— ์ฒ˜๋ฆฌ ์ค‘์ด๊ฑฐ๋‚˜, ์•„์ง Commit ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ฝ๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
  • Ex) ์‚ฌ์šฉ์ž 1์ด A๋ผ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ B๋ผ๋Š” ๋ฐ์ดํ„ฐ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋™์•ˆ ์‚ฌ์šฉ์ž 2๋Š” ์•„์ง ์™„๋ฃŒ๋˜์ง€ ์•Š์€(Uncommitted or Dirty) ํŠธ๋žœ์žญ์…˜์ด์ง€๋งŒ ๋ฐ์ดํ„ฐ B๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค

 

Read Committed(๋ ˆ๋ฒจ 1)

  • SELECT ๋ฌธ์žฅ์ด ์ˆ˜ํ–‰๋˜๋Š” ๋™์•ˆ ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— Shared Lock์ด ๊ฑธ๋ฆฌ๋Š” ๋ ˆ๋ฒจ์ด๋‹ค.
  • ํŠธ๋žœ์žญ์…˜์ด ์ˆ˜ํ–‰๋˜๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ ‘๊ทผํ•  ์ˆ˜ ์—†์–ด ๋Œ€๊ธฐํ•˜๊ฒŒ ๋œ๋‹ค.
  • Commit์ด ์ด๋ฃจ์–ด์ง„ ํŠธ๋žœ์žญ์…˜๋งŒ ์กฐํšŒ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • SQL ์„œ๋ฒ„๊ฐ€ Default๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
  • Ex) ์‚ฌ์šฉ์ž 1์ด A๋ผ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ B๋ผ๋Š” ๋ฐ์ดํ„ฐ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋™์•ˆ ์‚ฌ์šฉ์ž 2๋Š” ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

 

Repeatable Read(๋ ˆ๋ฒจ 2)

  • ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ SELECT ๋ฌธ์žฅ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ์— Shared Lock์ด ๊ฑธ๋ฆฌ๋Š” ๋ ˆ๋ฒจ์ด๋‹ค.
  • ํŠธ๋žœ์žญ์…˜์ด ๋ฒ”์œ„ ๋‚ด์—์„œ ์กฐํšŒํ•œ ๋ฐ์ดํ„ฐ ๋‚ด์šฉ์ด ํ•ญ์ƒ ๋™์ผํ•จ์„ ๋ณด์žฅํ•œ๋‹ค.
  • ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋Š” ํŠธ๋žœ์žญ์…˜ ์˜์—ญ์— ํ•ด๋‹น๋˜๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

 

Serializable(๋ ˆ๋ฒจ 3)

  • ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ SELECT ๋ฌธ์žฅ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ์— Shared Lock์ด ๊ฑธ๋ฆฌ๋Š” ๋ ˆ๋ฒจ์ด๋‹ค.
  • ์™„๋ฒฝํ•œ ์ฝ๊ธฐ ์ผ๊ด€์„ฑ ๋ชจ๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
  • ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋Š” ํŠธ๋žœ์žญ์…˜ ์˜์—ญ์— ํ•ด๋‹น๋˜๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ˆ˜์ • ๋ฐ ์ž…๋ ฅ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)
'๐Ÿ“ Computer Science/โœ Database' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • SQL SELECT
  • SQL
  • ์ •๊ทœํ™”(Normalization)
  • ํ‚ค(Key)์™€ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ ์กฐ๊ฑด
Blxxming
Blxxming
CS ์ง€์‹๊ณผ ๊ณต๋ถ€ํ•˜๋‹ค ๋ฐฐ์šด ๊ฒƒ, ๊ฒฝํ—˜ํ•œ ๊ฒƒ ๋“ฑ์„ ๊ธฐ๋กํ•˜๋Š” ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.
  • Blxxming
    ๐Ÿ’ก๋ฒˆ๋œฉ๐Ÿ’ก
    Blxxming
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
  • ๊ณต์ง€์‚ฌํ•ญ

    • Tech Interview
    • ๐Ÿ“š Tech (246)
      • ๐Ÿ“ Computer Science (96)
        • โœ OS (12)
        • โœ Network & Web (10)
        • โœ Database (11)
        • โœ Data Structure (6)
        • โœ Algorithm (40)
        • โœ Design Pattern (9)
        • โœ Cloud Computing (3)
        • โœ (5)
      • ๐Ÿ“ Language (73)
        • โœ Language (6)
        • โœ C & C++ (11)
        • โœ C# (19)
        • โœ JAVA (37)
      • ๐Ÿ“ Game (43)
        • โœ Computer Graphics (2)
        • โœ Unity (14)
        • โœ Unreal (26)
        • โœ (1)
      • ๐Ÿ“ Book (34)
        • โœ Effective (3)
        • โœ Game Server (16)
        • โœ Clean Code (14)
        • โœ (1)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
Blxxming
ํŠธ๋žœ์žญ์…˜(Transaction)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”