-
MSSQL : ํธ๋์ญ์ ๊ฒฉ๋ฆฌ์์คDB 2020. 3. 18. 14:51๋ฐ์ํ
ํ์ฌ ๋ค๋๊ณ ์๋ ํ์ฌ์์๋ ๋๋ถ๋ถ์ ๋น์ฆ๋์ค ๋ก์ง์ ํ๋ก์์ ๋ก ์ฒ๋ฆฌํ๋ค.
๊ทธ๋ ๊ฐ๊ฐ์ ํ๋ก์์ ๋ง๋ค ํญ์ ์ฝ์ ๋๋ ๋ ๊ฐ์ง์ ๊ตฌ๋ฌธ์ด ์๋๋ฐ ๋ฐ๋ก
1) SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
2) SET NOCOUNT ON;์ด๋ค.
ํ๋ก์์ ๋ง๋ค ์ฐ๊ธธ๋ ์ฌ์ฉํ๊ธด ํ๋๋ฐ, ์ ์ ๋ ๊ฒ ํด์ผํ๋์ง ์์์ผ ํ๊ธฐ์.. ์ ๋ฆฌํด๋ณด์๋ค.
๋ณธ๋ก ์ผ๋ก ๋ค์ด๊ฐ๊ธฐ ์ ๊ฐ๋จํ๊ฒ ๋งํ์๋ฉด ,
1)์ ํธ๋์ญ์ ์ ACID ์ค ๊ฒฉ๋ฆฌ์ฑ(Isolation)์ ๋ํ ๋ด์ฉ2)๋ ํ๋ก์์ ์ฑ๋ฅํฅ์์ ๋ํ ๋ด์ฉ์ด๋ค.
๊ธธ์ด์ง ๊ฒ ๊ฐ์ 1๊ณผ 2๋ฅผ ๋ถ๋ฆฌํด ๋๊ฐ์ ๊ธ๋ก ์ ์ ์์ ์ด๋ค .
ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค(Transaction Isolation Level) ?
SQL Server์์ ์ ๊ธ(Lock)์ ์ด๋ค ์์ผ๋ก ์ ์ฉํ ๊ฒ์ธ๊ฐ์ ๊ดํ ์๊ธฐ์ด๋ค.
์ฃผ๋ก SELECT์ Lock์ ์ด๋ป๊ฒ ๊ฑธ ๊ฒ์ด๋์ ๋ฐ๋ผ ๊ฒฉ๋ฆฌ ์์ค์ด ๊ตฌ๋ถ์ง์ด์ง๋ค.
ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค์ ํ์์ฑ ?
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ACID ๊ฐ์ด ํธ๋์ญ์ ์ด ์์์ ์ด๋ฉด์๋ ๋ ๋ฆฝ์ ์ธ ์ํ์ ํ๋๋ก ํ๋ค.
- ๊ทธ๋์ Locking ์ด๋ผ๋ ๊ฐ๋
์ด ๋ฑ์ฅํ๋ค.
(ํธ๋์ญ์ ์ด DB๋ฅผ ๋ค๋ฃจ๋ ๋์ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ๊ด์ฌํ์ง ๋ชปํ๊ฒ ๋ง๋ ๊ฒ) - ํ์ง๋ง ๋ฌด์กฐ๊ฑด์ ์ธ Locking์ผ๋ก ๋์์ ์ํ๋๋ ๋ง์ ํธ๋์ญ์ ๋ค์ ์์๋๋ก ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ๋๋ฉด DB์ ์ฑ๋ฅ์ ๋จ์ด์ง๊ฒ ๋๋ค.
- ๋ฐ๋๋ก ์๋ต์ฑ์ ๋์ด๊ธฐ ์ํด Locking ๋ฒ์๋ฅผ ์ค์ธ๋ค๋ฉด ์๋ชป๋ ๊ฐ์ด ์ฒ๋ฆฌ ๋ ์ฌ์ง๊ฐ ์๋ค.
- ๊ทธ๋์ ์ต๋ํ ํจ์จ์ ์ธ Locking ๋ฐฉ๋ฒ์ด ํ์ํ๋ค.
ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค์ ์ข ๋ฅ
1. READ COMMITTED
2. READ UNCOMMITTED3. REPEATABLE READ
4. READ COMMITTED SNAPSHOT
5. SNAPSHOT
1. READ COMMITTED
๋ค๋ฅธ ์ฌ์ฉ์์ ์์ ์ด ์๋ฃ๋ ๋ฐ์ดํฐ๋ง ์กฐํํ๊ฑฐ๋ ๋ณ๊ฒฝํ ์ ์๋ค.
๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ๋ณ๊ฒฝ ์ค์ด๋ผ๋ฉด SELECT๋ฅผ ํฌํจํ ์ด๋ค ์์ ๋ ํ ์ ์๊ณ , ๋๊ธฐ ํ๋ค๊ฐ ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ๋น๋ก์ ์์ ์ด ์๋ฃ ๋๋ฉด ๋ณ๊ฒฝ๋ ๊ฒฐ๊ณผ๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐํ ํ๊ฑฐ๋ ๋ณ๊ฒฝ ์์ ์ด ์งํ๋๋ค.
โ ์ผ๋ฐ์ ์ผ๋ก SQL Server ์ค์น ์ ๊ธฐ๋ณธ ์ค์ ์ด๋ฉฐ, ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๊ณ์ ๋๊ธฐ ์ํ์ ์๋ค.
โก ORACLE์ ๊ฒฝ์ฐ, ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ ์๋ค ํ๋๋ผ๋ ๋ณ๊ฒฝ ์ ์ ๋ฐ์ดํฐ๋ก ๋๊ธฐ ์์ด ์กฐํ๋๋ค.
โข ์ ํํ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ ์ ์์ง๋ง ๋๊ธฐ์๊ฐ์ด ๊ธธ์ด์ง๋ ๋จ์ ์ด ์๋ค.2. READ UNCOMMITTED
ํธ๋์ญ์ ์ด ์๋ฃ๋์ง ์์ ๋ฐ์ดํฐ๋ ์กฐํ ๊ฐ๋ฅํ๋ค.
๋ค๋ฅธ ์ธ์ ์์ ํด๋น ๋ฐ์ดํฐ๊ฐ UPDATE์ค์ด์ด๋ ์ธ์ 2๋ ๋๊ธฐ ์์ด SELECT ๋ช ๋ น์ด ์คํ๋๋ ๋์
ํธ๋์ญ์ ๋ด์์ UPDATE์์ ์ด ์๋ฃ๋์๋ค๋ฉด ์์ง ํธ๋์ญ์ ์ด ์๋ฃ๋์ง ์์๋ค๊ณ ํ๋๋ผ๋ ๊ทธ ๋น์์ ๋ฐ์ดํฐ๊ฐ ์ถ๋ ฅ ๋๋ค. (๋ฐ์ดํฐ์ ์ ํ๋๋ ๋ฎ์ง๋ง ๋๊ธฐ ์์ด ๋น ๋ฅธ ์๋๋ก ์กฐํ๋จ )
3. REPEATABLE READ
ํธ๋์ญ์ ๋ด์์ SELECT ๋ ๋ฐ์ดํฐ๋ ๋ด๋ถ์ ์ผ๋ก LOCK์ด ์ค์ ๋์ด ๋ค๋ฅธ ์ธ์ ์์ SELECT๋ ๊ฐ๋ฅํ์ง๋ง UPDATE๋ DELETEํด์ผ ํ ๊ฒฝ์ฐ ๋๊ธฐ ์ํ๊ฐ ๋๋ค. ํ์ง๋ง INSERT ์์ ์ ์ธ์ ๋ ์ง ์ํํ ์ ์๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ ๋ชจ๋ ํธ๋์ญ์ ์์ ๋ฐ๋ก ํ์ธ ๊ฐ๋ฅํ๋ค.
4. SERIALIZABLE
SERIALIZABLE์ ๊ฐ์ฅ ๊ฐ๋ ฅํ ๊ฒฉ๋ฆฌ์์ค์ ๊ฐ๊ณ ์์ผ๋ฉฐ,
ํ ์ธ์ ์์ SELECT ๋ ๋ฐ์ดํฐ๋ ๋ค๋ฅธ ์ธ์ ์์ SELECT ํ ์๋ ์์ง๋ง UPDATE, DELETE ๋ฟ๋ง ์๋๋ผ ๊ด๋ จ๋ ํค ๊ฐ์ INSERT์์ ์ ํ ๊ฒฝ์ฐ ๋๊ธฐ๊ฐ ๋ฐ์๋๋ค.
(ํ ์ธ์ ๊ณผ ๊ด๋ จ ์๋ ๋ฐ์ดํฐ๋ ์๋ฌด๋ฐ ๋ฌธ์ ์์ด SELECT, INSERT, UPDATE, DELETE ๋ฑ ๋ชจ๋ ์์ ์ด ์ ์์ ์ผ๋ก ์ํ๋๋ค.)
5. READ COMMITTED SNAPSHOP
ORACLE DB์ ๊ธฐ๋ณธ ํธ๋์ญ์ ๋ชจ๋์ ๋งค์ฐ ์ ์ฌํ๋ค.
ํธ๋์ญ์ ์ค์ ๋ณ๊ฒฝ๋ ์ ๋ณด๋ ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ๋ณ๊ฒฝ๋ ๋ด์ฉ์ด ์กฐํ ๋์ง ์๊ณ ๋ณ๋์ ๋๊ธฐ ํ์๋ ์๊ธฐ ๋๋ฌธ์ด๋ค.
READ COMMITTED SNAPSHOP ๊ฒฉ๋ฆฌ ์์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ์ฒด์ ์ ์ฉ ํ๋ ๊ฒ์ด ์๋๋ผ ์์ฑํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋จ์๋ก ๋ณ๊ฒฝํด์ผ ํ๋ค. ๋ง์ฝ ๋ณ๊ฒฝ ํ๊ณ ์ ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์๋ ์ฌ์ฉ์๊ฐ ์๋ค๋ฉด ์ ์์ด ์ค๋จ ๋ ์ ์๋๋ก ๋จ์ผ ์ฌ์ฉ์ ๋ชจ๋์์ ๋ณ๊ฒฝ ํ ์์ฑ์ ๋ณ๊ฒฝํ์ฌ์ผ ํ๋ค.
READ COMMITTED SNAPSHOP ๊ฒฉ๋ฆฌ ์์ค์ ๋ณ๊ฒฝ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ฑ ์ ๋ณด์์ ๋ณ๊ฒฝ ๊ฐ๋ฅ ํ์ง๋ง ์ฟผ๋ฆฌ ์ฐฝ์์ ๋ช ๋ น์ด๋ฅผ ์คํํ ์๋ ์๋ค.
6. SNAPSHOP
์ฒ์ ์กฐํ๋ ๋ฐ์ดํฐ๊ฐ ๋ค๋ฅธ ์ธ์ ์์ ์ด๋ฏธ ๋ณ๊ฒฝ ๋๋ ์ญ์ ์ฒ๋ฆฌ๊ฐ ๋๊ณ ํธ๋์ญ์ ์ด ์๋ฃ๋์๋ค๊ณ ํ๋๋ผ๋ ๋ค์ ์กฐํ ํ์์ ๊ฒฝ์ฐ ๋์ผํ๊ฒ ๋ฐ์ดํฐ๊ฐ ์กฐํ๋๋ ํน์ฑ์ด ์๋ค. ํ์ง๋ง ์ด ์ ๋ณด๋ฅผ ๋ณ๊ฒฝ ํ ๊ฒฝ์ฐ์๋ “์ ๋ฐ์ดํธ ์ถฉ๋๋ก ์ธํด ์ค๋ ์ ๊ฒฉ๋ฆฌ ํธ๋์ญ์ ์ด ์ค๋จ ๋์์ต๋๋ค”๋ผ๋ ๋ฉ์์ง์ ํจ๊ป ์ค๋ฅ๊ฐ ๋ฐ์๋๋ค. SNAPSHOP ๊ฒฉ๋ฆฌ ์์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ์ฒด์ ์ ์ฉ ํ๋ ๊ฒ์ด ์๋๋ผ ์์ฑํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋จ์๋ก ๋ณ๊ฒฝํด์ผ ํ๋ค. ๋ง์ฝ ๋ณ๊ฒฝ ํ๊ณ ์ ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์๋ ์ฌ์ฉ์๊ฐ ์๋ค๋ฉด ์ ์์ ์ค๋จํ ์ ์๋๋ก ๋จ์ผ ์ฌ์ฉ์ ๋ชจ๋์์ ๋ณ๊ฒฝ ํ ์์ฑ์ ๋ณ๊ฒฝํ์ฌ์ผ ํ๋ค.
SNAPSHOP ๊ฒฉ๋ฆฌ ์์ค์ ๋ณ๊ฒฝ์ READ COMMITTED SNAPSHOP ๊ฒฉ๋ฆฌ์์ค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ฑ ์ ๋ณด์์ ๋ณ๊ฒฝ ๊ฐ๋ฅ ํ์ง๋ง ์ฟผ๋ฆฌ ์ฐฝ์์ ๋ช ๋ น์ด๋ฅผ ์คํ ํ ์๋ ์๋ค.๋ฐ์ํ'DB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
MySQL : MySQL 1045(28000) ์๋ฌ (0) 2020.04.23 MSSQL : SET NOCOUNT ON ์ฌ์ฉ ๋ชฉ์ (0) 2020.03.22 MSSQL : sql๋ฌธ์์ ๊ฒฐ๊ณผ ์งํฉ์ ๋ฐํํ์ง ์์์ต๋๋ค. ์๋ฌ (0) 2020.03.18 MSSQL : ',' ๊ทผ์ฒ์ ๊ตฌ๋ฌธ์ด ์๋ชป๋์์ต๋๋ค ์๋ฌ (0) 2020.03.17 MSSQL : ํน์ ์ปฌ๋ผ์ด ํฌํจ๋ ํ ์ด๋ธ ๋ฐ ํ๋ก์์ ์ฐพ๊ธฐ (0) 2020.03.13