๋น๊ด์ ๋ฝ๊ณผ ๋๊ด์ ๋ฝ์ ๋ํ ๊ณต๋ถ ์๋ฃ๋ ์ ์ด์ธ์๋ ์ถฉ๋ถํ๋ค๊ณ ํ๋จํ์ฌ, ํด๋น ๊ธ์์๋ ์ค๋ช ํ์ง ์์ต๋๋ค.
๋ฝ์ ๋ํด ํ์ตํ๊ณ ์๋ ์ค์ด๊ธฐ ๋๋ฌธ์, ํ๋ฆฐ ๋ถ๋ถ์ด ์์ ์ ์์ต๋๋ค. ๋ฐ๊ฒฌํ์ ๋ค๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
ํธ๋์ญ์ ๊ณผ ๊ฒฉ๋ฆฌ ์์ค์ ์ดํดํด์ ๋๊ด์ , ๋น๊ด์ ๋ฝ์ ์ ์ฌ์ฉํ๋์ง์ ๋ํด ์์๋ด ๋๋ค.
1. ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ ์์ค(Isolation level) ์ดํดํ๊ธฐ
ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ ์์ค(isolation)์ด๋?
- ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ ์ง ํ๊ธฐ ์ํด ์ฌ๋ฌ ํธ๋์ญ์ ์ด ์๋ก์๊ฒ ์ํฅ์ ๋ฏธ์น ์ ์๋ ๋ฒ์๋ฅผ ์ด๋ ์ ๋๋ก ์ ํํ ์ง๋ฅผ ๋ ๋ฒจ๋ก ๋๋ ๊ฒ์ ๋๋ค.
์๋ฅผ ๋ค๋ฉด, Aํธ๋์ญ์ ์์ id=1 ์ ๋ํ ๋ ์ฝ๋๋ฅผ ์กฐํ ํ ๋, Bํธ๋์ญ์ ์์ id=1 ์ ๋ํ ๋ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
์ด ๋, Aํธ๋์ญ์ ์ ๊ฒฐ๊ณผ๊ฐ Bํธ๋์ญ์ ์ ์ํด ๋ณ๊ฒฝ๋๋ค๋ฉด "๋ ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ๊ฐ ๋์ง ์์๋ค"๊ณ ๋งํฉ๋๋ค.
์ฆ, ํธ๋์ญ์
๊ฒฉ๋ฆฌ ์์ค์ ๋ฐ๋ผ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ด ์ง์ผ์ง ์๋, ๊นจ์ง ์๋ ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ ์์ค์ด ์ด๋จ ๋, ์ด๋ค ๋ฌธ์ ๊ฐ ๋ฐ์ํด์ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ด ์ง์ผ์ง์ง ์์๊น์?
2๋ฒ์์ ์์๋ณด๊ฒ ์ต๋๋ค.
2. ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ ์์ค 4๋จ๊ณ์ ์ด์ ๋ฐ๋ผ ๋ฐ์ํ๋ ๋ฌธ์ 3๊ฐ์ง
SQL ํ์ค์์๋ ํธ๋์ญ์ ์ด ๋์์ ์งํ ๋ ๋,
๋ฐ์ํ ์ ์๋ ๋ฌธ์ ์ ์ข ๋ฅ์ ๋ฐ๋ผ ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ ์์ค์ ์๋์ ํ์ฒ๋ผ ๋๋์์ต๋๋ค.
- Isolation level ์ ๋ฐ๋ผ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ๋ "O" ์ด๊ณ , ๋ฐ์ํ์ง ์์ผ๋ฉด "X" ์ ๋๋ค.
Isolation Level | Dirty Read Problem | Non Repeatable Read Problem | Phantom Read Problem |
Read Uncommitted | O | O | O |
Read Committed | X | O | O |
Repeatable Read | X | X | O |
Serializable | X | X | X |
ํธ๋์ญ์ ์ด ๋์์ ์งํ๋ ๋, ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ๋ฅผ ์์๋ณด๊ฒ ์ต๋๋ค.
๋ฌธ์ 1. Dirty Read Problem
- ํ ํธ๋์ญ์ ์์ ๋ณ๊ฒฝํ ๊ฐ์ ๋ค๋ฅธ ํธ๋์ญ์ ์์ ์ฝ์ ๋ ๋ฐ์ํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, ์๋ ํ์์ T1์ด a ๊ฐ์ ๋ณ๊ฒฝํ๊ณ ๋กค๋ฐฑํ ๊ฒฝ์ฐ, a ๊ฐ์ ์ค์ ๋ก DB์ ๋ฐ์๋์ง ์์์ผ ํฉ๋๋ค.
- ๊ทธ๋ฌ๋ T2๋ ์ด ๋ณ๊ฒฝ๋ a ๊ฐ์ ์ฝ์ด ๋ง์น DB์ ๋ฐ์๋ ๊ฒ์ฒ๋ผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค์ Read Committed๋ก ์ฌ๋ฆฌ๋ฉด, ์ปค๋ฐ๋๊ฑฐ๋ ๋กค๋ฐฑ๋ ํธ๋์ญ์ ๋ง ์ฝ์ ์ ์๊ฒ ๋์ด ์ด ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
๋ฌธ์ 2. Non-repeatable Read Problem
- ํ ํธ๋์ญ์ ์์ ๊ฐ์ ๊ฐ์ ๋ ๋ฒ ์ฝ์์ ๋ ๊ฐ๊ฐ ๋ค๋ฅธ ๊ฐ์ด ์ฝํ๋ ๊ฒฝ์ฐ๋ฅผ ๋ปํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, T1์ด ์ฒ์์ a ๊ฐ์ ์ฝ์๋๋ฐ, T2๊ฐ ๊ทธ ์ฌ์ด์ a ๊ฐ์ ์ญ์ ํ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ DB์ ๋ฐ์ํ ๊ฒฝ์ฐ, T1์ด ๋ค์ a ๊ฐ์ ์ฝ์ผ๋ ค ํ ๋ a ๊ฐ์ ๋ ์ด์ ์กด์ฌํ์ง ์๊ฒ ๋ฉ๋๋ค. ๋ฐ๋ผ์ T1์ด ์ฒ์ ์ฝ์ a ๊ฐ๊ณผ ๋์ค์ ์ฝ์ a ๊ฐ์ด ๋ฌ๋ผ์ง๋๋ค.
- ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค์ Repeatable Read ๋ก ์ฌ๋ ค์ ํธ๋์ญ์ ์ด ์์๋ ํ, ๋ค๋ฅธ ํธ๋์ญ์ ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ฝ์ง ์์์ผ๋ก์จ ์ด ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
๋ฌธ์ 3. Phantom Read Problem
- ํ ํธ๋์ญ์ ์์ ํ ๊ฐ์ ๋ ๋ฒ ์ฝ์ ๋, ์๋ ๊ฐ์ด ์๊ฒจ์ ๋ฐ์ดํฐ ์๊ฐ ๋ณํ๋ ๊ฒฝ์ฐ์ ๋๋ค.
- ์์๋ Non-Repeatable Read Problem ๊ณผ ์ ์ฌํ๋ฉฐ,
- Non-Repeatable Read ์ ๊ฐ์ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ๋ฌธ์ ๋ผ๋ฉด, Phantom Read ๋ ๋ฐ์ดํฐ์ ์ฝ์ ์ ์ํด ์ฐพ๊ณ ์ ํ๋ ๋ฐ์ดํฐ์ ๊ฐ์๊ฐ ๋ฌ๋ผ์ก์ ๋์ ์๋ฏธ์ ๋๋ค.
- https://stackoverflow.com/questions/11043712/non-repeatable-read-vs-phantom-read
์ด๋ ๊ฒ ํธ๋์ญ์
๋ผ๋ฆฌ ๊ฒฉ๋ฆฌ ๋์ง ์๋๋ค๋ฉด,
๋ฐ์ดํฐ ์ ํฉ์ฑ์ ๋ฌธ์ ๊ฐ ์๊ธฐ๊ธฐ ๋๋ฌธ์ ํธ๋์ญ์
๋ผ๋ฆฌ ์ํฅ์ ๋ผ์น์ง ์๋๋ก ํธ๋์ญ์
๋ค์ ๊ฒฉ๋ฆฌ ์์ผ์ผ๋ง ํฉ๋๋ค.
๋ฌผ๋ก , ์ด๋ฐ ๋ฌธ์ ๋ค์ด ๋ชจ๋ ๋ฐ์ํ์ง ์๊ฒ ํ ์ ์์ง๋ง,
๊ทธ๋งํผ ์ ์ฝ์ฌํญ์ด ๋ง์์ ธ ๋์ ์ฒ๋ฆฌ ๊ฐ๋ฅํ ํธ๋์ญ์
์๊ฐ ์ค์ด๋ค์ด ๊ฒฐ๊ตญ DB์ ์ ์ฒด ์ฒ๋ฆฌ๋์ด ํ๋ฝํ๊ฒ ๋ฉ๋๋ค.( == ์ฑ๋ฅ์ด ๋๋น ์ง๋๋ค)
๊ทธ๋์, ์ผ๋ถ ์ด์ํ ํ์์ ํ์ฉํ๋ ๋ช ๊ฐ์ง level ์ ๋ง๋ค์ด์ ์ฌ์ฉ์ ํ์์ ๋ฐ๋ผ ์ ํํ๋๋ก ํ ๊ฒ์ด ํธ๋์ญ์
๊ฒฉ๋ฆฌ ์์ค 4๋จ๊ณ์
๋๋ค.
์ด์ , ์ด ๋ฌธ์ ๋ค์ ๋ง์ ์ ์๋ ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ ์์ค 4๋จ๊ณ๋ฅผ ์์๋ณด๊ฒ ์ต๋๋ค.
๊ฒฉ๋ฆฌ ์์ค 1๋จ๊ณ : Read Uncommitted
- ๊ฐ์ฅ ๋ฎ์ ๊ฒฉ๋ฆฌ ์์ค์ผ๋ก, ํ๋์ ํธ๋์ญ์ ์ด ๋ค๋ฅธ ํธ๋์ญ์ ์ ์ปค๋ฐ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์์ต๋๋ค.
- ์ด๋ก ์ธํด, Dirty Read, Non-Repeatable Read, Phantom Read ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
- ์ปค๋ฐ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๊ธฐ ๋๋ฌธ์ 4๋จ๊ณ ๊ฒฉ๋ฆฌ ์์ค ์ค ์ฑ๋ฅ์ด ๊ฐ์ฅ ๋น ๋ฅด์ง๋ง(ํธ๋์ญ์ ์ฒ๋ฆฌ๋์ด ๊ฐ์ฅ ๋ง์ง๋ง), ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
๊ฒฉ๋ฆฌ ์์ค 2๋จ๊ณ : Read committed
- ํธ๋์ญ์ ์ด ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋, ๋ค๋ฅธ ํธ๋์ญ์ ์ ์ปค๋ฐ๋ ๋ฐ์ดํฐ๋ง ์ฝ์ต๋๋ค.
- Non-Repeatable Read ์ Phantom Read ๋ ์ฌ์ ํ ๋ฐ์ํฉ๋๋ค.
๊ฒฉ๋ฆฌ ์์ค 3๋จ๊ณ : Repeatable Read
- ํ๋์ ํธ๋์ญ์ ๋ด์์ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ๋ฒ ์ฝ์ ๋๋ง๋ค ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฅํฉ๋๋ค.
- ํ๋์ ํธ๋์ญ์ ์ ๋ค๋ฅธ ํธ๋์ญ์ ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ณด์ง ์์ต๋๋ค.
- Phantom Read ๋ ์ฌ์ ํ ๋ฐ์ํฉ๋๋ค.
๊ฒฉ๋ฆฌ ์์ค 4๋จ๊ณ : Serializable
- ๊ฐ์ฅ ๋์ ๊ฒฉ๋ฆฌ ์์ค์ผ๋ก, ํธ๋์ญ์ ์ด ์์ฐจ์ ์ผ๋ก ์คํ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ฅํฉ๋๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์, ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ ์งํ ์ ์์ง๋ง ์ฑ๋ฅ์ด ๋งค์ฐ ๋จ์ด์ง๋๋ค.
3. ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค๊ณผ "Lock" ์ ๊ด๊ณ
์ด๋ ๋ฏ, DB๋ ๋์์ฑ์ ์ ์ดํ๊ธฐ ์ํด ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค์ 4๋จ๊ณ๋ก ๊ตฌ๋ถํ์๊ณ , ์ด๋ค์ read Lock(S-Lock, shared Lock) ๊ณผ write Lock(X-Lock, exclusive Lock) ์ผ๋ก ๊ตฌ๋ถ ๋ ์ ์์์ต๋๋ค.
- read Lock (S-Lock, shared Lock)
- ํ ํธ๋์ญ์ ์ด id=3 ์ ๋ํ ๋ ์ฝ๋์ read Lock ์ ํ๋ํ๋ฉด, ๋ค๋ฅธ ํธ๋์ญ์ ์ id=3 ์ ๋ํ ๋ ์ฝ๋๋ฅผ ์ฝ๊ธฐ๋ง ํ ์ ์๊ณ , ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
- write Lock (X-Lock, exclusive Lock)
- ํ ํธ๋์ญ์ ์ด id=3 ์ ๋ํ ๋ ์ฝ๋์ write Lock ์ ํ๋ํ๋ฉด, ๋ค๋ฅธ ํธ๋์ญ์ ์ id=3 ์ ๋ํ ๋ ์ฝ๋๋ฅผ ์ฝ์ ์๋ ๋ณ๊ฒฝํ ์๋ ์์ต๋๋ค.
ํ์ง๋ง, read Lock ๊ณผ write Lock ์ ์ด์ฉํด์ ๋์์ฑ์ ์ ์ดํ๊ณ , ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๋ฐฉ๋ฒ์๋ ํ๊ณ๋ ์์์ต๋๋ค.
๋ฐ๋ก A ํธ๋์ญ์ ์ด id=3 ์ธ ๋ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํด write Lock ์ ํ๋ํ๋ฉด, B ํธ๋์ญ์ ์ด id=3์ธ ๋ ์ฝ๋๋ฅผ ์ฝ๊ณ ๋ง ์ถ์ด๋ read Lock ์ ํ๋ ํ ์ ์์์ต๋๋ค.
์ฆ, read Lock ๊ณผ write Lock ์ ๋์์ ํ๋ํ์ง ๋ชปํ๊ณ ์
๋ฐ์ดํธ ์ค์๋ ์ฝ๊ธฐ๊ฐ ๋ธ๋ก๋์ด ์ฒ๋ฆฌ๋์ด ๋จ์ด์ง๋ค๋ ๊ฒ์ด์์ต๋๋ค.
read Lock | write Lock | |
read Lock | O | X |
write Lock | X | X |
4. MVCC(Mulit Version Concurrency Control) ์ ๋ฑ์ฅ
- ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ํด read/write Lock ์ ์ฌ์ฉํ ๋ฐฉ์์ ํธ๋์ญ์ ์ ์ ์ฒด ์ฒ๋ฆฌ๋์ ๋ฎ๊ฒ ๋ง๋ค์๊ณ , ๊ฐ DBMS ๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ ธ๋ ฅํ์ต๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ๋ ธ๋ ฅ์ ๊ฒฐ๊ณผ๋ก ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ํด MVCC ๋ฐฉ์์ด ๋ฑ์ฅํ๊ฒ ๋์์ต๋๋ค.
MVCC ๋?
- MVCC์ ๋ชฉ์ ์ ์ ๊ธ์ ์ฌ์ฉํ์ง ์๊ณ ์ผ๊ด๋ ์ฝ๊ธฐ๋ ์ ๊ณตํ๋ ๋ฐ ์์ต๋๋ค.
- ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ ์์ค์ ์งํค๊ธฐ ์ํด Lock ์ด ์๋ ์ค๋ ์ท์ ์ด์ฉํ๋ ๋ฐฉ์์ ๋๋ค.
MVCC์ ๋ฑ์ฅ์ผ๋ก ์ธํด, ์ ๊ธ ์์ด ์ผ๊ด๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๊ฒ ๋์ด ํธ๋์ญ์ ์ ์ ์ฒด ์ฒ๋ฆฌ๋์ด ๋์์ง๊ฒ ๋์์ต๋๋ค.
5. MySQL ์ MVCC์ ๋๊ด์ , ๋น๊ด์ ๋ฝ์ ๊ด๊ณ
๊ทธ๋ ๋ค๋ฉด, MySQL ์ MVCC ๋ฅผ ์ด๋ป๊ฒ ํ์ฉํ๊ณ ์์๊น์?
MySQL 8.0 ์ default ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค์ Repeatable Read ์ด๋ฉฐ, MVCC๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ์ ์ฝ๊ธฐ ์ผ๊ด์ฑ์ ์ง์ํด์ฃผ๊ณ ์์ต๋๋ค.
- MySQL ์ Repeatable Read ๊ฒฉ๋ฆฌ ์์ค์์๋ MVCC๋ฅผ ์ฌ์ฉํด์ ๋์์ฑ์ ์ ์ดํ๊ณ ์๊ธฐ ๋๋ฌธ์, Dirty Read, Non-Repeatable Read, Phantom Read ์ ๋ฌธ์ ๋ ๋ฐ์ํ์ง ์์ต๋๋ค.
๊ทธ๋ฌ๋, MVCC ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋๋ผ๋ ์ฌ๋ฌ ํธ๋์ญ์ ์ด ํ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ ๋ ์๊ธฐ๋ ๋ฌธ์ ๋ฅผ ๋ง์ ์๋ ์์์ต๋๋ค. ์ด๋ฅผ Lost Update ๋ฌธ์ ๋ผ ๋ถ๋ฆ ๋๋ค.
Lost Update ๋?
- Aํธ๋์ญ์ ๋ id=3 ๋ ์ฝ๋์ ๋ํด ์ฐ๊ธฐ์์ ์ ํ๊ณ , B ํธ๋์ญ์ ๋ id=3 ๋ ์ฝ๋์ ๋ํด ์ฐ๊ธฐ์์ ์ ํ ๋, Aํธ๋์ญ์ ์ ๊ฒฐ๊ณผ๊ฐ Bํธ๋์ญ์ ๊ฒฐ๊ณผ์ ์ํด ๋ฎ์ด์์ด์ ธ์ Aํธ๋์ญ์ ์ ๊ฒฐ๊ณผ๊ฐ DB์ ๋ฐ์๋์ง ์๋ ๊ฒ์ ๋๋ค.
์ด๋ ๊ฒ ๋ ํธ๋์ญ์ ์ด ๋์์ ์งํ๋๋ฉด
- ์ผ๊ด๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ง ๋ชปํ๋ ๋ฌธ์ ( Dirty Read, Non-Repeatable read, Phantom Read )
- ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์ด ์ํ์ง ์๋ ๊ฐ์ด ์๊ธฐ๋ ์ฐ๊ธฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ( Lost Update ๋ฑ )
๊ทธ๋ ๊ธฐ์ ์ฝ๊ธฐ ๊ด๋ จ ๋ฌธ์ ๋ MVCC ๋ก, ์ฐ๊ธฐ ๊ด๋ จ ๋ฌธ์ ๋ ์ ํฌ ๊ฐ๋ฐ์๋ค์ด ํด๊ฒฐํด์ผํ ๋ฌธ์ ์ ๋๋ค.
์ด ๋, ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ฌ๋ฌ ๋ฐฉ๋ฒ๋ค ์ค ํ ๋ฐฉ๋ฒ์ด ๋๊ด์ /๋น๊ด์ Lock ์ด๋ฉฐ, ์ ํฌ๋ ์ด Lock ๋ค์ ์ฌ์ฉํด์ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํด์ผ๋ง ํฉ๋๋ค.
๋ ๋์๊ฐ์, ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค์ ํตํด ์ฝ๊ธฐ ์ผ๊ด์ฑ์ ์ง์ผ์ฃผ๊ฒ ํ๋ ๊ฒ์ DBMS๊ฐ ์ง์ํ๋ ๊ฒ์ด๋ผ ์๊ฐํ์ต๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๋ 2๊ฐ์ง๊ฐ ๋งค์ฐ ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
- ๊ฐ DBMS๋ง๋ค ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ํด default๋ก ์ค์ ๋ ๊ฒฉ๋ฆฌ ์์ค์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ DBMS ์ default ๊ฒฉ๋ฆฌ ์์ค์ ๋ฌด์์ธ์ง ์๋ ๊ฒ
- ๊ฐ DBMS๋ง๋ค ๋ค์ํ ๋ฌธ์ ๋ค(Lost Update, Phantom read) ๋ฅผ ํด๊ฒฐํ๋(๋์์ฑ์ ์ ์ดํ๋ ๋ฐฉ์)์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ด๋ป๊ฒ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ณ ์๋์ง ์๋ ๊ฒ
์ถ์ฒ
- Code Squad ์ Lucas 'ํธ๋์ญ์ ' ํ์ต ์๋ฃ
- Youtube '์ฌ์ด ์ฝ๋' ์ DB ๊ฐ์ ์๋ฃ
- Real MySQL 8.0