[λ°μ΄ν„°λ² μ΄μŠ€] νŠΈλžœμž­μ…˜(Transaction)

πŸ§ͺ Computer Science/Database

νŠΈλžœμž­μ…˜

  • DBMSμ—μ„œ 데이터λ₯Ό λ‹€λ£¨λŠ” 논리적인 μž‘μ—…μ˜ λ‹¨μœ„
  • DBμ—μ„œ 데이터λ₯Ό λ‹€λ£° λ•Œ μž₯μ• κ°€ μΌμ–΄λ‚œ 경우, 데이터λ₯Ό λ³΅κ΅¬ν•˜λŠ” μž‘μ—…μ˜ λ‹¨μœ„κ°€ λœλ‹€.
  • DBμ—μ„œ μ—¬λŸ¬ μž‘μ—…μ΄ λ™μ‹œμ— 같은 데이터λ₯Ό λ‹€λ£° λ•Œ, 이 μž‘μ—…μ„ μ„œλ‘œ λΆ„λ¦¬ν•˜λŠ” λ‹¨μœ„κ°€ λœλ‹€.
  • νŠΈλžœμž­μ…˜μ€ 전체가 μˆ˜ν–‰λ˜κ±°λ‚˜ λ˜λŠ” μ „ν˜€ μˆ˜ν–‰λ˜μ§€ μ•Šμ•„μ•Ό ν•œλ‹€.(All or Nothing)

ex) Aκ³„μ’Œμ—μ„œ Bκ³„μ’Œλ‘œ λˆμ„ μ΄μ²΄ν•˜λŠ” 경우, Aμ—μ„œ λˆμ„ λΉΌκ³  Bμ—μ„œ λˆμ„ λ”ν•˜λŠ” 두 κ°€μ§€μ˜ Update문으둜 λ‚˜λ‰œκ²Œ λœλ‹€. 이듀은 κ°œλ³„μˆ˜ν–‰μ΄ μ•„λ‹ˆλΌ ν•˜λ‚˜μ˜ νŠΈλžœμž­μ…˜μœΌλ‘œ 묢이게 되며 ν•˜λ‚˜μ˜ νŠΈλžœμž­μ…˜μ΄ 싀행될 λ•Œ ν•˜λ‚˜μ˜ SQL만 μ‹€ν–‰λ˜λŠ” 상황은 λ°œμƒν•˜μ§€ μ•Šκ³  두 개의 SQL문이 μ—°μ†μ μœΌλ‘œ μ‹€ν–‰λœλ‹€. 이λ₯Ό All or Nothing이라고 ν•œλ‹€.

  • Commit: νŠΈλžœμž­μ…˜μ˜ μˆ˜ν–‰μ΄ μ™„λ£Œλ¨μ„ νŠΈλžœμž­μ…˜ κ΄€λ¦¬μžμ—κ²Œ μ•Œλ €μ£ΌλŠ” μ—°μ‚°
  • Rollback: νŠΈλžœμž­μ…˜μ΄ ν–‰ν•œ λͺ¨λ“  연산을 μ·¨μ†Œμ‹œν‚€κ±°λ‚˜ νŠΈλžœμž­μ…˜μ„ μž¬μ‹œμž‘ν•¨

νŠΈλžœμž­μ…˜μ˜ ACID μ„±μ§ˆ

  • μ›μžμ„±(Atomicity): νŠΈλžœμž­μ…˜μ— ν¬ν•¨λœ μž‘μ—…μ€ μ „λΆ€ μˆ˜ν–‰λ˜κ±°λ‚˜ μ „λΆ€ μˆ˜ν–‰λ˜μ§€ μ•Šμ•„μ•Ό ν•œλ‹€.
  • 일관성(Consistency): νŠΈλžœμž­μ…˜μ„ μˆ˜ν–‰ν•˜κΈ° μ „μ΄λ‚˜ ν›„λ‚˜ λ°μ΄ν„°λ² μ΄μŠ€λŠ” 항상 μΌκ΄€λœ μƒνƒœλ₯Ό μœ μ§€ν•΄μ•Ό ν•œλ‹€.
  • 고립성(Isolation): μˆ˜ν–‰ 쀑인 νŠΈλžœμž­μ…˜μ— λ‹€λ₯Έ νŠΈλžœμž­μ…˜μ΄ 끼어듀어 λ³€κ²½ 쀑인 데이터 값을 ν›Όμ†ν•˜μ§€ μ•Šμ•„μ•Ό ν•œλ‹€.
  • 지속성(Durability): μˆ˜ν–‰μ„ μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œν•œ νŠΈλžœμž­μ…˜μ€ λ³€κ²½ν•œ 데이터λ₯Ό 영ꡬ히 μ €μž₯ν•΄μ•Ό ν•œλ‹€.

νŠΈλžœμž­μ…˜κ³Ό DBMS

  • DBMSλŠ” μ›μžμ„±μ„ μœ μ§€ν•˜κΈ° μœ„ν•΄ 회볡(볡ꡬ) κ΄€λ¦¬μž ν”„λ‘œκ·Έλž¨μ„ μž‘λ™μ‹œν‚΄.
  • DBMSλŠ” 일관성을 μœ μ§€ν•˜κΈ° μœ„ν•΄ λ™μ‹œμ„± μ œμ–΄(Locking) μ•Œκ³ λ¦¬μ¦˜κ³Ό 무결성 μ œμ•½μ‘°κ±΄μ„ ν™œμš©ν•¨.
  • DBMSλŠ” 고립성을 μœ μ§€ν•˜κΈ° μœ„ν•΄ λ™μ‹œμ„± μ œμ–΄(Locking) μ•Œκ³ λ¦¬μ¦˜μ„ μž‘λ™μ‹œν‚΄.
  • DBMSλŠ” 지속성을 μœ μ§€ν•˜κΈ° μœ„ν•΄ 회볡 κ΄€λ¦¬μž ν”„λ‘œκ·Έλž¨μ„ μ΄μš©ν•¨.