3 ๋ถ„ ์†Œ์š”

[10๋ถ„ ํ…Œ์ฝ”ํ†ก] ๐ŸŒผ ์˜ˆ์ง€๋‹ˆ์–ด์Šค์˜ ํŠธ๋žœ์žญ์…˜๋ฅผ ๋“ฃ๊ณ  ์ •๋ฆฌ.

@TRANSACTION์˜ ๊ฒฉ๋ฆฌ๋ ˆ๋ฒจ๊ณผ ์ „ํŒŒ ํƒ€์ž…์— ๋Œ€ํ•ดโ€ฆ

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


์˜ˆ์‹œ)

๊ฑฐ๋ž˜๊ฐ€ ์ผ์–ด๋‚ ๋•Œ์˜ ๊ณผ์ •

  • ๊ตฌ๋งค์ž ๊ณ„์ขŒ์—์„œ 10000์›์„ ์ถœ๊ธˆ
  • ํŒ๋งค์ž ๊ณ„์ขŒ์— 10000์› ์ž…๊ธˆ

  • UPDATE๋ฌธ : ๊ตฌ๋งค์ž ๊ณ„์ขŒ์—์„œ 10000์› ๋นผ๊ธฐ
  • UPDATE๋ฌธ: ํŒ๋งค์ž ๊ณ„์ขŒ์— 10000์› ๋”ํ•˜๊ธฐ

๋งŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๋ฉด ๊ตฌ๋งค์ž์˜ ๊ณ„์ขŒ์—์„œ ๋ˆ์€ ๋น ์ ธ๋‚˜๊ฐ”์ง€๋งŒ ํŒ๋งค์ž ๊ณ„์ขŒ์— ๋ˆ์ด ์ž…๊ธˆ๋˜์ง€ ์•Š๋Š” ๋ถˆ์ƒ์‚ฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฐ ์ƒํ™ฉ์„ ๋ฐฉ์ง€ํ•˜๊ณ ์ž ๋“ฑ์žฅํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ Transaction์ด๋‹ค.

ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์€ ๋ชจ๋‘ โ€˜์ปค๋ฐ‹โ€™ ํ˜น์€ โ€˜๋กค๋ฐฑโ€™๋œ๋‹ค.

์ปค๋ฐ‹: ์ผ์ข…์˜ ํ™•์ธ ๋„์žฅ์œผ๋กœ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ๋ฌถ์ธ ๋ชจ๋“  ์ฟผ๋ฆฌ๊ฐ€ ์„ฑ๊ณตํ•˜์—ฌ ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜์˜ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์‹ค์ œ ๋””๋น„์— ๋ฐ˜์˜ํ•˜๋Š” ๊ฒƒ.

๋กค๋ฐฑ : ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ทจ์†Œํ•˜๊ณ  DB๋ฅผ ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰ ์ด์ „ ๋‹จ๊ณ„๋กœ ๋˜๋Œ๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค.

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

ACID ์„ฑ์งˆ : ํŠธ๋žœ์žญ์…˜์ด ์•ˆ์ „ํ•˜๊ฒŒ ์ˆ˜ํ–‰๋œ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ์ ์ธ ์„ฑ์งˆ

A โ†’ Atomicity : ์›์ž์„ฑ

ํŠธ๋žœ์žญ์…˜์€ DB์— ๋ชจ๋‘ ๋ฐ˜์˜๋˜๊ฑฐ๋‚˜, ์ „ํ˜€ ๋ฐ˜์˜๋˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค. (= ์™„๋ฃŒ๋˜์ง€ ์•Š์€ ํŠธ๋žœ์žญ์…˜์˜ ์ค‘๊ฐ„ ์ƒํƒœ๋ฅผ DB์— ๋ฐ˜์˜ํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค)

C โ†’ Consistency : ์ผ๊ด€์„ฑ

์ผ๊ด€๋œ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ƒํƒœ๋ฅผ ์œ ์ง€๋˜์–ด์•ผ ํ•œ๋‹ค. ํŠธ๋žœ์žญ์…˜ ์ž‘์—… ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋Š” ํ•ญ์ƒ ์ผ๊ด€์„ฑ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

I โ†’ Isolation : ๋…๋ฆฝ์„ฑ

๋‘˜ ์ด์ƒ์˜ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ ์‹คํ–‰๋˜๊ณ  ์žˆ์„ ๋•Œ, ์–ด๋–ค ํŠธ๋žœ์žญ์…˜๋„ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜ ์—ฐ์‚ฐ์— ๋ผ์–ด๋“ค ์ˆ˜ ์—†๋‹ค. (= ๊ฐ๊ฐ์˜ ํŠธ๋žœ์žญ์…˜์€ ์„œ๋กœ ๊ฐ„์„ญ ์—†์ด ๋…๋ฆฝ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•œ๋‹ค)

Dโ†’ Durability : ์ง€์†์„ฑ

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

ex) ๋…๋ฆฝ์„ฑ์„ ์™„๋ฒฝํžˆ ๋ณด์žฅํ•˜๋ ค ํ•˜๋ฉด ๋™์ผ ๋ฐ์ดํ„ฐ์— 100๊ฐœ ์—ฐ๊ฒฐ์ด ์ ‘๊ทผํ–ˆ์„ ์‹œ ์ด 100๊ฐœ ์—ฐ๊ฒฐ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ํ•ด๊ฒฐํ•ด์•ผํ•œ๋‹ค. ๋™์‹œ์„ฑ์ด ๋งค์šฐ ๋–จ์–ด์ง.

โ†’ ์ด๊ฐ™์€ ์ƒํ™ฉ์—์„œ ๋™์‹œ์„ฑ ์„ฑ๋Šฅ์„ ๋งŒ์กฑ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๊ฒฉ๋ฆฌ ๋ ˆ๋ฒจ ์„ค์ •์„ ํ†ตํ•ด ํ•ด๊ฒฐํ•œ๋‹ค.

ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€

๋™์‹œ์— DB์— ์ ‘๊ทผํ•  ๋•Œ, ๊ทธ ์ ‘๊ทผ์„ ์–ด๋–ป๊ฒŒ ์ œ์–ดํ• ์ง€์— ๋Œ€ํ•œ ์„ค์ •

ํ‘œ์ค€์ ์œผ๋กœ ๋„ค๊ฐ€์ง€ ๋ ˆ๋ฒจ์ด ์กด์žฌํ•œ๋‹ค.

Untitled

๋ฐ‘์œผ๋กœ ๊ฐˆ ์ˆ˜๋ก ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ด ๋†’์•„์ง€์ง€๋งŒ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง„๋‹ค.

๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ๊ณผ ๋™์‹œ์„ฑ์€ ๋ฐ˜๋น„๋ก€ํ•œ๋‹ค.

  1. READ-UNCOMMITTED

์ปค๋ฐ‹ ์ „์˜ ํŠธ๋žœ์žญ์…˜์˜ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ฝ๋Š” ๊ฒƒ์„ ํ—ˆ์šฉ

ํ•œ ํŠธ๋žœ์žญ์…˜์ด ์•„์ง ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ์ƒํƒœ์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋ณ€๊ฒฝ๋œ ๊ฐ’์„ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค.

Untitled

์œ„ ๊ทธ๋ฆผ์—์„œ Transaction A๊ฐ€ ์•„์ง ๋๋‚˜์ง€ ์•Š์€ ์‹œ์ (์ปค๋ฐ‹x) ์—์„œ Transaction B๊ฐ€ ์กฐํšŒ๋ฅผ ์‹œ๋„ํ•œ๋‹ค. ์ปค๋ฐ‹๋˜์ง€ ์•Š๊ณ  ๋ณ€๊ฒฝ๋œ Transaction A์˜ ๊ฐ’์„ ์กฐํšŒํ•˜๊ฒŒ ๋œ๋‹ค.

READ_UNCOMMITTED ๋ ˆ๋ฒจ์—์„œ๋Š” Dirty Read ๋ฌธ์ œ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Non-Repeatable Read, Phantom Read ๋ฌธ์ œ๋„ ์กด์žฌํ•˜๋‚˜ ์ดํ›„ ๊ฒฉ๋ฆฌ๋ ˆ๋ฒจ์— ์„ค๋ช…

  1. READ-COMMITTED

์ปค๋ฐ‹์ด ์™„๋ฃŒ๋œ ํŠธ๋žœ์žญ์…˜์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ๋งŒ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ์กฐํšŒ ๊ฐ€๋Šฅ

ํŠธ๋žœ์žญ์…˜์ด ์ด๋ฃจ์–ด์ง€๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž, ํŠธ๋žœ์žญ์…˜์€ ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

Untitled

์•„์ง ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ์ƒํƒœ๋ผ๋ฉด ๋ณ€๊ฒฝ ์ด์ „์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๋ฉฐ ์ปค๋ฐ‹์ด ์™„๋ฃŒ๋œ ์ดํ›„๋ผ๋ฉด ๋ณ€๊ฒฝ ์ดํ›„์˜ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ์ฝ์–ด์˜จ๋‹ค. (โ€™ํžˆํžˆโ€™ โ†’ โ€˜ํ—ˆํ—ˆโ€™)

READ_COMMITTED๋ ˆ๋ฒจ์€ READ_UNCOMMITTED๋ ˆ๋ฒจ์—์„œ ๋ฐœ์ƒํ•˜๋Š” Dirty Read ํ˜„์ƒ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค.

ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ Non-Repeatable Read, Phantom Read ํ˜„์ƒ์ด ์ผ์–ด๋‚œ๋‹ค.

  1. REPEATABLE-READ

READ_COMMITTED์™€ ๋™์ผํ•˜๊ฒŒ ์ปค๋ฐ‹์ด ์™„๋ฃŒ๋ˆ ๋ฐ์ดํ„ฐ๋งŒ ์ฝ์–ด์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

READ_COMMITTED์™€ ๋‹ค๋ฅธ์ ์€, ํ•œ ํŠธ๋žœ์žญ์…˜์ด ์กฐํšŒํ•œ ๋ฐ์ดํ„ฐ๋Š” ํŠธ๋žœ์žญ์…˜์ด ์ข…๋ฃŒ๋  ๋•Œ ๊นŒ์ง€ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š”๊ฒƒ์„ ๋ง‰์œผ๋ฏ€๋กœ, ํ•œ ๋ฒˆ ์กฐํšŒํ•œ ๋ฐ์ดํ„ฐ๋Š” ๋ฐ˜๋ณต์ ์œผ๋กœ ์กฐํšŒํ•ด๋„ ๊ฐ™์€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ์ ์ด๋‹ค.

Untitled

์œ„ ๊ทธ๋ฆผ์—์„œ์™€ ๊ฐ™์ด, ํŠธ๋žœ์žญ์…˜ A๊ฐ€ ์ปค๋ฐ‹์„ ํ•œ ์ดํ›„ ์‹œ์ ์— ํŠธ๋žœ์žญ์…˜ B๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•ด๋„ ๋ณ€๊ฒฝ ์ด์ „ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์™œ๋ƒ๋ฉด ํŠธ๋žœ์žญ์…˜ B๊ฐ€ ํŠธ๋žœ์žญ์…˜์˜ UPDATE ์ฟผ๋ฆฌ์— ์˜ํ•œ ๋ณ€๊ฒฝ ์ด์ „ ์‹œ์ ์— ์ด๋ฏธ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

REPEATABLE-READ ๋ ˆ๋ฒจ์—์„œ๋„ ์—ฌ์ „ํžˆ Phantom Read๋ผ๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

  1. SERIALIZABLE

๊ฐ€์žฅ ๋†’์€ ์ˆ˜์ค€์˜ ๊ฒฉ๋ฆฌ๋ ˆ๋ฒจ์ด์ž, ๊ฐ€์žฅ ๋‚ฎ์€ ์ˆ˜์ค€์˜ ๋™์‹œ์„ฑ์„ ๊ฐ€์ง„๋‹ค.

ํ•œ ํŠธ๋žœ์žญ์…˜์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ์ ‘๊ทผ ๋ถˆ๊ฐ€

ํŠธ๋žœ์žญ์…˜์˜ ACID ์„ฑ์งˆ์ด ์—„๊ฒฉํ•˜๊ฒŒ ์ง€์ผœ์ง€๋‚˜ ๋™์‹œ์„ฑ์ด ๊ฐ€์žฅ ๋–จ์–ด์ง„๋‹ค.

๋‹จ์ˆœ select ์กฐํšŒ๋งŒ์œผ๋กœ๋„ ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹ ๋  ๋•Œ๊นŒ์ง€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ์— ์ž ๊ธˆ์ด ๊ฑธ๋ ค ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค.

๊ฒฉ๋ฆฌ ์ˆ˜์ค€ ์ •๋ฆฌ ํ‘œ

Untitled

ํŠธ๋žœ์žญ์…˜ ์ „ํŒŒ ํƒ€์ž…

  • ํŠธ๋žœ์žญ์…˜์˜ ๊ฒฝ๊ณ„์—์„œ ํŠธ๋žœ์žญ์…˜์ด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•  ๊ฒƒ์ธ๊ฐ€

ํŠธ๋žœ์žญ์…˜์ด ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์ฐธ์—ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๊ด€ํ•œ ์„ค์ •

Untitled

์˜ˆ์‹œ ์ฝ”๋“œ์—์„œ์™€ ๊ฐ™์ด ํŠธ๋žœ์žญ์…˜์ด ์ฒ˜๋ฆฌ๋˜๋Š” ๊ณผ์ • ์•ˆ์—์„œ ๋˜ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ ๋ถ€๋ชจ ํŠธ๋žœ์žญ์…˜์˜ ์œ ๋ฌด์— ๋”ฐ๋ผ ํƒ€์ž…๋ณ„๋กœ ํŠธ๋žœ์žญ์…˜์˜ ๊ฒฝ๊ณ„๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

Untitled

์Šคํ”„๋ง์—์„œ ์ œ๊ณตํ•˜๋Š” ์ „ํŒŒ ํƒ€์ž…์€ ์ด 7๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•œ๋‹ค.

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ