ํŠธ๋žœ์žญ์…˜์ด๋ž€ 


ํŠธ๋žœ์žญ์…˜์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ˆ˜ํ–‰์ด ์ผ๋ จ์˜ ์ฒ˜๋ฆฌ ๋‹จ์œ„๋กœ ๋ฌถ์ด๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

์œ„ ๊ทธ๋ฆผ์€ ์™ผ์ชฝ ๊ณ„์ขŒ์˜ ๋ˆ์„ ์˜ค๋ฅธ์ชฝ ๊ณ„์ขŒ๋กœ ์ž…๊ธˆํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.
์ฒซ๋ฒˆ ์งธ์ฒ˜๋Ÿผ ์™ผ์ชฝ ๊ณ„์ขŒ์—์„œ ์ถœ๊ธˆ์ด ์„ฑ๊ณต๋˜๋ฉด ์˜ค๋ฅธ์ชฝ ๊ณ„์ขŒ๋กœ ์ž…๊ธˆ๋œ๋‹ค.
ATM์˜ ๋ฌธ์ œ๋กœ ์™ผ์ชฝ์—์„œ ์ถœ๊ธˆ์ด ๋˜๊ณ  ๋ช‡ ๋ถ„ ํ›„, ์ถœ๊ธˆ์ด ์ทจ์†Œ๋˜์—ˆ๋‹ค๊ณ  ํ•˜๋ฉด ๋‘๋ฒˆ์งธ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์˜ค๋ฅธ์ชฝ ๊ณ„์ขŒ์—๋„ ์ž…๊ธˆ์ด ๋˜์ง€ ์•Š์•„์•ผํ•œ๋‹ค.

๋งŒ์•ฝ ์ถœ๊ธˆ์€ ์ทจ์†Œ ๋˜์—ˆ๋Š”๋ฐ ์ž…๊ธˆ์ด ๋ผ๋ฒ„๋ฆฌ๋ฉด ํฐ ๊ธฐ๋Šฅ์ƒ์˜ ๋ฌธ์ œ์ธ ๊ฒƒ์ด๋‹ค.
์ด๋ ‡๊ฒŒ ์ผ๋ จ์˜ ์ฒ˜๋ฆฌ๊ฐ€ All or Nothing์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋Š” ๊ฒƒ์ด ํŠธ๋žœ์žญ์…˜์ด๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—… ๋‹จ์œ„
  • ์ƒํƒœ๋ฅผ ๋ณ€ํ™” ์‹œํ‚จ๋‹ค =  SQL ์งˆ์˜์–ด๋ฅผ ํ†ตํ•ด DB์— ์ ‘๊ทผํ•œ๋‹ค 
    • SELECT INSERT DELETE UPDATE
  • ์ž‘์—… ๋‹จ์œ„ ---> ๋งŽ์€ SQL ๋ช…๋ น๋ฌธ๋“ค์„ ์‚ฌ๋žŒ์ด ์ •ํ•˜๋Š” ๊ธฐ์ค€์— ๋”ฐ๋ผ ์ •ํ•˜๋Š” ๊ฒƒ
    •  ๊ฒŒ์‹œํŒ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ธ€์„ ์ž‘์„ฑํ•˜๊ณ  ์˜ฌ๋ฆฌ๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ ํ›„ ๊ฒŒ์‹œํŒ์— ๋‹ค์‹œ ๋Œ์•„์˜ค๋ฉด ๊ฒŒ์‹œํŒ์— ๋‚ด๊ฐ€ ์“ด ๊ธ€์ด ์—…๋ฐ์ดํŠธ๋œ ์ƒํƒœ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
      • ์ด๋•Œ DB ์ž‘์—…
        • ์˜ฌ๋ฆฌ๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค. : INSERT๋ฌธ์„ ์‚ฌ์šฉํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฒŒ์‹œ๊ธ€ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊น€.
        • ๊ฒŒ์‹œํŒ ์ƒˆ๋กœ ๊ตฌ์„ฑ : SELECT๋ฌธ์„ ์‚ฌ์šฉํ•ด ์ตœ์‹  ์ •๋ณด๋ฅผ ์œ ์ง€.
      • ํ˜„์žฌ ์ž‘์—… ๋‹จ์œ„  INSERT ๋ฌธ + SELECT ๋ฌธ -----------> ์ด๋ฅผ ํ†ตํ‹€์–ด ํ•˜๋‚˜์˜ tranaction์ด๋ผ ํ•œ๋‹ค!

์ฆ‰. ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ์„ค๊ณ„๋ฅผ ์ž˜ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ๋งŽ์€ ์ด์ ์„ ์ค€๋‹ค.

 

์ž‘์—…์˜ ์™„์ „์„ฑ ์„ ๋ณด์žฅํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, ๋…ผ๋ฆฌ์ ์ธ ์ž‘์—… ์…‹์„ ๋ชจ๋‘ ์™„๋ฒฝํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ๋˜๋Š” ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•  ๊ฒฝ์šฐ์—๋Š” ์› ์ƒํƒœ๋กœ ๋ณต๊ตฌํ•ด์„œ ์ž‘์—…์˜ ์ผ๋ถ€๋งŒ ์ ์šฉ๋˜๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ์‚ฌ์šฉ์ž์˜ ์ž…์žฅ์—์„œ๋Š” ์ž‘์—…์˜ ๋…ผ๋ฆฌ์  ๋‹จ์œ„๋กœ ์ดํ•ด๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ณ  ์‹œ์Šคํ…œ์˜ ์ž…์žฅ์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์ ‘๊ทผ ๋˜๋Š” ๋ณ€๊ฒฝํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ๋‹จ์œ„๊ฐ€ ๋œ๋‹ค.

 

 

 

 

 

ํŠธ๋žœ์žญ์…˜์˜ Commit, Rollback ์—ฐ์‚ฐ


Commit

 ์ด๋ž€ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋๋‚ฌ๊ณ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ผ๊ด€์„ฑ์žˆ๋Š” ์ƒํƒœ์— ์žˆ์„ ๋•Œ, ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด ๋๋‚ฌ๋‹ค๋ผ๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ฃผ๊ธฐ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์—ฐ์‚ฐ์ด๋‹ค.

์ด ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ˆ˜ํ–‰ํ–ˆ๋˜ ํŠธ๋žœ์žญ์…˜์ด ๋กœ๊ทธ์— ์ €์žฅ๋˜๋ฉฐ, ํ›„์— Rollback ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ–ˆ์—ˆ๋˜ ํŠธ๋žœ์žญ์…˜๋‹จ์œ„๋กœ ํ•˜๋Š”๊ฒƒ์„ ๋„์™€์ค€๋‹ค.

 

 

Rollback

์ด๋ž€ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๊ฐ€ ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด ํŠธ๋žœ์žญ์…˜์˜ ์›์ž์„ฑ์ด ๊นจ์ง„๊ฒฝ์šฐ, ํŠธ๋žœ์žญ์…˜์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜, ํŠธ๋žœ์žญ์…˜์˜ ๋ถ€๋ถ„์ ์œผ๋กœ๋งŒ ์—ฐ์‚ฐ๋œ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ์ทจ์†Œ์‹œํ‚จ๋‹ค.

ํ›„์— ์‚ฌ์šฉ์ž๊ฐ€ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋œ ๋‹จ์œ„๋Œ€๋กœ Rollback์„ ์ง„ํ–‰ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

 

 

 

ํŠธ๋žœ์žญ์…˜ ํŠน์ง• ACID


ACID 4๊ฐ€์ง€ ํŠน์„ฑ์„ ๋งŒ์กฑํ•ด์•ผํ•œ๋‹ค.

 

1. ์›์ž์„ฑ(Atomicity)

๋งŒ์•ฝ ํŠธ๋žœ์žญ์…˜ ์ค‘๊ฐ„์— ์–ด๋– ํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ํŠธ๋žœ์žญ์…˜์— ํ•ด๋‹นํ•˜๋Š” ์–ด๋– ํ•œ ์ž‘์—… ๋‚ด์šฉ๋„ ์ˆ˜ํ–‰๋˜์–ด์„œ๋Š” ์•ˆ๋˜๋ฉฐ ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ๋˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ์—๋งŒ ๋ชจ๋“  ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค.

 

2. ์ผ๊ด€์„ฑ(Consistency)

ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋œ ๋‹ค์Œ์˜ ์ƒํƒœ์—์„œ๋„ ํŠธ๋žœ์žญ์…˜์ด ์ผ์–ด๋‚˜๊ธฐ ์ „์˜ ์ƒํ™ฉ๊ณผ ๋™์ผํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•ด์•ผ ํ•œ๋‹ค.

 

3. ๊ณ ๋ฆฝ์„ฑ(Isolation)

๊ฐ๊ฐ์˜ ํŠธ๋žœ์žญ์…˜์€ ์„œ๋กœ ๊ฐ„์„ญ์—†์ด ๋…๋ฆฝ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค.

 

4. ์ง€์†์„ฑ(Durability)

ํŠธ๋žœ์žญ์…˜์ด ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋œ ๋‹ค์Œ์—๋Š” ์˜๊ตฌ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ž‘์—…์˜ ๊ฒฐ๊ณผ๊ฐ€ ์ €์žฅ๋˜์–ด์•ผ ํ•œ๋‹ค.

 

 

 

 

 

ํŠธ๋žœ์žญ์…˜์˜ ์ƒํƒœ


 

Active

ํŠธ๋žœ์žญ์…˜์˜ ํ™œ๋™ ์ƒํƒœ. ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰์ค‘์ด๋ฉฐ ๋™์ž‘์ค‘์ธ ์ƒํƒœ๋ฅผ ๋งํ•œ๋‹ค.

 

Failed

ํŠธ๋žœ์žญ์…˜ ์‹คํŒจ ์ƒํƒœ. ํŠธ๋žœ์žญ์…˜์ด ๋”์ด์ƒ ์ •์ƒ์ ์œผ๋กœ ์ง„ํ–‰ ํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ๋ฅผ ๋งํ•œ๋‹ค.

 

Partially Committed

ํŠธ๋žœ์žญ์…˜์˜ Commit ๋ช…๋ น์ด ๋„์ฐฉํ•œ ์ƒํƒœ. ํŠธ๋žœ์žญ์…˜์˜ commit์ด์ „ sql๋ฌธ์ด ์ˆ˜ํ–‰๋˜๊ณ  commit๋งŒ ๋‚จ์€ ์ƒํƒœ๋ฅผ ๋งํ•œ๋‹ค.

 

Committed

ํŠธ๋žœ์žญ์…˜ ์™„๋ฃŒ ์ƒํƒœ. ํŠธ๋žœ์žญ์…˜์ด ์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒ๋œ ์ƒํƒœ๋ฅผ ๋งํ•œ๋‹ค.

 

Aborted

ํŠธ๋žœ์žญ์…˜์ด ์ทจ์†Œ ์ƒํƒœ. ํŠธ๋žœ์žญ์…˜์ด ์ทจ์†Œ๋˜๊ณ  ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰ ์ด์ „ ๋ฐ์ดํ„ฐ๋กœ ๋Œ์•„๊ฐ„ ์ƒํƒœ๋ฅผ ๋งํ•œ๋‹ค.

 

Partially Committed ์™€ Committed ์˜ ์ฐจ์ด์ 

Commit ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ์ƒํƒœ๋Š” Partial Commited ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. ์ดํ›„ Commit์„ ๋ฌธ์ œ์—†์ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉดCommitted ์ƒํƒœ๋กœ ์ „์ด๋˜๊ณ , ๋งŒ์•ฝ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด Failed ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

์ฆ‰, Partial Commited๋Š” Commit ์š”์ฒญ์ด ๋“ค์–ด์™”์„๋•Œ๋ฅผ ๋งํ•˜๋ฉฐ, Commited๋Š” Commit์„ ์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒํ•œ ์ƒํƒœ๋ฅผ ๋งํ•œ๋‹ค.

 

 

 

 

์ž ๊ธˆ


โ–  ์ž ๊ธˆ(Locking)์ด๋ž€ ?

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

- ์ž ๊ธˆ์€ ํŠธ๋žœ์žญ์…˜์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋„๋ก ํ•จ์œผ๋กœ์จ ์†์‹ค๋œ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š”๋ฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•˜๋ฉฐ ์ž๋™์œผ๋กœ ๋ฐœ์ƒํ•œ๋‹ค.

- ์ž ๊ธˆ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ผ๊ด€์„ฑ ์œ ์ง€์™€ ๋™์‹œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

 

 

 

 โ–  ๋ธ”๋กœํ‚น(Blocking)์ด๋ž€ ?

- ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ์—‘์„ธ์Šคํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์ด๋ฏธ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ทธ ์ž์›์„ ์ž ๊ทธ๊ณ  ์žˆ์–ด์„œ ๊ทธ ์ž ๊ธˆ์ด ํ’€๋ฆด ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ์ƒํ™ฉ์„ ๋งํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์ฐจ๋‹จ์ด ์˜ค๋žซ๋™์•ˆ ์œ ์ง€๋  ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค.

 

 

 

โ–  ์ž ๊ธˆ ๊ด€๋ฆฌ

- ๊ต์ฐฉ์ƒํƒœ(Dead Locks) :

  * ํŠธ๋žœ์žญ์…˜ A๋Š” ํŠธ๋žœ์žญ์…˜ B๊ฐ€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ž ๊ทธ๊ณ  ์žˆ์œผ๋ฉด์„œ ํŠธ๋žœ์žญ์…˜ B๊ฐ€ ์ž ๊ทธ๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ•œ๋‹ค.

  * ํŠธ๋žœ์žญ์…˜ B๋Š” ํŠธ๋žœ์žญ์…˜ A๊ฐ€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ž ๊ทธ๊ณ  ์žˆ์œผ๋ฉด์„œ ํŠธ๋žœ์žญ์…˜ A๊ฐ€ ์ž ๊ทธ๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ•œ๋‹ค.

- MSSQL ํ•ด๊ฒฐ๋ฐฉ๋ฒ• : ํ•œ์ชฝ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒ(๋น„์šฉ์ด ์ ์€ ํŠธ๋žœ์žญ์…˜์˜ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ•์ œ ์ข…๋ฃŒํ•œ๋‹ค.)

- SET DEADLOCK_PRIORITY ๋ฌธ์„ ์‚ฌ์šฉํ•ด ๊ต์ฐฉ ์ƒํƒœ ๋ฐœ์ƒ ์‹œ ํŠธ๋žœ์žญ์…˜์˜ ์ค‘์š”๋„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

- ์šฐ๋ฆฌ ํšŒ์‚ฌ์˜ ๊ฒฝ์šฐ sp_mon_blocking ํ”„๋กœ์‹œ์ €๋ฅผ ์ด์šฉํ•ด ๋ธ”๋กœํ‚น ์ƒํƒœ์ธ spid๋ฅผ ์ฐพ์•„๋‚ธ๋‹ค. ๋ธ”๋กœํ‚นํ•˜๊ณ  ์žˆ๋Š” spid ์„ธ์…˜์„ ์ฃฝ์ด๊ธฐ ์œ„ํ•ด ' kill [spid] ' ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

 

ํŠธ๋žœ์žญ์…˜์„ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ์˜ํ•  ์ 


ํŠธ๋žœ์žญ์…˜์€ ๊ผญ ํ•„์š”ํ•œ ์ตœ์†Œ์˜ ์ฝ”๋“œ์—๋งŒ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ฆ‰ ํŠธ๋žœ์žญ์…˜์˜ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™”ํ•˜๋ผ๋Š” ์˜๋ฏธ๋‹ค.

 

์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปค๋„ฅ์…˜์€ ๊ฐœ์ˆ˜๊ฐ€ ์ œํ•œ์ ์ด๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๊ฐ ๋‹จ์œ„ ํ”„๋กœ๊ทธ๋žจ์ด ์ปค๋„ฅ์…˜์„ ์†Œ์œ ํ•˜๋Š” ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง„๋‹ค๋ฉด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์—ฌ์œ  ์ปค๋„ฅ์…˜์˜ ๊ฐœ์ˆ˜๋Š” ์ค„์–ด๋“ค๊ฒŒ ๋œ๋‹ค.

๊ทธ๋Ÿฌ๋‹ค ์–ด๋Š ์ˆœ๊ฐ„์—๋Š” ๊ฐ ๋‹จ์œ„ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ปค๋„ฅ์…˜์„ ๊ฐ€์ ธ๊ฐ€๊ธฐ ์œ„ํ•ด ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

 

 

๊ต์ฐฉ์ƒํƒœ

๊ต์ฐฉ์ƒํƒœ๋ž€ ๋ฌด์—‡์ธ๊ฐ€
๋ณต์ˆ˜์˜ ํŠธ๋žœ์žญ์…˜์„ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋ฉด ๊ต์ฐฉ์ƒํƒœ๊ฐ€ ์ผ์–ด๋‚ ์ˆ˜ ์žˆ๋‹ค. ๊ต์ฐฉ์ƒํƒœ๋ž€ ๋‘ ๊ฐœ ์ด์ƒ์˜ ํŠธ๋žœ์žญ์…˜์ด ํŠน์ • ์ž์›(ํ…Œ์ด๋ธ” ๋˜๋Š” ํ–‰)์˜ ์ž ๊ธˆ(Lock)์„ ํš๋“ํ•œ ์ฑ„ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์†Œ์œ ํ•˜๊ณ  ์žˆ๋Š” ์ž ๊ธˆ์„ ์š”๊ตฌํ•˜๋ฉด ์•„๋ฌด๋ฆฌ ๊ธฐ๋‹ค๋ ค๋„ ์ƒํ™ฉ์ด ๋ฐ”๋€Œ์ง€ ์•Š๋Š” ์ƒํƒœ๊ฐ€ ๋˜๋Š”๋ฐ, ์ด๋ฅผ ๊ต์ฐฉ์ƒํƒœ๋ผ๊ณ  ํ•œ๋‹ค.

 

 

 

๊ต์ฐฉ์ƒํƒœ์˜ ๋นˆ๋„๋ฅผ ๋‚ฎ์ถ”๋Š” ๋ฐฉ๋ฒ•

  • ํŠธ๋žœ์žญ์…˜์„ ์ž์ฃผ ์ปค๋ฐ‹ํ•œ๋‹ค.
  • ์ •ํ•ด์ง„ ์ˆœ์„œ๋กœ ํ…Œ์ด๋ธ”์— ์ ‘๊ทผํ•œ๋‹ค. ์œ„์—์„œ ํŠธ๋žœ์žญ์…˜ 1 ์ด ํ…Œ์ด๋ธ” B -> A ์˜ ์ˆœ์œผ๋กœ ์ ‘๊ทผํ–ˆ๊ณ , ํŠธ๋žœ์žญ์…˜ 2 ๋Š” ํ…Œ์ด๋ธ” A -> B์˜ ์ˆœ์œผ๋กœ ์ ‘๊ทผํ–ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜๋“ค์ด ๋™์ผํ•œ ํ…Œ์ด๋ธ” ์ˆœ์œผ๋กœ ์ ‘๊ทผํ•˜๊ฒŒ ํ•œ๋‹ค.
  • ์ฝ๊ธฐ ์ž ๊ธˆ ํš๋“ (SELECT ~ FOR UPDATE)์˜ ์‚ฌ์šฉ์„ ํ”ผํ•œ๋‹ค.
  • ํ•œ ํ…Œ์ด๋ธ”์˜ ๋ณต์ˆ˜ ํ–‰์„ ๋ณต์ˆ˜์˜ ์—ฐ๊ฒฐ์—์„œ ์ˆœ์„œ ์—†์ด ๊ฐฑ์‹ ํ•˜๋ฉด ๊ต์ฐฉ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ๋‹ค, ์ด ๊ฒฝ์šฐ์—๋Š” ํ…Œ์ด๋ธ” ๋‹จ์œ„์˜ ์ž ๊ธˆ์„ ํš๋“ํ•ด ๊ฐฑ์‹ ์„ ์ง๋ ฌํ™” ํ•˜๋ฉด ๋™์‹œ์„ฑ์„ ๋–จ์–ด์ง€์ง€๋งŒ ๊ต์ฐฉ์ƒํƒœ๋ฅผ ํšŒํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค.

 


Reference.

link1 link2 link3

+ Recent posts