λ°μ΄ν°λ₯Ό μ μ₯ν λ λ¨μν νμΌμ μ μ₯ν΄λ λλλ°, λ°μ΄ν°λ² μ΄μ€μ μ μ₯νλ μ΄μ λ 무μμΌκΉ?
μ¬λ¬κ°μ§ μ΄μ κ° μμ§λ§, κ°μ₯ λνμ μΈ μ΄μ λ λ°λ‘ λ°μ΄ν°λ² μ΄μ€λ νΈλμμ μ΄λΌλ κ°λ μ μ§μνκΈ° λλ¬Έμ΄λ€.
νΈλμμ
νΈλμμ μ νλμ κ±°λλ₯Ό μμ νκ² μ²λ¦¬νλλ‘ λ³΄μ₯ν΄μ£Όλ κ²μ λ»νλ€.
μμ ) 5000μ κ³μ’μ΄μ²΄
1. Aμ μκ³ λ₯Ό 5000μ κ°μ
2. Bμ μκ³ λ₯Ό 5000μ μ¦κ°
κ³μ’μ΄μ²΄λΌλ κ±°λλ μ΄λ κ² 2κ°μ§ μμ μ΄ ν©μ³μ Έμ νλμ μμ μ²λΌ λμν΄μΌ νλ€.
λ§μ½ 1λ²μ μ±κ³΅νλλ° 2λ²μμ μμ€ν μ λ¬Έμ κ° λ°μνλ©΄ κ³μ’μ΄μ²΄λ μ€ν¨νκ³ , Aμ μκ³ λ§ 5000μ κ°μνλ μ¬κ°ν λ¬Έμ κ° λ°μνλ€.
λ°μ΄ν°λ² μ΄μ€κ° μ 곡νλ νΈλμμ
κΈ°λ₯μ μ¬μ©νλ©΄ 1,2 λλ€ ν¨κ» μ±κ³΅ν΄μΌ μ μ₯νκ³ ,
μ€κ°μ νλλΌλ μ€ν¨νλ©΄ κ±°λ μ μ μνλ‘ λμκ° μ μλ€.
λͺ¨λ μμ μ΄ μ±κ³΅ν΄μ λ°μ΄ν°λ² μ΄μ€μ μ μ λ°μνλ κ²μ 컀λ°( Commit )μ΄λΌ νκ³ ,
μμ μ€ νλλΌλ μ€ν¨ν΄μ κ±°λ μ΄μ μΌλ‘ λλ리λ κ²μ λ‘€λ°±( Rollback )μ΄λΌ νλ€.
μλ 컀λ°
νΈλμμ μ μ¬μ©νλ €λ©΄ λ¨Όμ μλ 컀λ°κ³Ό μλ 컀λ°μ μ΄ν΄ν΄μΌ νλ€.
μλ 컀λ°μΌλ‘ μ€μ νλ©΄ κ°κ°μ 쿼리 μ€ν μ§νμ μλμΌλ‘ 컀λ°μ νΈμΆνλ€.
λ°λΌμ 컀λ°μ΄λ λ‘€λ°±μ μ§μ νΈμΆνμ§ μμλ λλ νΈλ¦¬ν¨μ΄ μλ€.
νμ§λ§ 쿼리λ₯Ό νλνλ μ€νν λ λ§λ€ μλμΌλ‘ 컀λ°μ΄ λμ΄λ²λ¦¬κΈ° λλ¬Έμ μ°λ¦¬κ° μνλ νΈλμμ κΈ°λ₯μ μ λλ‘ μ¬μ©ν μ μλ€.
λ³΄ν΅ μλ μ»€λ° λͺ¨λκ° κΈ°λ³ΈμΌλ‘ μ€μ λ κ²½μ°κ° λ§κΈ° λλ¬Έμ,
μλ μ»€λ° λͺ¨λλ‘ μ€μ νλ κ²μ νΈλμμ μ μμνλ€κ³ ννν μ μλ€.
set autocommit false; //μλ μ»€λ° λͺ¨λ μ€μ
insert into member(member_id, money) values ('data3',10000);
insert into member(member_id, money) values ('data4',10000);
commit; //μλ 컀λ°
μλ μ»€λ° μ€μ μ νλ©΄ μ΄νμ κΌ commit , rollback μ νΈμΆν΄μΌ νλ€.
νΈλμμ
ACID
μμμ±: νΈλμμ λ΄μμ μ€νν μμ λ€μ λ§μΉ νλμ μμ μΈ κ²μ²λΌ λͺ¨λ μ±κ³΅ νκ±°λ λͺ¨λ μ€ν¨ν΄μΌ νλ€.
μΌκ΄μ±: λͺ¨λ νΈλμμ
μ μΌκ΄μ± μλ λ°μ΄ν°λ² μ΄μ€ μνλ₯Ό μ μ§ν΄μΌ νλ€.
μλ₯Ό λ€μ΄ λ°μ΄ν°λ² μ΄μ€μμ μ ν λ¬΄κ²°μ± μ μ½ μ‘°κ±΄μ νμ λ§μ‘±ν΄μΌ νλ€.
격리μ±: λμμ μ€νλλ νΈλμμ λ€μ΄ μλ‘μκ² μν₯μ λ―ΈμΉμ§ μλλ‘ κ²©λ¦¬νλ€.
μλ₯Ό λ€μ΄ λμμ κ°μ λ°μ΄ν°λ₯Ό μμ νμ§ λͺ»νλλ‘ ν΄μΌ νλ€.
격리μ±μ λμμ±κ³Ό κ΄λ ¨λ μ±λ₯ μ΄μλ‘ μΈν΄ νΈλμμ 격리 μμ€ (Isolation level)μ μ νν μ μλ€.
μ§μμ±: νΈλμμ
μ μ±κ³΅μ μΌλ‘ λλ΄λ©΄ κ·Έ κ²°κ³Όκ° νμ κΈ°λ‘λμ΄μΌ νλ€.
μ€κ°μ μμ€ν μ λ¬Έμ κ° λ°μν΄λ λ°μ΄ν°λ² μ΄μ€ λ‘κ·Έ λ±μ μ¬μ©ν΄μ μ±κ³΅ν νΈλμμ λ΄μ©μ 볡ꡬν΄μΌ νλ€.
νΈλμμ μ μμμ±, μΌκ΄μ±, μ§μμ±μ 보μ₯νλ€.
λ¬Έμ λ 격리μ±μΈλ° νΈλμμ κ°μ 격리μ±μ μλ²½ν 보μ₯νλ €λ©΄ νΈλμμ μ κ±°μ μμλλ‘ μ€νν΄μΌ νλ€.
μ΄λ κ² νλ©΄ λμ μ²λ¦¬ μ±λ₯μ΄ λ§€μ° λλΉ μ§λ€. μ΄λ° λ¬Έμ λ‘ μΈν΄ ANSI νμ€μ νΈλμμ μ 격리 μμ€μ 4λ¨κ³λ‘ λλμ΄ μ μνλ€.
νΈλμμ 격리 μμ€ - Isolation level
READ UNCOMMITED(컀λ°λμ§ μμ μ½κΈ°)
READ COMMITTED(컀λ°λ μ½κΈ°)
REPEATABLE READ(λ°λ³΅ κ°λ₯ν μ½κΈ°)
SERIALIZABLE(μ§λ ¬ν κ°λ₯)
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-1/dashboard
μ€νλ§ DB 1νΈ - λ°μ΄ν° μ κ·Ό ν΅μ¬ μ리 - μΈνλ° | κ°μ
λ°±μλ κ°λ°μ νμν DB λ°μ΄ν° μ κ·Ό κΈ°μ μ κΈ°μ΄λΆν° μ΄ν΄νκ³ , μμ±ν μ μμ΅λλ€. μ€νλ§ DB μ κ·Ό κΈ°μ μ μ리μ ꡬ쑰λ₯Ό μ΄ν΄νκ³ , λ κΉμ΄μλ λ°±μλ κ°λ°μλ‘ μ±μ₯ν μ μμ΅λλ€., - κ°μ
www.inflearn.com
'Spring > Spring DB' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μ€νλ§ DB 1νΈ] - 6. DB λ½ (0) | 2023.03.19 |
---|---|
[μ€νλ§ DB 1νΈ] - 5. λ°μ΄ν°λ² μ΄μ€ μ°κ²° ꡬ쑰μ DB μΈμ (0) | 2023.03.15 |
[μ€νλ§ DB 1νΈ] - 3. DataSource μ΄ν΄ (0) | 2023.03.14 |
[μ€νλ§ DB 1νΈ] - 2. 컀λ₯μ ν(Connection Pool) (0) | 2023.03.14 |
[μ€νλ§ DB 1νΈ] - 1. JDBC μ΄ν΄ (0) | 2023.03.13 |