์ฌ๋ฌ ํธ๋์ญ์
์ด ๋์์ ์ฒ๋ฆฌ๋ ๋,
ํน์ ํธ๋์ญ์
์ด ๋ค๋ฅธ ํธ๋์ญ์
์์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์กฐํํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์๊ฒ ํ์ฉํ ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ
- SERIALIZABLE
- REPEATABLE READ
- READ COMMITTED
- READ UNCOMMITED
ํธ๋์ญ์
์ ๊ฒฉ๋ฆฌ ์์ค์ ๊ฒฉ๋ฆฌ(๊ณ ๋ฆฝ) ์์ค์ด ๋์ ์์๋๋ก
SERIALIZABLE -> REPEATABLE READ -> READ COMMITTED -> READ UNCOMMITED
- ๊ฐ์ฅ ์๊ฒฉํ ๊ฒฉ๋ฆฌ ์์ค
- ์ ํ ํธ๋์ญ์ ์ด ์ฝ์ ๋ฐ์ดํฐ๋ฅผ ํํ ํธ๋์ญ์ ์ด ๊ฐฑ์ ํ๊ฑฐ๋ ์ญ์ ํ์ง ๋ชปํ ๋ฟ๋ง ์๋๋ผ ์ค๊ฐ์ ์๋ก์ด ๋ ์ฝ๋๋ฅผ ์ฐ์ ํ๋ ๊ฒ๋ ๋ง์์ฃผ๋ ๊ฒฉ๋ฆฌ์์ค
- ํธ๋์ญ์ ์์ฐจ์ ์ฒ๋ฆฌ๋ก ์ธํ ๋์ ์ฒ๋ฆฌ ์ฑ๋ฅ (๋งค์ฐ)์ ํ
Serializable์ ๋ฐ์ดํฐ์ ์์ ์ฑ์ ์๋ฐฐํ๋ ์ด๋ค ๊ฒ๋ ๋ฐ์ํ
์ ์์ ์ ๋๋ก ๋์ ๊ณ ๋ฆฝ์ฑ์ ๊ฐ์ง๊ณ ์๋ค.
ํ์ง๋ง ๊ทธ๋ก ์ธํด ๋์์ฑ์ด ๋ง์ด ๋จ์ด์ง๋ค.๊ทธ๋์ ํ๋์ ๋ฐ์ดํฐ ์์ญ์ READ๊ฐ ๋ฐ์ํ ๋ ์ด๋ค DML๋ ๋ฐ์ํ ์ ์์ด์ ๋ง์ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ๋ค.
๊ทธ๋์ ๋๋ถ๋ถ์ RDBMS๋ Read Commited๋ Repeatable Read๋ก
๊ณ ๋ฆฝ์ฑ์ ์ ์งํ์ฌ ํธ๋์ญ์
์ ์ง์ํ๋ค.
- ์ ํ ํธ๋์ญ์ ์ด ์ฝ์ ๋ฐ์ดํฐ๋ ํธ๋์ญ์ ์ด ์ข ๋ฃ๋ ๋๊ฐ์ง ํํ ํธ๋์ญ์ ์ด
๊ฐฑ์ ํ๊ฑฐ๋ ์ญ์ ํ๋ ๊ฒ์ ๋ถํํจ์ผ๋ก์จ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ ๋ฒ ์ฟผ๋ฆฌํ์ ๋
์ผ๊ด์ฑ ์๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํดํ๋ค.- Phantom Read ํ์์ ์ฌ์ ํ ๋ฐ์ํจ.( InnoDB๋ ๋ฐ์ํ์ง ์์)
- MySQL ์ InnoDB ์์ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒฉ๋ฆฌ์์ค.
- DB2, SQL Server์ ๊ฒฝ์ฐ ํธ๋์ญ์ ๊ณ ๋ฆฝํ ์์ค์ Repeatable Read๋ก ๋ณ๊ฒฝํ๋ฉด ์ฝ์ ๋ฐ์ดํฐ์ ๊ฑธ๋ฆฐ ๊ณต์ Lock์
์ปค๋ฐํ ๋๊น์ง ์ ์งํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํจ.- Oracle์ ์ด ๋ ๋ฒจ์ ๋ช ์์ ์ผ๋ก ์ง์ํ์ง ์์ง๋ง for update ์ ์ ์ด์ฉํด ๊ตฌํ๊ฐ๋ฅ. SQL Server ๋ฑ์์๋ for update์ ์ ์ฌ์ฉํ ์ ์์ง๋ง ์ปค์๋ฅผ ๋ช ์์ ์ผ๋ก ์ ์ธํ ๋๋ง ์ฌ์ฉ ๊ฐ๋ฅํจ.
- Dirty Read ๋ฐฉ์ง : ํธ๋์ญ์ ์ด ์ปค๋ฐ๋์ด ํ์ ๋ ๋ฐ์ดํฐ๋ง ์ฝ๋ ๊ฒ์ ํ์ฉ
- ์ค๋ผํด ๊ฐ์ DBMS๊ฐ ๊ธฐ๋ณธ๋ชจ๋๋ก ์ฑํํ๊ณ ์๋ ๊ฒฉ๋ฆฌ์์ค
- Non-Repeatable Read, Phantom Read ํ์์ ์ฌ์ ํ ๋ฐ์
- DB2, SQL Server, Sybase์ ๊ฒฝ์ฐ ์ผ๊ธฐ ๊ณต์ Lock์ ์ด์ฉํด์ ๊ตฌํ, ํ๋์
๋ ์ฝ๋๋ฅผ ์ฝ์ ๋ Lock์ ์ค์ ํ๊ณ ํด๋น ๋ ์ฝ๋๋ฅผ ๋น ์ ธ ๋๊ฐ๋ ์๊ฐ Lock ํด์ - Oracle์ Lock์ ์ฌ์ฉํ์ง ์๊ณ ์ฟผ๋ฆฌ์์ ์์ ์ Undo ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ
- ํธ๋์ญ์ ์์ ์ฒ๋ฆฌ ์ค์ธ, ์์ง ์ปค๋ฐ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์ฝ๋ ๊ฒ์ ํ์ฉ
- Dirty Read, Non-Repeatable Read, Phantom Read ํ์ ๋ฐ์
- Oracle์ ์ด ๋ ๋ฒจ์ ์ง์ํ์ง ์์
level | Dirty Read | Non-Repeatable Read | Phantom Read |
---|---|---|---|
READ UNCOMMITED | ๋ฐ์ | ๋ฐ์ | ๋ฐ์ |
READ COMMITTED | ์์ | ๋ฐ์ | ๋ฐ์ |
REPEATABLE READ | ์์ | ์์ | ๋ฐ์(MySQL์ ๊ฑฐ์์์) |
SERIALIZABLE | ์์ | ์์ | ์์ |
https://mangkyu.tistory.com/299
https://hyeyul-k.tistory.com/18