songining

4์ ˆ. TCL (TRANSACTION CONTROL LANGUAGE)

ํŠธ๋žœ์žญ์…˜ 

- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋…ผ๋ฆฌ์  ์—ฐ์‚ฐ๋‹จ์œ„

- ๋ถ„ํ• ํ•  ์ˆ˜ ์—†๋Š” ์ตœ์†Œ์˜ ๋‹จ์œ„

- ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์—๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ SQL๋ฌธ์žฅ์ด ํฌํ•จ๋œ๋‹ค. 

- ALL OR NOTHING์˜ ๊ฐœ๋… 

 

ํŠธ๋žœ์žญ์…˜์˜ ํŠน์„ฑ

1. ์›์ž์„ฑ - ๋ชจ๋‘ ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰๋˜๋˜์ง€ ์ „ํ˜€ ์‹คํ–‰๋˜์ง€ ์•Š์€ ์ƒํƒœ 

2. ์ผ๊ด€์„ฑ - ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰ ์ „๊ณผ ํ›„์— ์ผ๊ด€์„ฑ์ด ์žˆ์–ด์•ผ ํ•จ 

3. ๊ณ ๋ฆฝ์„ฑ(๊ฒฉ๋ฆฌ์„ฑ) - ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰๋˜๋Š” ๋„์ค‘ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์˜ ์˜ํ–ฅ์„ ๋ฐ›์•„ ์ž˜๋ชป๋œ ๊ฒฐ๊ณผ ๋งŒ๋“ค๋ฉด ์•ˆ๋จ 

4. ์ง€์†์„ฑ - ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰์‹œ ๊ฐฑ์‹ ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋‚ด์šฉ์€ ์˜๊ตฌ ์ €์žฅ 

 

1. ์ปค๋ฐ‹(COMMIT) - ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์˜๊ตฌ์ ์œผ๋กœ ๋ฐ˜์˜ 

COMMIT;

2. ๋กค๋ฐฑ(ROLLBACK) - ๋ณ€๊ฒฝ ์ „ ๋ฐ์ดํ„ฐ๋กœ ๋ณต๊ท€

ROLLBACK;

ROLLBACK TO SVPT1;

3. ์ €์žฅ์ (SAVEPOINT) - ์ง€์ •ํ•œ ์ €์žฅ์ ๊นŒ์ง€ ๋กค๋ฐฑ

SAVEPOINT SVPT1; 

 

ํšจ๊ณผ 

- ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ

- ์˜๊ตฌ๋ณ€๊ฒฝ ์ „ ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ํ™•์ธ ๊ฐ€๋Šฅ 

- ๋…ผ๋ฆฌ์ ์œผ๋กœ ์—ฐ๊ด€๋œ ์ž‘์—…์„ ๊ทธ๋ฃนํ•‘ํ•˜์—ฌ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ 

 

โ€ป DDL ๋ฌธ์žฅ์„ ์‹คํ–‰์‹œ์—๋Š” ์ž๋™์œผ๋กœ ์ปค๋ฐ‹๋œ๋‹ค.

   ORACLE์˜ ๊ฒฝ์šฐ DML ๋ฌธ์žฅ ์ดํ›„์— ์ปค๋ฐ‹์ด ์—†์–ด๋„ DDL๋ฌธ์žฅ์ด ์‹คํ–‰๋˜๋ฉด DDL ์ˆ˜ํ–‰ ์ „์— ์ž๋™์œผ๋กœ ์ปค๋ฐ‹๋œ๋‹ค. 

   ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •์ƒ ์ข…๋ฃŒ์‹œ ์ž๋™ ์ปค๋ฐ‹

   ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด์ƒ ์ข…๋ฃŒ์‹œ ์ž๋™ ๋กค๋ฐฑ 

    SQL SERVER์˜ ๊ฒฝ์šฐ์—๋Š” ์ž๋™ ์ปค๋ฐ‹๋ชจ๋“œ์ด๋ฏ€๋กœ ๋”ฐ๋กœ ์ฒ˜๋ฆฌ ํ•„์š” X 

 

SQL SERVER - AUTO COMMIT

ORACLE - ์•”์‹œ์  ํŠธ๋žœ์žญ์…˜(์‹œ์ž‘์€ DBMS๊ฐ€ ์ฒ˜๋ฆฌ) 

+ ๋ช…์‹œ์  ํŠธ๋žœ์žญ์…˜(์‹œ์ž‘(BEGIN)๊ณผ ๋(COMMIT) ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •) 

 

๊ฒฉ๋ฆฌ์„ฑ์—์„œ์˜ ๋ฌธ์ œ์  

1. ๊ฐฑ์‹  ๋ถ„์‹ค (lost update)

- ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด ์ˆ˜ํ–‰ํ•œ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์—ฐ์‚ฐ์ด ์ €์žฅ๋˜๊ธฐ ์ „์— ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ๊ฐ€์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ๋‹ค์‹œ ์ €์žฅํ•˜๋Š” ๊ฒฝ์šฐ ์ฒซ๋ฒˆ์งธ ํŠธ๋žœ์žญ์…˜์ด ์ˆ˜ํ–‰ํ•œ ์—ฐ์‚ฐ์€ ๋ฌดํšจ๊ฐ€ ๋œ๋‹ค

2. ์˜ค์†ํŒ๋… (dirty bit) 

- commit ๋˜์ง€ ์•Š์€ ๊ฐ’์„ ์ฝ์–ด์™”์„ ๋•Œ, ๋‚˜์ค‘์— commit ์—†์ด ์ข…๋ฃŒํ•œ๋‹ค๋ฉด ์˜ค์†๋œ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ฒŒ ๋˜์–ด ๊ผฌ์ธ๋‹ค. 

3. ๋ฐ˜๋ณต ๋ถˆ๊ฐ€๋Šฅ(uprepeatable read) 

 - ํ•œ ํŠธ๋žœ์žญ์…˜์ด ๊ฐ’์„ ์ฝ์–ด์˜จ ํ›„ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ๊ทธ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์—†์• ๋ฒ„๋ฆฌ๋ฉด ๊ทธ data๋ฅผ ๋‹ค์‹œ ์ฝ์„ ์ˆ˜ ์—†์Œ. 

4. ํŒฌํ…€ ๋ฌธ์ œ 

- ํ•œ ํŠธ๋žœ์žญ์…˜(T1)์ด ์–ด๋– ํ•œ ์กฐ๊ฑด์œผ๋กœ ๊ฐ’์„ ์กฐํšŒํ•œ ํ›„ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜(T2)์ด ํ•ด๋‹น ์กฐ๊ฑด์—์„œ data๋ฅผ ์‚ฝ์ž…,์‚ญ์ œํ•˜๋ฉด T1์ด ๋‹ค์‹œ ๊ฐ’์„ ์กฐํšŒํ–ˆ์„ ๋•Œ ๋ณ€๊ฒฝ๋œ data๊ฐ€ ์กฐํšŒ๋œ๋‹ค. ์ด ์ƒํƒœ์—์„œ T2๊ฐ€ rollbackํ•œ๋‹ค๋ฉด? 

 

ํŠธ๋žœ์žญ์…˜์˜ 4๊ฐ€์ง€ ๊ฒฉ๋ฆฌ ๋ ˆ๋ฒจ(isolation level)

๋ฏธ์™„๋ฃŒ๋œ ํŠธ๋žœ์žญ์…˜ ์ฝ๊ธฐ(read uncommitted) 

- ์ปค๋ฐ‹ํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„์ˆ˜ ์žˆ๋‹ค.

- ์˜ค์†ํŒ๋…, ๋ฐ˜๋ณต๋ถˆ๊ฐ€๋Šฅ ์ฝ๊ธฐ , ํŒฌํ…€๋ฌธ์ œ ๋ฐœ์ƒ 

์™„๋ฃŒ๋œ ํŠธ๋žœ์žญ์…˜ ์ฝ๊ธฐ(read committed)

- ์ปค๋ฐ‹ ์™„๋ฃŒ๋œ ๋ฐ์ดํ„ฐ๋งŒ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค.

- ๋ฐ˜๋ณต ๋ถˆ๊ฐ€๋Šฅ ์ฝ๊ธฐ, ํŒฌํ…€๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ 

๋ฐ˜๋ณต๊ฐ€๋Šฅ ์ฝ๊ธฐ(repeatable read)

- ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ํ•œ๋ฒˆ ์กฐํšŒํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ์กฐํšŒํ•ด๋„ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์กฐํšŒ ๋œ๋‹ค.

- ํŒฌํ…€๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ

์ง๋ ฌ ๊ฐ€๋Šฅ(serializable)  

์œ„ 3๊ฐ€์ง€ ๋ฌธ์ œ์ ์„ ๋ชจ๋‘ ์˜ˆ๋ฐฉ ๊ฐ€๋Šฅ 

์˜ค์†ํŒ๋…, ๋ฐ˜๋ณต ๋ถˆ๊ฐ€๋Šฅ ์ฝ๊ธฐ, ํŒฌํ…€ ๋ฌธ์ œ ๋ชจ๋‘ ์˜ˆ๋ฐฉ