Isolation Level, ๊ณ ๋ฆฝ ์์ค์ ๋ํด์ ์ดํดํ๊ธฐ ์ํด์๋ Transaction, ํธ๋์ญ์ ์ ๋ํ ์ดํด๊ฐ ํ์ํ๋ค.
๋ง์ฝ ํธ๋์ญ์ ์ ๋ํด์ ํ์คํ๊ฒ ์ดํด๋ฅผ ํ์ง ๋ชป ํ๋ค๋ฉด, ํ์ธํ๊ณ ์ค๋ ๊ฒ์ ์ถ์ฒํ๋ค!
Isolation Level, ๊ณ ๋ฆฝ ์์ค

Isolation Level, ๊ณ ๋ฆฝ ์์ค์ ํธ๋์ญ์ ๋ค ๋ผ๋ฆฌ ์ผ๊ด๋ ๋ฐ์ดํฐ๋ฅผ ์ผ๋ง๋ ํ์ฉํ ๊ฒ์ธ์ง๋ฅผ ์ ํ๋ ์์ค์ด๋ค.
๊ณ ๋ฆฝ ์์ค์๋ ์ด 4๊ฐ์ง์ ์์ค, 3๋จ๊ณ๊ฐ ์กด์ฌํ๋ค (0๋จ๊ณ ๋ถํฐ ์์)
- Level 0 Read Uncommitted
- Level 1 Read Committed
- Level 2 Repeatable Read
- Level 3 Serializable
์ด๋ฐ ๊ณ ๋ฆฝ ์์ค์๋ ๋๋ฆ์ ํน์ง์ด ์๋ค.

์ด์ ๊ฐ๊ฐ์ ์์ค์ ๋ฐ๋ผ์ ์์๋ณด์.
Isolation Level, ๊ณ ๋ฆฝ ๋ ๋ฒจ
Level 0. Read Uncommitted
Read Uncommitted๋ Uncommitted ๋ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์๋ค.
๊ทธ๋ ๊ฒ ๋๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฒฐ๊ณผ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ํ๋ค๋ค๋ ๋จ์ ์ด ์กด์ฌํ์ง๋ง ๋์ ๋์์ฑ์ ํฅ์๋๋ค.
transaction 1 ์ด ์ํ ์ค์ transaction 2 ๊ฐ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋๋ฐ, transaction1 ์ ๋ณ๊ฒฝ๋๊ธฐ ์ ์ ๊ฐ์ ์ฝ๊ธฐ ๋๋ฌธ์ ์ต๋ํ ์ฌ์ฉํ์ง ์์์ผ ํ๋ค. ์ด๋ฅผ Dirty Read ๋ผ๊ณ ํ๋ค.
๋ฐ์๋ ์ ์๋ ์ด์ ํ์
- Dirty Read : Uncommitted ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๋ ๊ฒฝ์ฐ
- Non Repeatable Read : ๋์ผํ ์ฟผ๋ฆฌ๋ฅผ 2๋ฒ ์คํํ ๋ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์์ /์ญ์ ํ๋ ๊ฒฝ์ฐ
- Phantom Read : ๋์ผํ ์ฟผ๋ฆฌ๋ฅผ 2๋ฒ ์คํํ ๋ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์ ๋ฐ์ดํธํ๋ ๊ฒฝ์ฐ
Level 1. Read Committed
Read Committed๋ ํธ๋์ญ์ ์ด ์์ ํ๋ ์์ ์ Lock์ ๊ฑด๋ค.
์ด Lock ์ ๊ฑฐ๋ ์ฃผ์ฒด๋ INSERT ๋ UPDATE ์ ๊ฐ์ ์ฒ๋ฆฌ ์ธ์
์ธ๋ฐ, ์ด๋ ๊ฒ ํ๋ฉด ์ฟผ๋ฆฌํ๋ ์ธ์
(SELECT) ์ INSERT๋ UPDATE๊ฐ ๋๊ธฐ ๊น์ง ๊ธฐ๋ค๋ฆฌ๊ธฐ ๋๋ฌธ์ Dirty Read ๋ฅผ ํผํ ์ ์๋ค.
๋๋ถ๋ถ์ DBMS ์ ๊ธฐ๋ณธ์ ์ธ Isolation Level์ด๋ค. MySql ์ ํด๋น๋์ง ์๋๋ค.
- Lock ์ ๊ฑฐ๋ ์ฃผ์ฒด : ์ฒ๋ฆฌํ๋ ์ธ์ (INSERT, UPDATE)
- ์ฟผ๋ฆฌํ๋ ์ธ์ (SELECT) ์ด ๋๊ธฐ
๋ฐ์๋ ์ ์๋ ์ด์ ํ์
- Non Repeatable Read : ๋์ผํ ์ฟผ๋ฆฌ๋ฅผ 2๋ฒ ์คํํ ๋ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์์ /์ญ์ ํ๋ ๊ฒฝ์ฐ
- Phantom Read : ๋์ผํ ์ฟผ๋ฆฌ๋ฅผ 2๋ฒ ์คํํ ๋ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์ ๋ฐ์ดํธํ๋ ๊ฒฝ์ฐ
Level 2. Repeatable Read
Repeatable Read๋ Read Committed ์ ๋ง์ฐฌ๊ฐ์ง๋ก ํธ๋์ญ์ ์ด ์์ ํ๋ ์์ ์ Lock์ ๊ฑด๋ค.
ํ์ง๋ง ๋ค๋ฅธ ์ ์ Lock์ ๊ฑฐ๋ ์ฃผ์ฒด์ด๋ค.
Repeatable Read๋ ์ฟผ๋ฆฌํ๋ ์ธ์
์ด ๋ฝ์ ๊ฑธ๊ธฐ ๋๋ฌธ์ Non Repeatable Read ๋ฅผ ํํผํ ์ ์๊ฒ ๋๋ค.
MySql ์ Default Isolation Level์ด๋ค.
- Lock ์ ๊ฑฐ๋ ์ฃผ์ฒด : ์ฟผ๋ฆฌํ๋ ์ธ์ (SELECT)
- ์ฒ๋ฆฌํ๋ ์ธ์ (INSERT, UPDATE)์ด ๋๊ธฐ
์ด์ ํ์ ๋ฐ์ ๊ฐ๋ฅ
- Phantom Read : ๋์ผํ ์ฟผ๋ฆฌ๋ฅผ 2๋ฒ ์คํํ ๋ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์ ๋ฐ์ดํธํ๋ ๊ฒฝ์ฐ
Level 3. Serializable
Serializable ๋ ์ด๋ฆ ๊ทธ๋๋ก ์ง๋ ฌํ ์ ๋ต์ด๋ค. ๋ชจ๋ ๋์์ด ์ง๋ ฌํ ํ๊ฒ ์๋ํ๋ค.
์ต์์ Isolation Level์ด๋ค.
๋ฐ์ดํฐ์ ์์ ์ฑ์ด ๋งค์ฐ ์ค์ํ ํน์ํ ์ํฉ์ด ์๋ ์ด์ ๊ฑฐ์ ์ฌ์ฉํ์ง ์์
๋ฐ์ํ ์ ์๋ ์ด์ํ์
์๋ค.
Isolation Level ์ด ํ์ฉํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด์ ํ์
Isolation Level | Dirty Read | Non-Repeatable Read | Phantom Read |
Level 0, Read Uncommitted | ํ์ฉ | ํ์ฉ | ํ์ฉ |
Level 1, Read Committed | x | ํ์ฉ | ํ์ฉ |
Level 2, Repeatable Read | x | x | ํ์ฉ |
Level 3, Serializable | x | x | x |
'๐ฌweb application > - Database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํ์ ํ์ด์ง, ๋จ๊ณ๋ณ๋ก ์ต์ ํํ๊ธฐ (0) | 2023.11.19 |
---|---|
์คํ์ ํ์ด์ง์ด ๋๋ฆฐ ์ง์ง ์ด์ (6) | 2023.11.19 |
[๋ฐ์ดํฐ๋ฒ ์ด์ค] Transaction, ํธ๋์ญ์ ์ด๋? (0) | 2021.04.07 |
[SQL๋ฌธ ๊ธฐ์ด] DML ๋ฐ์ดํฐ ์กฐ์์ด :: INSERT, UPDATE, DELETE (0) | 2020.07.07 |
[SQL๋ฌธ ๊ธฐ์ด] DDL ๋ฐ์ดํฐ ์ ์์ด :: CREATE, ALTER, DROP, TRUNCATE ๋ฌธ (1) | 2020.07.07 |
๋๊ธ