Database

[Database] νŠΈλžœμž­μ…˜(Transaction)

quedevel 2023. 3. 26. 14:53
728x90
λ°˜μ‘ν˜•

🎯 νŠΈλžœμž­μ…˜(Transaction)


νŠΈλžœμž­μ…˜(Transaction)은 λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μΌμ–΄λ‚˜λŠ” μž‘μ—…μ˜ 논리적 λ‹¨μœ„λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. 보톡 λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 데이터λ₯Ό μ €μž₯, μˆ˜μ •, μ‚­μ œν•˜λŠ” μž‘μ—…μ„ μˆ˜ν–‰ν•  λ•Œ, μ—¬λŸ¬ λ‹¨κ³„μ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•΄μ•Ό ν•˜λŠ” κ²½μš°κ°€ μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 도쀑에 μ–΄λ–€ λ¬Έμ œκ°€ λ°œμƒν•˜μ—¬ 쀑간에 μž‘μ—…μ΄ μ‹€νŒ¨ν•˜λ©΄, λ°μ΄ν„°μ˜ 무결성이 깨질 수 μžˆμŠ΅λ‹ˆλ‹€.
μ΄λŸ¬ν•œ 문제λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄, νŠΈλžœμž­μ…˜μ€ λͺ¨λ“  μž‘μ—…μ΄ μ„±κ³΅μ μœΌλ‘œ μˆ˜ν–‰λ  λ•Œλ§Œ λ°˜μ˜λ˜λ„λ‘ 보μž₯ν•©λ‹ˆλ‹€.


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


βœ… μ›μžμ„±(Atomicity): νŠΈλžœμž­μ…˜μ€ "μ›μžμ "이어야 ν•©λ‹ˆλ‹€. 즉, λͺ¨λ“  μž‘μ—…μ΄ ν•˜λ‚˜μ˜ 논리적인 λ‹¨μœ„λ‘œ μ²˜λ¦¬λ˜μ–΄μ•Ό ν•˜λ©°, ν•˜λ‚˜μ˜ μž‘μ—…μ΄λΌλ„ μ‹€νŒ¨ν•˜λ©΄ 전체 μž‘μ—…μ΄ μ·¨μ†Œλ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.
βœ… 일관성(Consistency): νŠΈλžœμž­μ…˜ μˆ˜ν–‰ ν›„ λ°μ΄ν„°λ² μ΄μŠ€λŠ” 일관성 μžˆλŠ” μƒνƒœκ°€ μœ μ§€λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. 즉, λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μ •μ˜λœ μ œμ•½ 쑰건(Constraint)에 λͺ¨λ‘ λΆ€ν•©ν•΄μ•Ό ν•©λ‹ˆλ‹€.
βœ… 고립성(Isolation): νŠΈλžœμž­μ…˜ μˆ˜ν–‰ 쀑에 λ‹€λ₯Έ νŠΈλžœμž­μ…˜μ˜ μž‘μ—…μ— 영ν–₯을 받지 μ•Šλ„λ‘ κ³ λ¦½λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. 즉, ν•œ νŠΈλžœμž­μ…˜μ΄ μˆ˜ν–‰λ˜λŠ” λ™μ•ˆ λ‹€λ₯Έ νŠΈλžœμž­μ…˜μ—μ„œ 같은 데이터λ₯Ό μˆ˜μ •ν•˜κ±°λ‚˜ μ‚­μ œν•˜μ§€ λͺ»ν•˜λ„둝 보μž₯ν•΄μ•Ό ν•©λ‹ˆλ‹€.
βœ… 지속성(Durability): νŠΈλžœμž­μ…˜μ΄ μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλ˜λ©΄, ν•΄λ‹Ή μž‘μ—…μ΄ λ°μ΄ν„°λ² μ΄μŠ€μ— λ°˜μ˜λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. λ§Œμ•½ λ°μ΄ν„°λ² μ΄μŠ€μ— λ¬Έμ œκ°€ λ°œμƒν•˜μ—¬ μž‘μ—…μ΄ μ€‘λ‹¨λ˜λ©΄, 이전에 μ™„λ£Œλœ μž‘μ—…κΉŒμ§€ λͺ¨λ‘ λ³΅κ΅¬λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

λ”°λΌμ„œ, νŠΈλžœμž­μ…˜μ€ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ λ°μ΄ν„°μ˜ 무결성을 보μž₯ν•˜κΈ° μœ„ν•œ μ€‘μš”ν•œ κ°œλ… 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€.


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


νŠΈλžœμž­μ…˜ κ΄€λ¦¬λŠ” λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œμ—μ„œ 맀우 μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€. μ΄λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ˜ 무결성과 일관성을 보μž₯ν•˜κΈ° μœ„ν•΄ νŠΈλžœμž­μ…˜μ΄ μ›μžμ„±, 일관성, 고립성, 지속성을 μΆ©μ‘±ν•΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

  1. νŠΈλžœμž­μ…˜ μ‹œμž‘ (Begin Transaction)
    • νŠΈλžœμž­μ…˜μ„ μ‹œμž‘ν•˜κΈ° μœ„ν•΄ λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œμ—μ„œλŠ” νŠΈλžœμž­μ…˜ μ‹λ³„μžλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
  2. μž‘μ—… μˆ˜ν–‰
    • νŠΈλžœμž­μ…˜μ—μ„œ μˆ˜ν–‰ν•  μž‘μ—…μ„ μ •μ˜ν•©λ‹ˆλ‹€. μ΄λ•Œ, νŠΈλžœμž­μ…˜μ˜ 각 λ‹¨κ³„λŠ” μ›μžμ„±μ„ μœ μ§€ν•΄μ•Ό ν•©λ‹ˆλ‹€.
  3. 컀밋 λ˜λŠ” λ‘€λ°±
    • νŠΈλžœμž­μ…˜μ΄ μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλ˜λ©΄, 컀밋(Commit)을 μˆ˜ν–‰ν•˜μ—¬ λ°μ΄ν„°λ² μ΄μŠ€μ— λ³€κ²½ 사항을 λ°˜μ˜ν•©λ‹ˆλ‹€. λ§Œμ•½ μž‘μ—… 쀑에 였λ₯˜κ°€ λ°œμƒν•˜κ±°λ‚˜, νŠΈλžœμž­μ…˜μ„ μ·¨μ†Œν•΄μ•Ό ν•˜λŠ” 경우 λ‘€λ°±(Rollback)을 μˆ˜ν–‰ν•˜μ—¬ 이전 μƒνƒœλ‘œ λ˜λŒλ¦½λ‹ˆλ‹€.
  4. νŠΈλžœμž­μ…˜ μ’…λ£Œ (End Transaction)
    • νŠΈλžœμž­μ…˜μ΄ μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλ˜μ—ˆλ‹€λ©΄, νŠΈλžœμž­μ…˜μ„ μ’…λ£Œν•©λ‹ˆλ‹€. μ΄λ•Œ, νŠΈλžœμž­μ…˜ μ‹λ³„μžλ„ ν•¨κ»˜ μ‚­μ œλ©λ‹ˆλ‹€.

λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œμ—μ„œλŠ” νŠΈλžœμž­μ…˜μ„ κ΄€λ¦¬ν•˜κΈ° μœ„ν•œ μ—¬λŸ¬ 기술과 μ•Œκ³ λ¦¬μ¦˜μ΄ μžˆμŠ΅λ‹ˆλ‹€.예λ₯Ό λ“€μ–΄, λ‘œκΉ…(Logging) κΈ°μˆ μ€ νŠΈλžœμž­μ…˜ μˆ˜ν–‰ κ³Όμ •μ—μ„œ λ°œμƒν•˜λŠ” λͺ¨λ“  λ³€κ²½ λ‚΄μš©μ„ λ‘œκ·Έμ— κΈ°λ‘ν•˜μ—¬, λ³΅κ΅¬ν•˜κΈ° μ‰½κ²Œ λ§Œλ“€μ–΄ μ€λ‹ˆλ‹€.

λ˜ν•œ, ꡐ착 μƒνƒœ(Deadlock)λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ νŠΈλžœμž­μ…˜ κ°„μ˜ μš°μ„ μˆœμœ„λ₯Ό κ²°μ •ν•˜κ±°λ‚˜, 락(Lock)을 μ„€μ •ν•˜μ—¬ 고립성을 μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
μ΄λŸ¬ν•œ 기술과 μ•Œκ³ λ¦¬μ¦˜μ„ 톡해, λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œμ—μ„œ μ•ˆμ •μ μΈ νŠΈλžœμž­μ…˜ μ²˜λ¦¬κ°€ κ°€λŠ₯ν•΄μ§‘λ‹ˆλ‹€.


728x90
λ°˜μ‘ν˜•