#15 Transactions
#15.0 Introduction
Transaction - ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ์ดํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ๊ธฐ ์ข์ sql ์ฝ๋ ์์ฑํ ์ ์๊ฒ ํด์ค, ์ฌ๋ฌ sql ์ฟผ๋ฆฌ์ ๊ฑฐ์ณ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๊ฐ์ ํด์ฃผ๋ ๋ฑ ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ์ฐ์ ์์ ์ฌ์ฉํ๋ ๊ฐ๋
Transaction Control Language
#15.1 Transaction Are Awesome
#15.2 ACID
transaction ์์คํ ์ ACID ๋ผ๋ ํน์ง์ด ์๋ค.
Atomic - All or Nothing ๋ชจ๋ ์์ ์ด ์ฑ๊ณตํ๊ฑฐ๋ ์๋ํ์ง ์์์ผ ํจ
Consistent - ์ ํจํ(valid) ์ํ์์ ๋ ๋ค๋ฅธ ์ ํจ(valid) ์ํ๊ฐ ๋์ด์ผ ํจ
Isolated - ํ๋์ transaction์์ ์คํ๋ ๋ณ๊ฒฝ ์ฌํญ์ด commit ๋๊ธฐ ์ ๊น์ง ๋ค๋ฅธ transaction์์ ํ์ธํ ์ ์์
Durablity - transaction์ด ์คํ๋๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์์ด ๋๊ฐ๊ฑฐ๋ ์๋ฒ๊ฐ ์ฃฝ๊ฑฐ๋ ํ๋ ์ํฉ์๋ ๋ณ๊ฒฝ ์ฌํญ๋ค์ด ์๊ตฌ์ ์ผ๋ก ์ ์ง๋๋ ๊ฑธ ํ์ ํ ์ ์์ด์ผ ํ๋ค.
auto commit mode ์์๋ SELECT FROM, UPDATE, DELETE ๋ฑ ๋ชจ๋ ๋ช ๋ น๋ฌธ์ด ๊ทธ ์์ฒด๋ก ํ๋์ ์์ transaction ์ทจ๊ธ๋จ
#15.3 Savepoints
like checkpoint in game
#15.4 Read Uncommited ~
transaction์ด ์ ํํ ์ ์๋ 4๊ฐ์ง Isolation Level
Isolation Level - transaction ์ธ๋ถ ๋ฐ์ดํฐ์ ๋ํ ๊ฐ์์ฑ ์์ค ์ ์ด
Read uncommitted
Read committed
Repeatable read
Serializable
Isolation Level์ transaction phenomena๋ผ ์๋ ค์ง transaction์์ ๋ฐ์ํ๋ ํ์์ ๋ง์์ฃผ๊ธฐ๋ ํจ. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋ฐ์ ์ผ๊ด์ฑ ์๋ ํ์๋ค๋ก 4๊ฐ์ง phenomena๋ Isolation ๋ด๋ถ์์ ์ผ์ด๋ ์ ์์, transaction ์ข ๋ฅ์ ๋ฐ๋ผ 4๊ฐ์ง ํ์์ด ๋ฐ์ํ ์ ์๋๋ก ์ ํ ๊ฐ๋ฅํจ
Dirty Read - transaction์ด commit ๋์ง ์์ transaction์ด ์์ฑํ ๋ฐ์ดํฐ๋ฅผ ๋์์ ์ฝ์ ๋ ๋ฐ์
Nonrepeatable Read - transaction์ด ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์ฝ์ผ๋ ค๊ณ ํ ๋ ๋ฐ์, ์ด๋ฏธ ํ๋ฒ ์ฝ์ ๋ฐ์ดํฐ๊ฐ ๋ค๋ฅธ transaction์์ ์์ ๋๊ณ commit ๋์์ ๋
Phantom Read - row(ํ) ์งํฉ์ ๋ฐํํ๋ ์ฟผ๋ฆฌ๋ฅผ transaction ์์์ ์ฌ์คํํ ๋ ์ต๊ทผ commit ๋ ๋ค๋ฅธ transaction์ ์ํด ๊ทธ ๊ฒฐ๊ณผ๊ฐ ์ด์ ๊ณผ ๋ค๋ฅด๊ฒ ๋ณ๊ฒฝ๋๋ ๊ฒ
Serialization Anomaly - ์ฌ๋ฌ transaction์ ์ฑ๊ณต์ ์ธ ์ปค๋ฐ ๊ฒฐ๊ณผ๊ฐ ๊ฐ๋ฅํ ๋ชจ๋ ์์๋ก transaction์ ์์ฐจ์ ์ผ๋ก ์คํํ ๊ฒฐ๊ณผ์ ์ผ์นํ์ง ์์ ๋ ๋ฐ์
---
Locks - ๋ค๋ฅธ transaction์์ ๋์์ ๊ฐ์ row ๊ฐ์ ๋ณ๊ฒฝํ๋ ค ํ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์๋์ผ๋ก lock ๊ฑธ์ด ์์๋๋ก ์๋ํ๋๋ก ํจ
row๋ฅผ lock ํด ์๋ฌด๋ ํด๋น row๋ฅผ ์์ ํ๊ฑฐ๋ ์ญ์ ํ ์ ์๋๋ก
SELECT โ FOR UPDATE; ๋ชจ๋ฅด๋ ์ฌ์ด์ ๊ฐ์ด ๋ณ๊ฒฝ๋์ง ์์ exclusive lock ์๋ฌด๋ ๋ฐ์ดํฐ๋ฅผ ์์ , ์ญ์ ํ ์ ์์
SELECT โ FOR SHARE; ๋ชจ๋ฅด๋ ์ฌ์ด์ ๊ฐ์ด ๋ณ๊ฒฝ๋์ง ์์ ๋ค๋ฅธ FOR SHARE ์ฟผ๋ฆฌ์์ ๊ฐ์ lock์ ๊ณต์ ํ ์ ์๊ฒ ํจ
Last updated
Was this helpful?