Transaction

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

λ°μ΄ν„°λ² μ΄μŠ€μ˜ μƒνƒœλ₯Ό λ³€ν™”μ‹œν‚€κΈ° μœ„ν•΄ μˆ˜ν–‰ν•˜λŠ” μž‘μ—…μ˜ λ‹¨μœ„

νŠΈλžœμž­μ…˜μ΄ ν•„μš”ν•œ 이유

SELECT β†’ UPDATE β†’ INSERT 순으둜 λ™μž‘ν•˜λŠ” λΉ„μ¦ˆλ‹ˆμŠ€ 둜직이 μžˆλ‹€κ³  κ°€μ •ν•˜μž.

λ§Œμ•½ UPDATEλ₯Ό μ„±κ³΅μ μœΌλ‘œ μˆ˜ν–‰ν•œ ν›„ INSERTλ₯Ό μˆ˜ν–‰ν•˜λŠ” κ³Όμ •μ—μ„œ 였λ₯˜κ°€ λ°œμƒν•΄ μ„±κ³΅μ μœΌλ‘œ INSERTκ°€ μˆ˜ν–‰λ˜μ§€ μ•Šμ•˜λ‹€λ©΄, μ΄λŠ” λ‘œμ§μ„ μž‘μ„±ν•œ κ°œλ°œμžκ°€ μ˜λ„ν•œλŒ€λ‘œ 처리된 것이 μ•„λ‹ˆλΌκ³  봐야 ν•œλ‹€. λ”°λΌμ„œ κ°œλ°œμžλŠ” μ–΄λ–»κ²Œλ“  μˆ˜ν–‰λœ UPDATEλ₯Ό λ˜λŒλ €μ•Ό ν•˜κ³ , μ΄λŠ” λ³΅μž‘ν•œ μΆ”κ°€ μž‘μ—…μ„ μš”κ΅¬ν•œλ‹€.

νŠΈλžœμž­μ…˜μ„ λ„μž…ν•˜λ©΄ INSERTκΉŒμ§€ λͺ¨λ“  쿼리가 μ •μƒμ μœΌλ‘œ μˆ˜ν–‰λœ κ²½μš°μ—λ§Œ λ³€κ²½ 사항을 λ°˜μ˜ν•˜κ³ (Commit), 쀑간에 μ˜ˆμ™Έ 등에 μ˜ν•΄ 일뢀 쿼리가 μ •μƒμ μœΌλ‘œ μˆ˜ν–‰λ˜μ§€ λͺ»ν•œ κ²½μš°μ—λŠ” μˆ˜ν–‰λœ 쿼리의 λ³€κ²½ 사항을 되돌렀(Rollback) 데이터λ₯Ό ν•˜λ‚˜μ˜ λ‹¨μœ„λ‘œ 닀루고 일관성을 보μž₯ν•  수 있게 ν•œλ‹€.

νŠΈλžœμž­μ…˜μ˜ νŠΉμ§•

νŠΈλžœμž­μ…˜μ€ λ‹€μŒμ˜ μš”μ†Œλ“€μ„ 보μž₯ν•¨μœΌλ‘œμ¨ μ•ˆμ „μ„±μ„ 보μž₯ν•œλ‹€.

  • μ›μžμ„± (Atomicity)

    • μ›μžμ„±μ΄λž€ 더 μž‘μ€ λΆ€λΆ„μœΌλ‘œ μͺΌκ°€ 수 μ—†μŒμ„ 의미

    • ν•˜λ‚˜μ˜ μž‘μ—… λ‹¨μœ„λŠ” λͺ¨λ‘ λ°˜μ˜λ˜κ±°λ‚˜(Commit) κ·Έλ ‡μ§€ μ•Šκ±°λ‚˜(RollBack) λ‘˜ 쀑 ν•˜λ‚˜μ—¬μ•Ό ν•˜μ§€ μΌλΆ€λ§Œ λ°˜μ˜λ˜μ–΄μ„œλŠ” μ•ˆ 됨

  • 일관성 (Consistency)

    • νŠΈλžœμž­μ…˜ κ²°κ³ΌλŠ” 일관적인 λ°μ΄ν„°λ² μ΄μŠ€μ— μ μš©λ˜μ–΄μ•Ό 함

    • 즉, νŠΈλžœμž­μ…˜ 도쀑 λ°μ΄ν„°λ² μ΄μŠ€μ— λ³€ν™”κ°€ μΌμ–΄λ‚˜λ„ νŠΈλžœμž­μ…˜μ€ 처음 μ‹œμž‘ μ‹œ μ°Έμ‘°ν•œ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό κΈ°μ€€μœΌλ‘œ μ§„ν–‰

  • 격리성 (Isolation)

    • μ—¬λŸ¬ 개의 νŠΈλžœμž­μ…˜μ΄ 싀행될 λ•Œ, ν•˜λ‚˜μ˜ νŠΈλžœμž­μ…˜μ€ μ„œλ‘œ λ‹€λ₯Έ νŠΈλžœμž­μ…˜μ— κ°„μ„­ν•  수 μ—†μŒ

    • λ™μΌν•œ λ°μ΄ν„°λ² μ΄μŠ€ λ ˆμ½”λ“œμ— μ ‘κ·Όν•˜λ©΄ λ™μ‹œμ„± λ¬Έμ œκ°€ λ°œμƒν•˜κΈ° λ•Œλ¬Έ

    • νŠΈλžœμž­μ…˜ 격리와 μ—°κ²°

  • 지속성 (Durability)

    • νŠΈλžœμž­μ…˜μ˜ 처리 κ²°κ³ΌλŠ” λ°μ΄ν„°λ² μ΄μŠ€μ— 영ꡬ적으둜 λ°˜μ˜λ˜μ–΄μ•Ό 함

    • HW 결함, DB μ„œλ²„ λ‹€μš΄ 등에도 데이터가 λ³΄μ‘΄λ˜μ–΄μ•Ό 함을 의미 (λΉ„νœ˜λ°œμ„±μœΌλ‘œ μ €μž₯)

μ€‘μš”ν•œ μš”μ†ŒλŠ” μ›μžμ„±κ³Ό 격리성이닀. νŠΈλžœμž­μ…˜μ€ λ¬Έμ œκ°€ λ°œμƒν–ˆμ„ λ•Œ λ‘€λ°±ν•  λ²”μœ„λ₯Ό μ§€μ •ν•˜κΈ° μœ„ν•΄ λ‹€μˆ˜μ˜ 쿼리λ₯Ό ν•˜λ‚˜μ˜ λ‹¨μœ„λ‘œ λ¬ΆλŠ” κΈ°λŠ₯μ΄λΌλŠ” 것(μ›μžμ„±), νŠΈλžœμž­μ…˜ κ°„μ˜ μž‘μ—… 곡간을 μΉ¨λ²”ν•˜κ²Œ 되면 μ˜λ„ν•˜μ§€ μ•Šμ€ λ³€μˆ˜κ°€ λ°œμƒν•  수 있기 λ•Œλ¬Έμ— νŠΈλžœμž­μ…˜μ„ 격리해야 ν•œλ‹€λŠ” 것(격리성)에 집쀑해야 ν•œλ‹€.

Commitκ³Ό Rollback

  • Commit

    • ν•˜λ‚˜μ˜ νŠΈλžœμž­μ…˜μ΄ μ„±κ³΅μ μœΌλ‘œ μˆ˜ν–‰λœ 경우 이 사싀을 νŠΈλžœμž­μ…˜μ˜ 관리 μ£Όμ²΄μ—κ²Œ μ•Œλ¦Ό

    • 이후 ν•΄λ‹Ή λ³€κ²½ 사항은 λ°μ΄ν„°λ² μ΄μŠ€μ— 반영됨

  • Rollback

    • νŠΈλžœμž­μ…˜μ˜ μ²˜λ¦¬μ— μ‹€νŒ¨ν•œ 경우 ν˜ΈμΆœλ˜λŠ” λͺ…λ Ή

    • μ›μžμ„±μ„ 보μž₯ν•˜κΈ° μœ„ν•΄ μ•žμ„œ μˆ˜ν–‰ν•œ λͺ…령듀을 μ·¨μ†Œμ‹œν‚΄

Last updated