ACID
ACID properties of transactions
1. Transactions π©βπ»
νΈλμμ
μ΄λ μͺΌκ°€ μ μλ μ
무 μ²λ¦¬μ μ΅μ λ¨μ
λ₯Ό λ§νλ€. μλ₯Ό λ€μ΄ βAμ κ³μ’μμ Bμ κ³μ’λ‘ λ§ μμ μ‘κΈνλ€βμμ 2κ°μ μμ
μ΄ μ‘΄μ¬νλ€.
βAμ κ³μ’μμ λ§ μμ μΈμΆνλ€β, βBμ κ³μ’μ λ§ μμ μ
κΈνλ€.β κ·Έλ¦¬κ³ μ΄ λ μμ
μ λ³κ°μΌ μ μλ€. Aμ κ³μ’μμ
μΈμΆμ νμΌλ Bμ κ³μ’λ‘ μ
κΈμ΄ λμ§ μκ±°λ, Aμ κ³μ’μμ μΈμΆ μμ΄ Bμ κ³μ’λ‘ μ
κΈμ΄ λλ μΌμ΄ μ‘΄μ¬ν΄μλ μ λλ€. μ΄ λμ λΆλ¦¬λ μ
μμΌλ©° νλμ λ¨μΌ κ±°λ λ΄μμΌλ‘ μ²λ¦¬λμ΄μΌνλ μͺΌκ°€ μ μλ μ
무 μ²λ¦¬μ μ΅μ λ¨μ
κ° λλ€. νΈλμμ
μ²λ¦¬κ° μ μμ μΌλ‘ μλ£λ κ²½μ°
commit
μ νκ³ , μ€λ₯κ° λ°μν κ²½μ° rollback
μ νλ€.
μ΄κ²μ DBMS μμ λ§€μ° μ€μν κ°λ μΌλ‘ DB μλ²μ μ¬λ¬ ν΄λΌμ΄μΈνΈκ° λμμ μ μν΄ λ°μ΄ν°λ₯Ό μ²λ¦¬ν λ(concurrent νλ‘κ·Έλλ°) λ°μν μ μλ λ°μ΄ν° μ€λ₯λ₯Ό μ μ΄νκΈ° μν΄ μ¬μ©λλ©° νΈλμμ μ ACID λ₯Ό λ§μ‘±ν΄μΌνλ€.
2. ACID π©βπ»
1. Atomicity (μμμ±)
Atomicity λ νΈλμμ
μ΄ λ μ΄μ μκ² μͺΌκ°€ μ μλ μ΅μνμ μ
무 λ¨μλ‘ λͺ
λ Ήμ΄ λͺ¨λ λ°μλκ±°λ, λͺ¨λ λ°μλμ§ μμμΌ νλ€. λΆλΆμ μΌλ‘
μ€νλκ±°λ μ€λ¨λμ§ μμμΌ ν¨μ μλ―Ένλ©° μμ
λ΄μμ rollback
λλ€.
κΈ°λ³Έμ μΌλ‘ rollback μ νΈλμμ
μ λͺ¨λ μμ
λ΄μμ λλ리λλ°, μ€λ₯κ° λ°μνκΈ° μ΄μ μ§μ μ μ νν μκ³ μλ€λ©΄ μ΄ μ§μ μ
save point
λ‘ μ§μ νλ©΄ μ΄ μ§μ κΉμ§ rollback μ΄ λκ³ , μ¬κΈ°μλΆν° μ
무λ₯Ό λ€μ μ§νν μ μλ€. λ¬Όλ‘ , μ€λ₯ λ°μ μ§μ μ λ€μ
μ§ννλ€λ κ²μ΄μ§ μ΄ μνλ₯Ό commit νλ€λ μλ―Έλ μλλ€.
Atomicity λ ν λ§λλ‘ μ μνλ©΄
All or Nothing
μ κ°λ μ΄λ€.
2. Consistency (μΌκ΄μ±)
νΈλμμ
μ΄ ν
μ΄λΈμ λ³κ²½ μ¬νμ μ μ©ν λ νΉμ 쑰건μ λκ³ , κ·Έ 쑰건μ λ§μ‘±νλ λ°μ΄ν°λ§ λ³κ²½μ νμ©ν΄ λ°μ΄ν°μ μμμ΄λ μ€λ₯λ₯Ό λ°©μ§νλ€.
μλ₯Ό λ€μ΄ λͺ¨λ κ³μ’λ μκ³ κ° μμ΄μΌ νλ€λ λ¬΄κ²°μ± μ μ½
μ‘°κ±΄μ΄ μλ€λ©΄, μ΄λ₯Ό μλ°νλ νΈλμμ
μ μ€λ¨λλ€.
3. Isolation (λ 립μ±)
μ¬λ¬ μ¬μ©μκ° κ°μ ν μ΄λΈμμ λͺ¨λ λμμ μ½κ³ μ°κΈ° μμ μ ν λ, κ°κ°μ νΈλμμ μ κ²©λ¦¬ν΄ μλ‘ λ°©ν΄νκ±°λ μν₯μ λ―ΈμΉμ§ μλλ‘ νλ€. κ°κ°μ μμ²μ΄ μ€μ λ‘λ λͺ¨λ λμμ λ°μνλλΌλ, λ§μΉ νλμ© λ°μνλ κ²μ²λΌ λ°μν μ μμ΅λλ€. μ¦, νΈλμμ μ μ€νλ΄μμ μ°μμ μ΄μ΄μΌν¨μ μλ―Ένλ€.
μλ₯Ό λ€μ΄ μ βAμ κ³μ’μμ Bμ κ³μ’λ‘ λ§ μμ μ‘κΈνλ€β κ²½μ°λ₯Ό 보면, βAμ κ³μ’μμ λ§ μμ μΈμΆνλ€β,
βBμ κ³μ’μ λ§ μμ μ
κΈνλ€.β 2κ°μ μμ
μ νλμ νΈλμμ
μ΄λ―λ‘, μ΄ νΈλμμ
μ΄ μ’
λ£λκΈ° μ μνμμ΄ μ΄μ²΄ κ³Όμ μ λ³Ό μ μλ€.
Aμ κ³μ’μμ Bμ κ³μ’λ‘ λ§ μμ μ‘κΈνλ€
μ μνμμ΄ Aμ μΈμΆμ νμΈνλ€
λ μλ‘ λ€λ₯Έ νΈλμμ
μΌλ‘ 격리λμ΄ μκΈ° λλ¬Έμ΄λ€.
4. Durability (μ§μμ±)
μ±κ³΅μ μΌλ‘ μνλ νΈλμμ μ μꡬμ μΌλ‘ λ°μλμ΄μΌνλ€. μ¦, μ±κ³΅ν νΈλμμ μ μμ μ μΌλ‘ 보쑴λμ΄μΌνλ€. μμ€ν λ¬Έμ , DB μΌκ΄μ± μ²΄ν¬ λ±μ νλλΌλ μ μ§μΈμ΄μΌ ν¨μ μλ―Ένλ€. μ νμ μΌλ‘ λͺ¨λ νΈλμμ μ λ‘κ·Έλ‘ λ¨κ³ , μμ€ν μ₯μ λ°μ μ μνλ‘ λλ릴 μ μλ€. λ°λΌμ νΈλμμ μ λ‘κ·Έμ λͺ¨λ κ²μ΄ μ μ₯λ νμλ§ commit μνλ‘ κ°μ£Όλ μ μλ€.
3. Commit and Rollback π©βπ»
- Commit: INSERT, UPDATE, DELETE μ κ°μ DBμ λ°μ΄ν°λ₯Ό λ³κ²½νλ μμ μ΄ λͺ¨λ μ’ λ£λ ν κ²°κ³Όκ° μ§μμ±μ κ°λλ‘ μ μ₯ν¨μ μλ―Ένλ€. Commit μ΄ μ΄λ£¨μ΄μ§κΈ° μ λͺ¨λ μμ μ μμμ μμ μλ―Ένλ€.
- Rollback: ACID μλ° λλ μ¬μ©μ μμλ‘ νΈλμμ μ μμ λ΄μμ λλλ¦Όμ μλ―Ένλ€. λ³λμ save point κ° μλ€λ©΄ νΈλμμ μ΄ μμ μμ μΌλ‘ λλλ¦°λ€.
4. Recovery
λ°μ΄ν°λ² μ΄μ€λ λ°μ΄ν°μ μμ μ±κ³Ό μ λ’°μ±μ μν΄ ACID μμΉμ μ μ©ν΄ νΈλμμ μ κ΄λ¦¬νλ€. νμ§λ§ μΈλΆ μμΈμ μν΄ νΈλμμ κ²°κ³Όκ° μλͺ»λ μλ μκ³ , μλͺ»λ νΈλμμ μ λ°μμΌλ‘ κ°μ λ‘ λλλ €μΌ ν μλ μλ€. μ΄ λ μ¬μ©νλ κ²μ΄ λ°μ΄ν°λ² μ΄μ€ ν볡 κΈ°λ²μΌλ‘, νΈλμμ μ΄ μλ£λ ν(commit) μννλ κ²κ³Ό μ΄μ μ μννλ κ² λͺ¨λ μ‘΄μ¬νλ€.
1. Database Failure Types
- Transaction Failure: νΈλμμ μ μ€ν μ λ Όλ¦¬μ μλ¬λ‘ λ°μν μ μλ μλ¬ μν©.
- System Failure: νλμ¨μ΄ μμ€ν μ체μμ λ°μν μ μλ μλ¬ μν©.
- Media Failure: λμ€ν¬ μ체μ μμμΌλ‘ λ°μν μ μλ μλ¬ μν©.
2. Database Recovery Performance
- Undo: μΌλ°μ μΌλ‘ μ°λ¦¬κ° μλ λ±μ λ¬Έμλ₯Ό μ¬μ©ν λ λλ리기 νλ κ²μ μκ°νλ©΄ λλ€. νΈλμμ
λ‘κ·Έκ° κΈ°λ‘λλ―λ‘ μλ¬μ κ΄λ ¨λ λ³κ²½ λ΄μμ
λλλ € μ·¨μν¨μΌλ‘μ¨ μλ¬λ₯Ό 볡ꡬνλ€. νΈλμμ
μ μμ
μ체μ λ¬Έμ κ° μμ κ²½μ° μ¬μ©νλ€.
νΈλμμ λ‘κ·Έ νμΌμ μ΄μ©ν 볡ꡬμ μΌλ°μ μΌλ‘ νΈλμμ μ λ‘κ·Έ νμΌμ start λ μκ³ , commit μ΄ μλ κ²½μ° μννλ€. - Redo: μλ¬κ° λ°μν νΈλμμ μ λ€μ μ€ννλ€. νΈλμμ μ μμ μ체λ λ¬Έμ κ° μκ³ , μΈλΆ μμΈμ μν μλ¬μΌ κ²½μ° μ΄λ₯Ό λ€μ μνν¨μΌλ‘μ¨ μλ¬λ₯Ό 볡ꡬνλ€. μλ₯Ό λ€μ΄ νμΌμ μ μ‘νλ λ° μΈν°λ·μ΄ λ겨 μ·¨μλ μ μ‘ λ΄μμ λ€μ μ€ννλ κ²κ³Ό κ°λ€κ³ λ³Ό μ μλ€. νΈλμμ λ‘κ·Έ νμΌμ μ΄μ©ν 볡ꡬμ μΌλ°μ μΌλ‘ νΈλμμ μ λ‘κ·Έ νμΌμ start μ commit μ΄ λͺ¨λ μλ κ²½μ° μννλ€.
3. Database Recovery Techniques
- λ‘κ·Έ κΈ°λ° ν볡 κΈ°λ²μλ μ§μ°κ°±μ ν볡 κΈ°λ²
Deferred Update
μ μ¦μκ°±μ ν볡 κΈ°λ²Immediate Update
κ° μλ€. - κ²μ¬μ ν볡 κΈ°λ²
Checkpoint Recovery
μ κ²μ¬μ μ /νλ₯Ό κΈ°μ€μΌλ‘ ν΄λΉ μμ κΉμ§λ§ Redo λλ Undo λ₯Ό μννλ€. - κ·Έλ¦Όμ νμ΄μ§ ν볡 κΈ°λ²
Shadow Paging Recovery
μ νΈλμμ μ΄ μμλλ μμ μ μ€νλλ λ©λͺ¨λ¦¬ μμ Current Page Table κ³Ό λμΌν Shadow Page Table λ₯Ό 물리 λμ€ν¬μ μμ±νλ€. λ§μ½ νΈλμμ μ΄ μ±κ³΅ν κ²½μ° Current Page Table μ μ·¨νκ³ , μ€ν¨ν κ²½μ° Shadow Page Table μ μ·¨νλ€.
Reference
- βACID properties of transactions.β IBM. Jan. 10, 2023, ACID.
- βνΈλμμ .β ν΄μλ·. Dec. 19, 2022, νΈλμμ .
- βλ°μ΄ν°λ² μ΄μ€ ν볡.β ITμν€. Oct. 22, 2020, λ°μ΄ν°λ² μ΄μ€ ν볡.