λ°μν
νΈλμμ μ μ±μ§
Transaction(νΈλμμ )μ 4κ°μ§ μ±μ§ (ACID)
- Atomicity(μμμ±)
- all or nothing
- νΈλμμ μ λͺ¨λ μ°μ°λ€μ΄ μ μ μλ£λκ±°λ μ΄λ ν μ°μ°λ μνλμ§ μμ μνλ₯Ό 보μ₯
- Consistency(μΌκ΄μ±)
- 곡μ μΌλ‘ μνλ νΈλμμ μ μ λΉν λ°μ΄ν°λ€μ΄ λ°μ΄ν°λ² μ΄μ€μ λ°μλμμμ μλ―Έ
- DBμμ λ°μ΄ν° λ³κ²½ μ μ¬μ μ μ€μ λμ΄ μλ λ£°μ λ§μ§ μλ λ°μ΄ν°κ° λ€μ΄κ°λ κ²μ λ°©μ§
- Isolation(λ 립μ±/κ³ λ¦½μ±)
- μ¬λ¬ νΈλμμ μ΄ λμμ μν λλλΌλ κ°κ°μ νΈλμμ μ λ€λ₯Έ νΈλμμ μ μνμ μν₯μ λ°μ§ μκ³ λ 립μ μΌλ‘ μνλμ΄μΌ ν¨
- λ€μμ μΈμ λλ μ μ κ° κ°μ μκ°μ κ°μ λ°μ΄ν°μ μ κ·Όνκ³ μ²λ¦¬ μ€μΌ λ μν μ€μΈ νΈλμμ μ΄ μλ£ λ λ κΉμ§ λ€λ₯Έ νΈλμμ μ΄ λΌμ΄ λ€μ§ λͺ»νκ² ν¨μΌλ‘μ¨ λ°μ΄ν°μ λλ½μ΄λ μλͺ»λ λ°μ΄ν°μ λν λ°©μ§
- Durability(μ§μμ±)
- νΈλμμ μ΄ μ±κ³΅μ μΌλ‘ μλ£λμ΄ μ»€λ°λμλ€λ©΄, ν΄λΉ νΈλμμ μ μν λ°μλ λͺ¨λ λ³κ²½μ ν₯νμ μ΄λ€ μννΈμ¨μ΄λ νλμ¨μ΄ μ₯μ κ° λ°μ λλλΌλ 보쑴λμ΄μΌ ν¨
5.1.1 MySQLμμμ νΈλμμ
Transaction(νΈλμμ )
- μμ μ μμ μ±μ 보μ₯ν΄ μ£Όλ κ²
- λ
Όλ¦¬μ μΈ μμ
μ
μ λͺ¨λ μλ²½νκ² μ²λ¦¬ν΄μΌν¨
- μλ²½νκ² μ²λ¦¬νμ§ λͺ»νλ€λ©΄, μ μνλ‘ λ³΅κ΅¬ν΄μΌν¨
- μΌλΆλ§ μ μ©λλ νμ(Partial update)μ΄ λ°μνμ§ μμμΌν¨
- 쿼리μ κ°μμ κ΄κ³μμ΄ λ
Όλ¦¬μ μΈ μμ
μμ²΄κ° 100% λλ 0% μ μ©λμΌν¨
- 100% : COMMIT μ€ν μ
- 0% : ROLLBACK μ
- μ€ν λ¦¬μ§ μμ§μ λ°λ₯Έ νΈλμμ
μ€λ₯ μ, μ€ν κ²°κ³Ό
- MyISAM : νΈλμμ μ μ€λ₯μλ λΆλΆ μ λ°μ΄νΈ μ€ν → λ°μ΄ν° μ ν©μ±(λͺ¨μ μμ΄ μΌμΉν¨) λ¬Έμ
- InnoDB : νΈλμμ μ μΌλΆλΌλ μ€λ₯ μ, 볡ꡬ
mysql> create table tb_tab_myisam(col int primary key) ENGINE=MyISAM;
mysql> insert into tb_tab_myisam values (3);
mysql> create table tb_tab_innodb(col int primary key) ENGINE=InnoDB;
mysql> insert into tb_tab_innodb values (3);
mysql> insert into tb_tab_myisam values(1),(2),(3);
Error Code: 1062. Duplicate entry '3' for key 'tb_tab_myisam.PRIMARY'
mysql> insert into tb_tab_innodb values(1),(2),(3);
Error Code: 1062. Duplicate entry '3' for key 'tb_tab_innodb.PRIMARY'
-- MyISAM
mysql> select * from tb_tab_myisam;
+-----+
| col |
+-----+
| 1 |
| 2 |
| 3 |
+-----+
-- InnoDB
mysql> select * from tb_tab_innodb;
+-----+
| col |
+-----+
| 3 |
+-----+
5.2.2 μ£Όμμ¬ν
νΈλμμ μ λ²μλ μ΅μννλΌ.
- κΌ νμν μ΅μμ μ½λμλ§ μ μ©νλ κ²μ΄ μ’λ€.
μ²λ¦¬μμ - > **νΈλμμ
μμ** ->μ¬μ©μ λ‘κ·ΈμΈ μ¬λΆ νμΈ -> μ¬μ©μ κΈμ°κΈ° λ΄μ© μ€λ₯ μ¬λΆ νμΈ -> 첨λΆλ νμΌμ μ
λ‘λ κ°λ₯ νμ₯μ λ° μ©λ νμΈ , μ μ₯ -> **μ¬μ©μ μ
λ ₯ λ΄μ©(κΈ κ³Ό 첨λΆνμΌ μ 보) μ DBμ μ μ₯** -> μ μ₯ λ λ΄μ© μ‘°ν λ° μΆκ° μ 보 DBμμ μ‘°ν -> κ²μλ¬Όμ λν μλ¦Ό λ©μΌ λ°μ‘ -> **λ©μΌ λ°μ‘ μ΄λ ₯ DBμ μ μ₯** -> **νΈλμμ
μ’
λ£** -> μ²λ¦¬ μλ£
- νΈλμμ
μμλΆν° μ’
λ£κΉμ§ μ§μ DBμ μ μ₯νλ νλμ 2λ² λ°μ μμ
-
- μ¬μ©μ μ λ ₯ λ΄μ© DB μ μ₯, 2) λ©μΌ λ°μ‘ μ΄λ ₯ DB μ μ₯
- μ 2κ°μ νλμλ§ νΈλμμ μ μμ λ° μ’ λ£νλ©΄ λ¬Έμ λ₯Ό νΌν μ μλ€.
-
- μΈλΆ λ‘μ§μ λ¬Έμ λ‘ μ₯μκ° μμλ κ²½μ°, μ 체μ μΈ μ²λ¦¬κ° λ§€μ° λ¦μ΄μ§κ±°λ λ¬Έμ κ°λ₯μ± λμ
- νΉν ,λ€νΈμν¬ μμ μ΄ μλ κ²½μ° λ°λμ νΈλμμ μμ λ°°μ
- DBMS μλ²κ° λμ λΆνμνλ‘ λΉ μ§κ±°λ μνν μνλ‘ λΉ μ§ κ°λ₯μ± λμ
λ°μν