๐ฏ ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ ์์ค(Isolation Level)
ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ ์์ค(Isolation Level)์ ๋์์ ์ฌ๋ฌ ํธ๋์ญ์ ์ด ์คํ๋ ๋, ๊ฐ๊ฐ์ ํธ๋์ญ์ ์ด ์๋ก ์ํฅ์ ์ฃผ์ง ์๊ณ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋ ์ ์๋๋ก ํ๋๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ๊ฒฉ๋ฆฌ ์์ค์ ๋์์ ์คํ๋๋ ๋ค๋ฅธ ํธ๋์ญ์ ๋ค๊ณผ์ ์ํธ์์ฉ ๋ฐฉ์์ ๊ฒฐ์ ํฉ๋๋ค.
ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ ์์ค 4๊ฐ์ง
- READ UNCOMMITTED
- ํธ๋์ญ์
์ด ์ปค๋ฐ๋์ง ์์ ๋ค๋ฅธ ํธ๋์ญ์
์์ ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ ์ฝ์ด๋ค์ผ ์ ์๋ ์ตํ์ ๊ฒฉ๋ฆฌ ์์ค์
๋๋ค.
Dirty Read, Non-repeatable Read, Phantom Read ๋ฌธ์ ์ ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
- ํธ๋์ญ์
์ด ์ปค๋ฐ๋์ง ์์ ๋ค๋ฅธ ํธ๋์ญ์
์์ ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ ์ฝ์ด๋ค์ผ ์ ์๋ ์ตํ์ ๊ฒฉ๋ฆฌ ์์ค์
๋๋ค.
- READ COMMITTED
- ํธ๋์ญ์
์ด ์ปค๋ฐ๋ ๋ฐ์ดํฐ๋ง ์ฝ์ด๋ค์ผ ์ ์์ต๋๋ค.
Dirty Read ๋ฌธ์ ๋ ๋ฐ์ํ์ง ์์ง๋ง, Non-repeatable Read, Phantom Read ๋ฌธ์ ์ ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
- ํธ๋์ญ์
์ด ์ปค๋ฐ๋ ๋ฐ์ดํฐ๋ง ์ฝ์ด๋ค์ผ ์ ์์ต๋๋ค.
- REPEATABLE READ
- ํธ๋์ญ์
๋์ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ฉด ํญ์ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋๋ก ๋ณด์ฅํฉ๋๋ค.
Non-repeatable Read ๋ฌธ์ ๋ ๋ฐ์ํ์ง ์์ง๋ง, Phantom Read ๋ฌธ์ ์ ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
- ํธ๋์ญ์
๋์ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ฉด ํญ์ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋๋ก ๋ณด์ฅํฉ๋๋ค.
- SERIALIZABLE
- ๊ฐ์ฅ ๋์ ๊ฒฉ๋ฆฌ ์์ค์ผ๋ก, ํธ๋์ญ์
๊ฐ์ ์์ ํ ๊ฒฉ๋ฆฌ๋ฅผ ์ ์งํฉ๋๋ค.
๋ชจ๋ ๋ฌธ์ ์ ์ ๋ฐฉ์งํ ์ ์์ง๋ง, ๋์์ฑ ์ฒ๋ฆฌ์ ๋ํ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
๊ฒฉ๋ฆฌ ์์ค์ ์ํฉ์ ๋ฐ๋ผ ์ ์ ํ ์์ค์ผ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
- ๊ฐ์ฅ ๋์ ๊ฒฉ๋ฆฌ ์์ค์ผ๋ก, ํธ๋์ญ์
๊ฐ์ ์์ ํ ๊ฒฉ๋ฆฌ๋ฅผ ์ ์งํฉ๋๋ค.
๋ณดํต์ REPEATABLE READ๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ฌ์ฉํ๋ฉฐ, ํน์ ์ํฉ์์๋ READ COMMITTED๋ SERIALIZABLE ์์ค์ผ๋ก ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์ข์ ์๋ ์์ต๋๋ค.
ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค์ ํ์์ฑ
๋ง์ฝ ๊ฒฉ๋ฆฌ ์์ค์ด ์ค์ ๋์ง ์๊ฑฐ๋ ๋ฎ์ ์์ค์ ๊ฒฉ๋ฆฌ ์์ค์ด ์ค์ ๋๋ค๋ฉด, ๋์์ ์คํ๋๋ ์ฌ๋ฌ ํธ๋์ญ์ ๊ฐ์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ๋ ๊ฐ์ ํธ๋์ญ์ ์ด ๋์์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ ์ปค๋ฐํ๋ ๊ฒฝ์ฐ, ์ด๋ ํธ๋์ญ์ ์ด ๋จผ์ ์ปค๋ฐ๋์๋์ง์ ๋ฐ๋ผ ๋ค๋ฅธ ํธ๋์ญ์ ์์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ๊ฒฉ๋ฆฌ ์์ค์ ๋์์ ์คํ๋๋ ๋ค๋ฅธ ํธ๋์ญ์
๋ค๊ณผ์ ์ํธ์์ฉ ๋ฐฉ์์ ๊ฒฐ์ ํ๋๋ฐ ์ค์ํฉ๋๋ค. ๋์ ๊ฒฉ๋ฆฌ ์์ค์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ๊ณผ ์์ ์ฑ์ ๋ณด์ฅํ์ง๋ง, ๋์์ฑ ์ฒ๋ฆฌ์ ๋ํ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
๋ฐ๋ฉด์ ๋ฎ์ ๊ฒฉ๋ฆฌ ์์ค์ ๋์์ฑ ์ฒ๋ฆฌ์ ๋ํ ์ฑ๋ฅ ํฅ์์ ๊ฐ์ ธ์ค์ง๋ง, ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
๋ฎ์ ๋จ๊ณ์ ๊ฒฉ๋ฆฌ ์์ค์ ์ฌ์ฉ์ ๋ฐ์ํ๋ ํ์
- Dirty Read (๋ํฐ ๋ฆฌ๋)
- ํ ํธ๋์ญ์ ์ด ์ปค๋ฐ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ํธ๋์ญ์ ์์ ์ฝ๋ ํ์์ ๋๋ค.
- ์๋ฅผ ๋ค์ด, ํธ๋์ญ์ A๊ฐ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ ์์ง ์ปค๋ฐํ์ง ์์ ์ํฉ์์, ํธ๋์ญ์ B๊ฐ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๊ฒฝ์ฐ, A๊ฐ ๋กค๋ฐฑํ ๊ฒฝ์ฐ B๊ฐ ์ฝ์ ๋ฐ์ดํฐ๋ ์ ํจํ์ง ์๊ฒ ๋ฉ๋๋ค.
- Non-Repeatable Read (๋น๋ฐ๋ณต ๊ฐ๋ฅํ ์ฝ๊ธฐ)
- ํ ํธ๋์ญ์ ์ด ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ ๋ ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅธ ํ์์ ๋๋ค.
- ์๋ฅผ ๋ค์ด, ํธ๋์ญ์ A๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์๋ ์ค์, ํธ๋์ญ์ B๊ฐ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ ์ปค๋ฐํ๋ ๊ฒฝ์ฐ, A๊ฐ ๋ค์ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ฉด ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅด๊ฒ ๋ํ๋ ์ ์์ต๋๋ค.
- Phantom Read (์ ๋ น ์ฝ๊ธฐ)
- ํ ํธ๋์ญ์ ์ด ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ ๋ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๋ ํ์์ ๋๋ค.
- ์๋ฅผ ๋ค์ด, ํธ๋์ญ์ A๊ฐ ๋ฒ์ ๊ฒ์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ณ ์๋ ์ค์, ํธ๋์ญ์ B๊ฐ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๊ณ ์ปค๋ฐํ๋ ๊ฒฝ์ฐ, A๊ฐ ๋ค์ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ฉด ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅด๊ฒ ๋ํ๋ ์ ์์ต๋๋ค.
'Database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Database] ๋ ๋์ค(Redis) (0) | 2023.03.26 |
---|---|
[Database] ์ ์ฅ ํ๋ก์์ (Stored Procedure) (0) | 2023.03.26 |
[Database] ํธ๋์ญ์ (Transaction) (1) | 2023.03.26 |
[Database] ์ธ๋ฑ์ค(Index) (0) | 2023.03.26 |
[Database] ์ด์(Anomaly) (0) | 2023.03.26 |