Transaction
ํธ๋์ญ์ ์ด๋ ๋ฐ์ดํฐ์ ์ฒ๋ฆฌ ๋จ์๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
COMMIT์ด ์ผ์ด๋ ์์ ๋ถํฐ ๋ค์ COMMIT ์ ๊น์ง์ ์์ ์ด ํ๋์ ํธ๋์ญ์ ์ด๋ผ ์๊ฐํ๋ฉด ๋๋ค.
๊ทธ๋์ ์ฝ๊ฒ ๋งํ๋ฉด ์ด ํธ๋์ญ์ ๋จ์์์ ๋ฐ์ํ ์์ ์ ์ ์ฅ(COMMIT), ๋๋๋ฆฌ๊ธฐ(ROLLBACK)ํ๋ ๊ฒ์ด๋ค.
๊ฐํน๊ฐ๋ค INSERT, UPDATE, DELETE๊ฐ ์๋๊ณ ์คํจํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ
๊ทธ๋ผ ๋ญ ๋ค์ ์๋ํ๋ฉด ๋๊ธด ํฉ๋๋ค๋ง
๋์์ ์ฌ๋ฌ ์ฟผ๋ฆฌ๋ฅผ ์คํํด์ผํ๋๋ฐ ๊ทธ ์ค์ ํ๋๋ง ์คํจํ๋ ๊ฒฝ์ฐ
์ฌ๋ฌ๋ถ๋ค ์๋น์ค ์ด์์ ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ์ฌ๋ฌ๋ถ์ด ์ํ DB๋ฅผ ์ด์ํ๋๋ฐ
A ๊ณ ๊ฐ -> B ๊ณ ๊ฐ ์ด๋ ๊ฒ 1000์์ ๋ณด๋ด์ผํ๋ค๊ณ ์นฉ์๋ค.
1. ๊ทธ๋ผ A ๊ณ ๊ฐ์ ์๊ณ ์์ -1000์ ํ๊ณ
2. B ๊ณ ๊ฐ์ ์๊ณ ์ +1000์ ํ๋ฉด ๋ฉ๋๋ค.
UPDATE ๋ฌธ๋ฒ์ 2๋ฒ ์ฐ๋ฉด ๋๊ฒ ๊ตฐ์.
๊ทผ๋ฐ 1๋ฒ์ ์ฑ๊ณตํ๋๋ฐ 2๋ฒ์ ์คํจํ๋ฉด ์ด๋ป๊ฒ๋์ฃ ?
์ํ ๋ฌธ๋ซ์์ผํฉ๋๋ค.
๋ฌธ๋ซ๊ธฐ ์ซ์ผ๋ฉด transaction์ด๋ผ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํฉ์๋ค.
Transaction ๊ธฐ๋ฅ
์์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ถ์ผ๋ฉด
"์ฟผ๋ฆฌ๋ฌธ ์ฌ๋ฌ๊ฐ ์ค ์ต์ ํ๋๊ฐ ์๋ฌ๊ฐ ๋๋ ๊ฒฝ์ฐ ์ ์ฒด ์ฟผ๋ฆฌ๋ฌธ์ ์คํ ์ทจ์ํด์ฃผ์ธ์~" ๋ผ๊ณ ์ฝ๋์งค ์ ์์ต๋๋ค.
transaction ๊ธฐ๋ฅ์ ์ฐ๋ฉด ๋๋๋ฐ
transaction์ ์ฌ๋ฌ๊ฐ์ SQL ์ฟผ๋ฆฌ๋ฅผ ํ ๋ฒ์ ๋ฌถ์ด์ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋์์ฃผ๋ ๊ธฐ๋ฅ์ธ๋ฐ
COMMIT / ROLLBACK ๋ช ๋ น์ด ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
๐๊ทธ๋ผ ์ ์ฌํ DBeaver์์๋ commit์ ์์ป๋๋ฐ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋์?
DBeaver์์๋ Auto-Commit ๋ชจ๋๋ผ์ commit์ ์ํด์ฃผ๋๋ผ๋ ์์์ ํด์ค๋๋ค.
Auto-Commit : ์๋ ์ปค๋ฐ / SQL๋ฌธ ์คํ ์ ์ฆ์ ์ปค๋ฐ๋จ
Manual Commit : ์๋ ์ปค๋ฐ / SQL๋ฌธ ์คํ ํ commit ๋ช ๋ น์ด ์คํ ํ ์ปค๋ฐ๋จ
Smart Commut mode : ๋ฐ์ดํฐ ์์ ๋ชจ๋ ์ ์๋๋ชจ๋, ์กฐํ ์ ์๋๋ชจ๋๋ก ์ ํ
(Smart๋ชจ๋๋ ์๋ dbeaver ์ฌ์ดํธ์ ์์ธํ ์ค๋ช ์ ์ฐธ์กฐํ์ธ์.)
Oracle ์ ์ฉ ํด์ธ SQL Developer ๊ฐ์ ๋๊ตฌ๋ฅผ ์จ์ INSERT, UPDATE, DELETE๋ฅผ ํ๊ณ ๋์ COMMIT์ ํ์ง ์์๋๋ฐ๋, ์ ์ฉ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ํ์ง๋ง ์ด๊ฒ์ ํ์ฌ ์ธ์ ์์๋ง ๋ณผ ์ ์๋ ๋ด์ฉ์ด๋ฉฐ, ์ต์ข ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์๋ ์ํ๊ฐ ์๋๋ค.
์ค์ ๋ก ํ์ธ์ ํด๋ณด๊ณ ์ ํ๋ค๋ฉด SPRING์ ์ด์ฉํ์ฌ ์น์ฌ์ดํธ๋ฅผ ๋ง๋ ๋ค ํ ๋, ๊ฐ๋จํ๊ฒ ๊ฒ์๊ธ ๋ฆฌ์คํธ๋ฅผ DB์์ ๊ฐ์ ธ์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ ๋ง๋ค์ด๋ณด๊ณ Developer ๊ฐ์ ๋๊ตฌ๋ฅผ ์จ์ INSERT๋ฅผ ํด๋ณด๋ฉด ์น์์์๋ ์ฌ์ ํ ๋ชฉ๋ก์ด ์ ๋์ค์ง๋ง Developer์์๋ SELECT๊ฐ ๋๋ ์์ด๋ฌ๋ํ ์ํฉ์ด ๋ฐ์ํ๋ค.
๊ทธ ๋ค์ COMMIT์ ํด์ฃผ๋ฉด ์ ์์ ์ผ๋ก ์ถ๋ ฅ๋๋ฏ๋ก ํ์ฌ ์ด ๋๊ตฌ ๋ด์์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ ๋ ์๋ COMMIT์ธ์ง ์๋์ง๋ฅผ ํ์ธํด ๋ณด๋ฉด ๋ ๊ฒ์ด๋ค.
๐์ฐธ๊ณ .
์ฐ๋ฆฌ๊ฐ ์ฒ๋ฆฌํด์ฃผ์ง ์์๋ ์๋์ผ๋ก COMMIT , ROLLBACK ๋๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
์๋ COMMIT : ๋ฐ์ดํฐ ์ ์์ด(CREATE, ALTER, DROP) , ๋ฐ์ดํฐ ์ ์ด์ด(GRANT, REVOKE)
์๋ ROLLBACK : ๋น์ ์์ ์ธ ์ข ๋ฃ, SYSTEM FAILURE
Last updated