...
ํธ๋์ญ์ (Transaction) ์ด๋?
ํธ๋์ญ์ (Transaction)์ ์ฌ์ ์ ์๋ฏธ๋ ๊ฑฐ๋์ด๊ณ ,
์ปดํจํฐ ๊ณผํ ๋ถ์ผ์์์ ํธ๋์ญ์ (Transaction)์ "๋์ด์ ๋ถํ ์ด ๋ถ๊ฐ๋ฅํ ์ ๋ฌด์ฒ๋ฆฌ์ ๋จ์"๋ฅผ ์๋ฏธํ๋ค.
์ด๊ฒ์ ํ๋์ ์์ ์ ์ํด ๋์ด์ ๋ถํ ๋ ์ ์๋ ๋ช ๋ น๋ค์ ๋ชจ์,
์ฆ, ํ๊บผ๋ฒ์ ์ํ๋์ด์ผ ํ ์ผ๋ จ์ ์ฐ์ฐ๋ชจ์์ ์๋ฏธํ๋ค.
๋ค์๊ณผ ๊ฐ์ ์ํฉ์ด ์๋ค๊ณ ๊ฐ์ ํ์.
- A๋ ๋งค๋ฌ ๋ถ๋ชจ๋์๊ฒ ์ํ๋น๋ฅผ ์ก๊ธ๋ฐ๋๋ค.
์ด๋ ๋ , ๋ถ๋ชจ๋์ด A์๊ฒ ์ํ๋น๋ฅผ ์ก๊ธํด ์ฃผ๊ธฐ ์ํด ATM์ ์ด์ฉํ๊ณ ์ฌ๋๋ ์ฒ๋ผ A์ ๊ณ์ข๋ก ์ํ๋น๋ฅผ ์ก๊ธํ๋ค. - ๊ทธ๋ฌ๋ ๋ชจ์ข ์ ์ด์ ๋ก ์ธํ์ฌ ๋ถ๋ชจ๋์ ๊ณ์ข์์ ์ํ๋น๊ฐ ์ฐจ๊ฐ๋์๋๋ฐ, A์ ๊ณ์ข์๋ ์ํ๋น๊ฐ ์ ๊ธ๋์ง ์์๋ค.
๊ณ์ข์ด์ฒด ํ์๋ฅผ ํ์ด ์ด ๊ฒ์ด๋ค.
๋ณด๋ค ์ํผ ๊ณ์ข์ด์ฒด ๋ผ๋ ํ์๋ ์ธ์ถ๊ณผ ์ ๊ธ ๋ ๊ณผ์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
์์ ๊ฐ์ด ๋ง์ฝ ์ธ์ถ์๋ ์ฑ๊ณตํ๋๋ฐ, ์ ๊ธ์ ์คํจํ๋ฉด ์น๋ช ์ ์ธ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
๋ฐ๋ผ์ ์ด ๋ ๊ณผ์ ์ ๋์์ ์ฑ๊ณตํ๋์ง ๋์์ ์คํจํด์ผ ํ๋ค. (ํ๋๋ก ๋ฌถ์์ผ๋ก์จ Atomicํจ์ ์๋ฏธํ๋ค)
์ด ๊ณผ์ ์ ๋์์ ๋ฌถ๋ ๋ฐฉ๋ฒ์ด ๋ฐ๋ก ํธ๋์ญ์ ์ด๋ค.
START TRANSACTION
-- ์ด ๋ธ๋ก์์ ๋ช
๋ น์ด๋ค์ ๋ง์น ํ๋์ ๋ช
๋ น์ด ์ฒ๋ผ ์ฒ๋ฆฌ๋จ
-- ์ฑ๊ณตํ๋์ง, ๋ค ์คํจํ๋์ง ๋์ค ํ๋๊ฐ ๋จ.
A์ ๊ณ์ข๋ก๋ถํฐ ์ธ์ถ;
B์ ๊ณ์ข๋ก ์
๊ธ;
COMMIT
์ด์ ๊ฐ์ด, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํฐ ๊ฑฐ๋(Transaction)์ ์์ด์ ์์ ์ฑ์ ํ๋ณดํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ด ํธ๋์ญ์ ์ธ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด ์จ ํ ๋ค๋ฅธ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ๊ฑฐ๋ ๊ฐฑ์ , ์ญ์ ํ๋ ๋์ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด, ๊ฒฐ๊ณผ๋ฅผ ์ฌ๋ฐ์ ํ๋ ๊ฒ์ด ์๋๋ผ ๋ชจ๋ ์์ ์ ์์ํ๋ก ๋ณต๊ตฌํ๊ณ , ์ฒ๋ฆฌ ๊ณผ์ ์ด ๋ชจ๋ ์ฑ๊ณตํ์์๋ ๋ง ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ํ๋ค.
MYSQL ํธ๋์ญ์
MySQL์์ ํธ๋์ญ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ํ๋ฅผ ๋ฐ๊พธ๋ ์ผ์ข ์ ์์ ๋จ์์ด๋ค.
์ฌ์ค ์ฐ๋ฆฌ๊ฐ MySQL์ ์ ๋ ฅํ๋ ๋ชจ๋ ์ฟผ๋ฆฌ ๋ช ๋ น์ด๋ค์ ๊ฐ๊ฐ ํ๋์ ํธ๋์ญ์ ์ด๋ผ๊ณ ํ ์ ์๋ค.
INSERT, DELETE, UPDATE ๋ฑ์ SQL ๋ช ๋ น๋ฌธ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ํ๋ฅผ ๋ฐ๊ฟ ๋๋ง๋ค ๋ด๋ถ์ ์ผ๋ก ์๋์ ์ผ๋ก Commit์ ์คํํ์ฌ ๋ณ๊ฒฝ๋ ๋ด์ญ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ํ๋ ๊ฒ์ด๋ค.
git์ commit๊ณผ ์ ์ฌํ๋ค๊ณ ๋ณผ ์ ์๋ค.
์ฆ ์ฌํ๊น์ง ์ ๋ ฅํ ๋ช ๋ น์ด๋ค์ MySQL์์ ์๋ Commit์ ํตํด ์ฟผ๋ฆฌ ์ ๋ ฅ๊ณผ ๋์์ ์ฒ๋ฆฌํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์๋๊ฒ ํ ๊ฒ์ด๋ค.


๊ทธ๋ฐ๋ฐ ์ฐฉ๊ฐํ์ง ๋ง์์ผ ํ ๊ฒ์, ์์ ์ ๋จ์๋ ์ง์์ด ํ๋ฌธ์ฅ์ด ์๋๋ผ๋ ์ ์ด๋ค.
์์ ๋จ์๋ ๋ง์ ์ง์์ด ๋ช ๋ น๋ฌธ๋ค์ ์ฌ๋์ด ์ ํ๋ ๊ธฐ์ค์ ๋ฐ๋ผ ์ ํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
๊ฒ์ํ์ ์๋ก ๋ค์ด๋ณด์.
1) ๊ฒ์ํ ์ฌ์ฉ์๋ ๊ฒ์๊ธ์ ์์ฑํ๊ณ , ์ฌ๋ฆฌ๊ธฐ ๋ฒํผ์ ๋๋ฅธ๋ค.
2) ๊ทธ๋ฌ๋ฉด ๊ธ ์ฌ๋ฆฌ๊ธฐ๊ฐ ์ฒ๋ฆฌ๋๊ณ ์๋์ผ๋ก ๋ค์ ๊ฒ์ํ์ ๋์์ค๊ฒ ๋๋ค.
3) ๊ฒ์ํ์์ ์์ ์ ๊ธ์ด ํฌํจ๋ ์ ๋ฐ์ดํธ๋ ๊ฒ์๊ธ๋ค์ ๋ณผ ์ ์๋ค.
์ด๋ฌํ ์ํฉ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ผ๋ก ์ฎ๊ธฐ๋ฉด, ์ฌ์ฉ์๊ฐ ์ฌ๋ฆฌ๊ธฐ ๋ฒํผ์ ๋๋ ์ ์,
Insert ๋ฌธ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๊ฒ์๊ธ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋๋ค.
๊ทธ ํ์, ๊ฒ์ํ์ ๊ตฌ์ฑํ ๋ฐ์ดํฐ๋ฅผ ๋ค์ Select ํ์ฌ ์ต์ ์ ๋ณด๋ก ์ ์งํ๋ค.
์ฌ๊ธฐ์ ์์ ์ ๋จ์๋ insert๋ฌธ๊ณผ select๋ฌธ ๋๋ค ๋ฅผ ํฉ์น๊ฒ์ด๋ค.
์ด๋ฌํ ์์ ๋จ์๋ฅผ ํ๋์ ํธ๋์ญ์ ์ด๋ผ ํ๋ค.
๊ด๋ฆฌ์๋ ๊ฐ๋ฐ์๊ฐ ํ๋์ ํธ๋์ญ์ ์ค๊ณ๋ฅผ ์ํ๋ ๊ฒ์ด ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๊ฒ์ ๋ง์ ์ด์ ์ด ์๋ค.
ํธ๋์ญ์ ํน์ง
ํธ๋์ญ์ ์ ํน์ง์ ํฌ๊ฒ 4๊ฐ์ง๋ก ๊ตฌ๋ถ๋๋ค.
์์์ฑ (Atomicity) | ์์์ฑ์ ํธ๋์ญ์
์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ๋ ๋ฐ์๋๋๊ฐ, ์๋๋ฉด ์ ํ ๋ฐ์๋์ง ์์์ผ ํ๋ค๋ ๊ฒ์ด๋ค. ํธ๋์ญ์ ์ ์ฌ๋์ด ์ค๊ณํ ๋ ผ๋ฆฌ์ ์ธ ์์ ๋จ์๋ก์, ์ผ์ฒ๋ฆฌ๋ ์์ ๋จ์ ๋ณ๋ก ์ด๋ฃจ์ด ์ ธ์ผ ์ฌ๋์ด ๋ค๋ฃจ๋๋ฐ ๋ฌด๋ฆฌ๊ฐ ์๋ค. ๋ง์ฝ ํธ๋์ญ์ ๋จ์๋ก ๋ฐ์ดํฐ๊ฐ ์ฒ๋ฆฌ๋์ง ์๋๋ค๋ฉด, ์ค๊ณํ ์ฌ๋์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์คํ ์ ์ดํดํ๊ธฐ ํ๋ค ๋ฟ๋ง ์๋๋ผ, ์ค์๋ ํ์์ ์์ธ์ ์ฐพ๊ธฐ๊ฐ ๋งค์ฐ ํ๋ค์ด์ง๊ฒ์ด๋ค. |
์ผ๊ด์ฑ (Consistency) | ์ผ๊ด์ฑ์ ํธ๋์ญ์
์ ์์
์ฒ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ํญ์ ์ผ๊ด์ฑ์ด ์์ด์ผ ํ๋ค๋ ๊ฒ์ด๋ค. ํธ๋์ญ์ ์ด ์งํ๋๋ ๋์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ณ๊ฒฝ ๋๋๋ผ๋ ์ ๋ฐ์ดํธ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ํธ๋์ญ์ ์ด ์งํ๋๋๊ฒ์ด ์๋๋ผ, ์ฒ์์ ํธ๋์ญ์ ์ ์งํ ํ๊ธฐ ์ํด ์ฐธ์กฐํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์งํ๋๋ค. ์ด๋ ๊ฒ ํจ์ผ๋ก์จ ๊ฐ ์ฌ์ฉ์๋ ์ผ๊ด์ฑ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์๋ ๊ฒ์ด๋ค. |
๋ ๋ฆฝ์ฑ (Isolation) | ๋
๋ฆฝ์ฑ์ ๋ ์ด์์ ํธ๋์ญ์
์ด ๋์์ ์คํ๋๊ณ ์์ ๊ฒฝ์ฐ ์ด๋ค ํ๋์ ํธ๋์ญ์ ์ด๋ผ๋, ๋ค๋ฅธ ํธ๋์ญ์ ์ ์ฐ์ฐ์ ๋ผ์ด๋ค ์ ์๋ค๋ ์ ์ ๊ฐ๋ฆฌํจ๋ค. ํ๋์ ํน์ ํธ๋์ญ์ ์ด ์๋ฃ๋ ๋๊น์ง, ๋ค๋ฅธ ํธ๋์ญ์ ์ด ํน์ ํธ๋์ญ์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ฐธ์กฐํ ์ ์๋ค. |
์๊ตฌ์ฑ (Durability) | ์ง์์ฑ์ ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋ฌ์ ๊ฒฝ์ฐ, ๊ฒฐ๊ณผ๋ ์๊ตฌ์ ์ผ๋ก ๋ฐ์๋์ด์ผ ํ๋ค๋ ์ ์ด๋ค. |
ํธ๋์ญ์ ์ํ
ํธ๋์ญ์ ์ ๊ฐ๋ ์ ์์ ํ ๋ฐ์ ๊ฐ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ๋ณํ์ํค๋ ํ๋์ ๋ ผ๋ฆฌ์ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํ ์์ ์ ๋จ์ ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์์ ๋ณต๊ตฌ ๋ฐ ๋ณํ ์ํ์ ์ฒ๋ฆฌ๋๋ ์์ ์ ๋ ผ๋ฆฌ์ ๋จ์์ด๋ค.

ํธ๋์ญ์ ์ ์ฐ์ฐ๊ณผ์ ์ ๋จ๊ณ๋ฅผ ๋์ํํ๊ณ ๊ฐ๊ฐ์ ๋จ๊ณ์ ์ํ๋ฅผ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ ๋ฆฌํ ์ ์๋๋ฐ, ๊ฐ๋ณ ์ํ์ ๋ํ ์์ธ๋ ๋ค์๊ณผ ๊ฐ๋ค.
1. ํ์ฑ(Active) : ํธ๋์ญ์ ์ด ์ ์์ ์ผ๋ก ์คํ์ค์ธ ์ํ๋ฅผ ์๋ฏธํ๋ค.
ํธ๋์ญ์ ์ด ์์๋๋ฉด, ํด๋น ํธ๋์ญ์ ์ ์ํ๋ ํ๋(Active)์ํ๊ฐ ๋๋ค.
ํด๋น ์ํ๋ ์ค๊ณ์๊ฐ ์ค๊ณํ ๋๋ก ์ฐ์ฐ๋ค์ด ์ ์์ ์ผ๋ก ์คํ์ค์ธ ์ํ๋ฅผ ์๋ฏธํ๋ค.
- ์์ ์ฑ๊ณต์,
2-1. ๋ถ๋ถ ์๋ฃ(Partially Committed) : ํธ๋์ญ์ ์ ๋ง์ง๋ง๊น์ง ์คํ๋์์ง๋ง, Commit ์ฐ์ฐ์ด ์คํ๋๊ธฐ ์ง์ ์ ์ํ
2-2. ์๋ฃ(Committed) : ํธ๋์ญ์ ์ด ์ฑ๊ณต์ด ์ข ๋ฃ๋์ด Commit ์ฐ์ฐ์ ์คํํ ํ์ ์ํ
์ค๊ณ๋ ํธ๋์ญ์ ๋๋ก ๋ช ๋ น์ ์ฑ๊ณต์ ์ผ๋ก ์ํํ๋ฉด ๊ทธ ๋ค์ ์ํ๋ ๋ถ๋ถ์ ์๋ฃ(Partially Committed)์ํ๊ฐ ๋๋ค.
์ค๊ณ๋ ์์ ๋๋ก ์์ ์ด ์ฑ๊ณตํ์๋ค๊ณ ํ์ฌ ๋ฌด์กฐ๊ฑด ๋ฐ์ํ๋ ๊ฒ์ด ์๋๋ผ, ์ค๊ณ์์ ์ต์ข ์น์ธ(Commit)์ด ์์ ๋ ๊น์ง ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ ๋ด์ฉ์ ๋ฐ์ํ์ง ์๊ณ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ํ์ด๋ค.
์ค๊ณ์๊ฐ ์์ ๊ฒฐ๊ณผ์ ๋ํ์ฌ ๋ฐ์์ ์น์ธ(Commit)ํ๋ค๋ฉด ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์ข ๋ฃ๋๋ค(Committed)
- ์์ ์คํจ์,
2-1. ์คํจ(Failed) : ํธ๋์ญ์ ์คํ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ์ค๋จ๋ ์ํ.
2-2. ์ฒ ํ(Aborted) : ํธ๋์ญ์ ์ด ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋์ด Rollback ์ฐ์ฐ์ ์ํํ ์ํ.
ํธ๋์ญ์ ์ ์ํํ๋ ์ค๊ฐ์ ๋ชจ์ข ์ ์์ธ์ผ๋ก ์ธํ์ฌ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ์คํ์ด ์ค๋จ๋ ์ํ๋ฅผ ์คํจ(Failed)์ํ๋ผ๊ณ ํ๋ค.
์ด๋ ํธ๋์ญ์ ์ด ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋์์ผ๋, ์ค๊ณ๋์ด์๋ ํธ๋์ญ์ ๋ด๋ถ์ ์์ ์ ๋ค์ ์ํ ์ด์ ์ ์ํ๋ก ๋๋ฆฌ๋ (ROLLBACK) ์ฐ์ฐ์ ์ํํ๋ฉด ๊ทธ ์ํ๋ฅผ ์ฒ ํ(Aborted)๋ผ๊ณ ํ๋ค.
Commit
Commit์ด๋, ๋ชจ๋ ์์ ๋ค์ ์ ์ ์ฒ๋ฆฌํ๊ฒ ๋ค๊ณ ํ์ ํ๋ ๋ช ๋ น์ด๋ก์, ํด๋น ์ฒ๋ฆฌ ๊ณผ์ ์ DB์ ์๊ตฌ ์ ์ฅํ๊ฒ ๋ค๋ ์๋ฏธ์ด๋ฉฐ, Commit์ ์ํํ๋ฉด ํ๋์ ํธ๋์ญ์ ๊ณผ์ ์ด ์ข ๋ฃ๋๋ ๊ฒ์ด๋ค.
Commit์ ์ํํ๋ฉด ์ด์ ๋ฐ์ดํฐ๊ฐ ์์ ํ ๋ฐ์๋์ด UPDATE๋๋ค.
Roll-back
Roll-back์ ์์ ์ค ๋ฌธ์ ๊ฐ ๋ฐ์๋์ด ํธ๋์ญ์ ์ ์ฒ๋ฆฌ ๊ณผ์ ์์ ๋ฐ์ํ ๋ณ๊ฒฝ์ฌํญ์ ์ทจ์ํ๋ ๋ช ๋ น์ด์ด๋ค.
ํด๋น ๋ช ๋ น์ ํธ๋์ญ์ ์๊ฒ ํ๋ฌํ๋ฉด, ํธ๋์ญ์ ์ ์์๋๊ธฐ ์ด์ ์ ์ํ๋ก ๋๋์๊ฐ๋ค.
์ด๊ฒ์ ๋ง์ง๋ง Commit์ ์๋ฃํ ์์ ์ผ๋ก ๋์๊ฐ๋ค๋ ๋ง๊ณผ ์ํตํ๋ค.
์ฆ, Rollback์ Commitํ์ฌ ์ ์ฅํ ์์ ์ํ๋ฅผ ๋ณต๊ตฌํ๋ ๊ฒ์ด๋ค
ํธ๋์ญ์ ๋ฌธ๋ฒ
๋ช ๋ น์ด๋ค์ MySQL์์ ์๋ Commit์ ํตํด ์ฟผ๋ฆฌ ์ ๋ ฅ๊ณผ ๋์์ ์ฒ๋ฆฌํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์๋๋ค.
๊ทธ๋ ๋ค๋ฉด Commit์ ์๋์ผ๋ก ๋ฐ๊ฟ์ ํ ํธ๋์ญ์ ์์ ์ฌ๋ฌ ๊ฐ์ ๋ช ๋ น๋ฌธ์ ๋ฃ๊ฒ ์ปค์คํ ํด๋ณด์
START TRANSACTION; -- ํธ๋์ญ์
์์
select * from members; -- ์ด๊ธฐ ์ํ ๋ณด์ฌ์ค
insert into members values(1, '์ฟ ', 'ํฌ๋ค์ค', 'ํฌ๋ผ์ด์ ๊ณผ' '?', '๋ํ๋ฏผ๊ตญ'); -- ๋ฐ์ดํฐ ์์
select * from members; -- ์์ ์ํ ๋ณด์ฌ์ค
COMMIT -- ํธ๋์ญ์
์ DB์ ์ ์ฉ
select * from members; -- ์ ์ฉ๋ ๊ฒฐ๊ณผ ์กฐํ


๋ค์์ ๋กค๋ฐฑ ๊ณผ์ ์ด๋ค.
ํ ์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ๋ฃ์ด์ก์์๋ rollback ํ ์๊ฐ ์์ ์ํ๋ก ๋๋์๊ฐ๋๊ฑธ ๋ณผ ์ ์๋ค.
START TRANSACTION; -- ํธ๋์ญ์
์์
insert into members values(5, '์ฟ ', 'ํฌ๋ค์ค ๋์', 'ํฌ๋ผ์ด์ ๊ณผ', '?', '๋ํ๋ฏผ๊ตญ'); -- ๋ฐ์ดํฐ ์์
select * from members; -- ์์ ์ํ ๋ณด์ฌ์ค
ROLLBACK -- ํธ๋์ญ์
์ ์ทจ์ํ๊ณ START TRANSACTION ์คํ ์ ์ํ๋ก ๋กค๋ฐฑํจ
select * from members; -- ์กฐํ

ํธ๋์ญ์ ์์ธ
๋ชจ๋ ๋ช ๋ น์ด์ ๋ํ์ฌ ํธ๋์ญ์ ์ ๋กค๋ฐฑ ๋ช ๋ น์ด ์ ์ฉ๋๋ ๊ฒ์ ์๋๋ค.
DDL๋ฌธ(CREATE, DROP, ALTER, RENAME, TRUNCATE)์ transaction์ rollback ๋์์ด ์๋๋ค.
MYSQL ํธ๋์ญ์ ์ ์ญ ์ค์
MySQL์์๋ ๋ํดํธ๋ก auto commit์ด on์ผ๋ก ์ค์ ๋์ด ์๋ค.
๋ช ๋ น์ด๋ฅผ ํ ๋ฒ, ๊ทธ๋ฌ๋๊น ์ธ๋ฏธ์ฝ๋ก ์ ํ ๋ฒ ์ฐ์ ๋๋ง๋ค DB์์ ์๋์ผ๋ก commit ํด์ฃผ๋ ์์คํ ์ด๋ค.

์ด๋ฅผ, ์์ MySQL ๊ธฐ๋ณธ Commit ๋ฐฉ์์ ๋ฐ๊ฟ ์ ์๋ค.
- 0์ ์๋ Commit Off
- 1์ ์๋ Commit On
-- ์คํ ์ปค๋ฐ off
SET AUTOCOMMIT = 0;
-- ์คํ ์ปค๋ฐ on
SET AUTOCOMMIT = 1;
-- ์คํ ์ฟผ๋ฆฌ ์ค์ ํ์ธ
select @@autocommit;
ํธ๋์ญ์ ๊ธฐ๋ฅ์ MySQL์ ์์ง์ ์ํฅ์ ๋ฐ๋๋ค.
DB ์์ง์ InnoDB๋ก ํ์ ์ผ ํธ๋์ญ์ ์ ์ฌ์ฉํ ์ ์๋ค.
# ์ฐธ๊ณ ์๋ฃ
https://akasai.space/db/about_acid/
https://wikidocs.net/4096
https://seung.tistory.com/5
์ด ๊ธ์ด ์ข์ผ์ จ๋ค๋ฉด ๊ตฌ๋ & ์ข์์
์ฌ๋ฌ๋ถ์ ๊ตฌ๋
๊ณผ ์ข์์๋
์ ์์๊ฒ ํฐ ํ์ด ๋ฉ๋๋ค.