Schedule๊ณผ Serializability

K๊ฐ€ H์—๊ฒŒ H์—๊ฒŒ 20๋งŒ์›์„ ์ด์ฒดํ•  ๋•Œ, H๋„ ATM์—์„œ ๋ณธ์ธ ๊ณ„์ขŒ์— 30๋งŒ์›์„ ์ž…๊ธˆํ•œ๋‹ค๋ฉด ์ •๋ง ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ฒฝ์šฐ์˜ ์ˆ˜๋กœ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค.

์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์˜ ์‹คํ–‰ ๊ฒฝ์šฐ์˜ ์ˆ˜ ์ค‘ ์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์ด๋ผ๋ฉด, ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

3๋ฒˆ์—์„œ K๊ฐ€ H์˜ 200๋งŒ์›์„ ์ฝ์—ˆ๋Š”๋ฐ ์ค‘๊ฐ„์— H๊ฐ€ ์ž์‹ ์˜ ๊ณ„์ขŒ์— 30๋งŒ์›์„ ์ž…๊ธˆํ•œ ๊ฒƒ์ด๋‹ค.

K์˜ read ์‹œ์ ์—๋Š” 200๋งŒ์› ์ด๊ธฐ๋•Œ๋ฌธ์— 20๋งŒ์›์„ ์ด์ฒดํ•˜๊ณ  commitํ•˜๋ฉด H์˜ 30๋งŒ์›์€ ์‚ฌ๋ผ์ง„๋‹ค.

์ด๋Ÿฌํ•œ ์ด์ƒ ํ˜„์ƒ์„ Lost Update๋ผ๊ณ  ํ•œ๋‹ค.

schedule โ†’ conflict operations โ†’ conflict equivalent โ†’ conflict serializable ์ˆœ์„œ๋กœ ์ดํ•ดํ•˜๋ ค ํ•œ๋‹ค.

Schedule

๊ทธ๋ฆผ์—์„œ 1, 2, .. 5๋ฒˆ๊ณผ ๊ฐ™์€ ์—ฐ์‚ฐ์„ โ€œoperationโ€์ด๋ผ๊ณ  ํ•œ๋‹ค.

๋˜, ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ์‹คํ–‰๋  ๋•Œ, ๊ฐ ํŠธ๋žœ์žญ์…˜์— ์†ํ•œ operation๋“ค์˜ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ์Šค์ผ€์ค„์ด๋ผ๊ณ  ํ•œ๋‹ค.

ํŠธ๋žœ์žญ์…˜์˜ ์Šค์ผ€์ค„์€ โ€œ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜โ€์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๋Š” ์‹œ๊ฐ„์  ์ž‘์—… ์ˆœ์„œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

์ฆ‰, ๊ทธ๋ฆผ ๋ง๊ณ ๋„ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ์ผ€์ด์Šค๊ฐ€ ์กด์žฌ ํ• ํ…๋ฐ, ๊ทธ๊ฒƒ๋“ค๋„ ๋ชจ๋‘ ์Šค์ผ€์ค„์ด๋‹ค.

  • ๊ฐ ํŠธ๋žœ์žญ์…˜์— ์†ํ•˜๋Š” operation๋“ค์˜ ์ˆœ์„œ๋Š” ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค.

์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‘ ๊ฐœ์˜ ๋™์ผํ•œ ์š”์ฒญ์ด ๋“ค์–ด์™”์„ ๋•Œ, ํ•˜๋‚˜์˜ ์Šค์ผ€์ค„๋ง์ด ํ˜•์„ฑ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

์ด ๊ฒฝ์šฐ๋Š” ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์„œ๋น„์Šค ๋กœ์ง์ด ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์„ ๊ฐ–๊ณ  ์žˆ์„ ๊ฒฝ์šฐ๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

Serial Schedule

์ง๋ ฌ ์Šค์ผ€์ค„์€ DB์—์„œ ํŠธ๋žœ์žญ์…˜์„ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ์ˆœ์ฐจ์ ์œผ๋กœ ํ•˜๋‚˜์”ฉ ์‹คํ–‰ํ•˜๋Š” ์Šค์ผ€์ค„์„ ์˜๋ฏธํ•œ๋‹ค.

์ฆ‰, ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ์‹คํ–‰๋˜์ง€ ์•Š๊ณ  ํ•œ ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋œ ํ›„ ๋‹ค์Œ ํŠธ๋žœ์žญ์…˜์ด ์‹œ์ž‘๋˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

๋”ฐ๋ผ์„œ ๊ฐ ํŠธ๋žœ์žญ์…˜์ด ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋ฏ€๋กœ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์ด ๋ณด์žฅ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ํŠธ๋žœ์žญ์…˜์„ ๋™์‹œ์— ํŠธ๋žœ์žญ์…˜์„ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์ง€ ๋ชปํ•˜์—ฌ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ๋‹ค.

Non-Serial Schedule

๋น„์ง๋ ฌ ์Šค์ผ€์ค„์€ ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์—, ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋˜๋„๋ก ํ•˜๋Š” ์Šค์ผ€์ค„์ด๋‹ค.

๊ฐ™์€ ์‹œ๊ฐ„์ด์— ๋” ๋งŽ์€ ํŠธ๋žœ์žญ์…˜์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•˜๊ณ  ์‘๋‹ต ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•  ์ˆ˜ ์žˆ์„๊ฒƒ์ด๋‹ค.

ํ•˜์ง€๋งŒ ๋™์‹œ์„ฑ์„ ์ œ์–ดํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์—†๋‹ค๋ฉด ๋ฌด๊ฒฐ์„ฑ์ด ๋ณด์žฅ๋˜์ง€ ์•Š๊ณ  ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์ด์ƒ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

Conflict

์ถฉ๋Œ์€ DB ์‹œ์Šคํ…œ์—์„œ ๋‘ ๊ฐœ ์ด์ƒ์˜ ํŠธ๋žœ์žญ์…˜์ด ๋™์ผํ•œ ๋ฐ์ดํ„ฐ์— ๋™์‹œ์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

circle-info

๐Ÿ‘€ ๋‘ operation์ด 3๊ฐ€์ง€์˜ condition์„ ๋งŒ์กฑํ•ด์•ผ conflict์ด๋‹ค.

  1. ์„œ๋กœ ๋‹ค๋ฅธ transaction

  2. ๊ฐ™์€ data์— ์ ‘๊ทผ

  3. ์ตœ์†Œ ํ•˜๋‚˜๋Š” write operation </aside>

์ถฉ๋Œ ์œ ํ˜•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ์ฝ๊ธฐ-์“ฐ๊ธฐ (Read-Write)

    • ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด ๋ฐ์ดํ„ฐ๋ฅผ read ํ•˜๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ write ํ•˜๋Š” ๊ฒฝ์šฐ

  2. ์“ฐ๊ธฐ-์ฝ๊ธฐ (Write-Read)

    • ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด write ํ•˜๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ read ํ•˜๋Š” ๊ฒฝ์šฐ

  3. ์“ฐ๊ธฐ-์“ฐ๊ธฐ (Write-Write)

    • ๋‘ ๊ฐœ ์ด์ƒ์˜ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ write ํ•˜๋Š” ๊ฒฝ์šฐ

์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ด๋Ÿฐ๊ฒŒ ์žˆ์—ˆ๋‹ค. ์•„์ง ๋‹ค๋ฃจ์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค.

  1. ์ž ๊ธˆ (Locking)

  2. ํƒ€์ž„์Šคํƒฌํ”„ ์ˆœ์„œ

  3. ๋‚™๊ด€์  ๋™์‹œ์„ฑ ์ œ์–ด

  4. ์ง๋ ฌํ™” ๊ฐ€๋Šฅ์„ฑ ๊ฒ€์‚ฌ

Conflict Equivalent

๋‘ ๊ฐœ์˜ ์Šค์ผ€์ค„์ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด โ€œconflict equivalentํ•˜๋‹คโ€ ๋ผ๊ณ  ํ•œ๋‹ค.

circle-info

2๊ฐœ์˜ condition์„ ๋ชจ๋‘ ๋งŒ์กฑํ•˜๋ฉด conflict equivalent์ด๋‹ค.

  1. ๋‘ Schedule์€ ๊ฐ™์€ ํŠธ๋žœ์žญ์…˜์„ ๊ฐ€์ง„๋‹ค.

  2. ์–ด๋–ค conflicting operations์˜ ์ˆœ์„œ๋„ ์–‘์ชฝ schedule ๋ชจ๋‘ ๋™์ผํ•˜๋‹ค.

1๋ฒˆ ์กฐ๊ฑด์€ ๋ฌด์Šจ ์–˜๊ธฐ์ผ๊นŒ?

๊ฐ™์€ ํŠธ๋žœ์žญ์…˜์„ ๊ฐ€์ง„๋‹ค๋Š” ์˜๋ฏธ๋Š” ์Šค์ผ€์ค„์— ํฌํ•จ๋œ ํŠธ๋žœ์žญ์…˜๋“ค์ด ๋™์ผํ•œ ํŠธ๋žœ์žญ์…˜์ด๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

์ฆ‰, ํŠธ๋žœ์žญ์…˜ T1, T2.. ๊ฐ€ ์Šค์ผ€์ค„ S1, S2์— ๋ชจ๋‘ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

Ex)

T1 : R(1), W(1)

T2 : R(2), W(2)

S1 : T1(R(1), W(1)) โ†’ T2(R(2), W(2))

S2 : T2(R(2), W(2)) โ†’ T1(R(1), W(1))

์˜ˆ์‹œ๋กœ ๋‚˜ํƒ€๋ƒˆ์ง€๋งŒ ์‹ค์ œ๋กœ ํŠธ๋žœ์žญ์…˜์˜ ์‹คํ–‰ ์ˆœ์„œ๋Š” ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค.

S1 : R(1) โ†’ R(2) โ†’ W(2) โ†’ W(1)์™€ ๊ฐ™์ด.

๊ทธ๋Ÿผ 2๋ฒˆ ์กฐ๊ฑด์€?

์ถฉ๋Œ ๋“ฑ๊ฐ€์„ฑ์€ ๋‘ ์Šค์ผ€์ค„์ด ์ถฉ๋Œํ•˜๋Š” ์—ฐ์‚ฐ์˜ ์ˆœ์„œ๊ฐ€ ๋™์ผํ•œ ๊ฒฝ์šฐ๋ฅผ ์–˜๊ธฐํ•œ๋‹ค.

  • ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ๋™์ผํ•œ ํŠธ๋žœ์žญ์…˜ ์ˆœ์„œ๋Š” ํŠธ๋žœ์žญ์…˜์˜ ํ˜ธ์ถœ ์ˆœ์„œ๋ฅผ ์–˜๊ธฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋Š” ์ž‘์—…์˜ ์ˆœ์„œ๋ฅผ ์–˜๊ธฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ฆ‰, ๋‘ ์Šค์ผ€์ค„์ด ์„œ๋กœ ๋‹ค๋ฅธ ์ˆœ์„œ๋กœ ์‹คํ–‰๋˜๋”๋ผ๋„ ๊ฒฐ๊ณผ๋Š” ๋™์ผํ•˜๋‹ค.

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

์ง๋ ฌํ™” ์ด์ƒ ํ˜„์ƒ์€ non-serial schedule์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด์ƒ ํ˜„์ƒ์„ ์–˜๊ธฐํ•œ๋‹ค.

๐ŸŒŸ Conflict serializable

circle-info

์•„๋ž˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด Conflict serializable ํ•˜๋‹ค.

  1. ๋‹ค๋ฅธ Serial Schedule๊ณผ Confilct equivalent ์ผ ๋•Œ.

์ถฉ๋Œ ์ง๋ ฌ์€ ์ง๋ ฌ ์Šค์ผ€์ค„ + ์ถฉ๋Œ ๋“ฑ๊ฐ€์„ฑ์ด๋‹ค. ์ง๋ ฌ ์Šค์ผ€์ค„์€ ํŠธ๋žœ์žญ์…˜์„ ์ˆœ์ฐจ์ ์œผ๋กœ ํ•˜๋‚˜์”ฉ ์‹คํ–‰ํ•œ๋‹ค๊ณ  ํ–ˆ๋‹ค.

๋”ฐ๋ผ์„œ Conflict serializable์€ ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ์‹คํ–‰๋˜๋”๋ผ๋„ ํŠธ๋žœ์žญ์…˜์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์Šค์ผ€์ค„์„ ์–˜๊ธฐํ•œ๋‹ค.

Ex)

T1 : r1(k) โ†’ w1(k) โ†’ r1(h) โ†’ w1(h)

T2 : r2(h) โ†’ w2(h)

schedule1 : r1(k) โ†’ w1(k) โ†’ r2(h) โ†’ w2(h) โ†’ t2 commit โ†’ r1(h) โ†’ w1(h) โ†’ t1 commit

schedule2 : r2(h) โ†’ w2(h) โ†’ t2 commit โ†’ r1(k) โ†’ w1(k) โ†’ r1(h) โ†’ w1(h) โ†’ t1 commit

์‹คํ–‰ ํ๋ฆ„์„ ๋ณด๋ฉด ์Šค์ผ€์ค„ 2๋Š” ํŠธ๋žœ์žญ์…˜์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์ง๋ ฌ ์Šค์ผ€์ค„์ด๋‹ค.

์Šค์ผ€์ค„ 1์€ ๋”ฑ ๋ด๋„ ์ง๋ ฌ ์Šค์ผ€์ค„์ด ์•„๋‹ˆ๊ณ  non-serial schedule์ด๋‹ค. ํ•˜์ง€๋งŒ ์ถฉ๋Œ ์ง๋ ฌ ๊ฐ€๋Šฅ์„ฑ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๊ธฐ ๋•Œ๋ฌธ์—

Conflict serializable ํ•˜๋‹ค.

UnRecoverable Schedule

์•„๋ž˜ ๊ทธ๋ฆผ์€ ์–ด๋–ค ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ• ๊นŒ?

ํŠธ๋žœ์žญ์…˜ 2๋ฒˆ์ด ๋กค๋ฐฑ๋˜๋ฉด์„œ h๋ฅผ ๋‹ค์‹œ 200๋งŒ์›์œผ๋กœ ๋Œ๋ ค๋†”์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ k๋Š” 100๋งŒ์›์—์„œ 20๋งŒ์›์ด ์‚ฌ๋ผ์กŒ๋‹ค.

ํŠธ๋žœ์žญ์…˜ 2๋ฒˆ์˜ 5๋ฒˆ์˜ write(h) ์ž‘์—…์ด ๋กค๋ฐฑ์œผ๋กœ ์ดํ•ด ๋” ์ด์ƒ ์œ ํšจํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํŠธ๋žœ์žญ์…˜ 1๋ฒˆ์—์„œ์˜ 6, 7๋ฒˆ ์ž‘์—…๋„ ๋กค๋ฐฑ ๋˜์–ด์•ผ ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ํŠธ๋žœ์žญ์…˜ 1๋ฒˆ์€ ์ด๋ฏธ commit ๋œ ์ƒํƒœ์ด์ง€๋งŒ, ์˜์†์„ฑ(durability) ๋•Œ๋ฌธ์— ๋กค๋ฐฑ์„ ํ•  ์ˆ˜ ์—†๋‹ค.

  • durability : ํ•œ ๋ฒˆ commit๋œ ํŠธ๋žœ์žญ์…˜์€ rollback ๋  ์ˆ˜ ์—†๋‹ค.

์ด๋ ‡๊ฒŒ ์Šค์ผ€์ค„ ๋‚ด์—์„œ ๋กค๋ฐฑ๋œ ํŠธ๋žœ์žญ์…˜์ด ์ˆ˜ํ–‰ํ•œ write ์ž‘์—…์„ commit๋œ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ฝ์€ ์Šค์ผ€์ค„์„ unrecoverable schedule ์ด๋ผ๊ณ  ํ•œ๋‹ค.

๋กค๋ฐฑ์„ ํ•ด๋„ ์ด์ „ ์ƒํƒœ๋กœ ํšŒ๋ณต์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ์Šค์ผ€์ค„์€ DBMS๊ฐ€ ํ—ˆ์šฉํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.

ํŠธ๋žœ์žญ์…˜ ์Šค์ผ€์ค„์ด unrecoverable ์ƒํƒœ๊ฐ€ ๋˜๋ฉด, ์–ด๋–ค ํŠธ๋žœ์žญ์…˜์ด ์‹คํŒจํ•˜๊ฑฐ๋‚˜ ์ทจ์†Œ๋˜์—ˆ์„ ๋•Œ, DB๋ฅผ ์ผ๊ด€์„ฑ ์žˆ๋Š” ์ƒํƒœ๋กœ ๋ณต๊ตฌํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์ด๋‹ค. ํšŒ๋ณต์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” recoverableํ•œ ์Šค์ผ€์ค„์„ ํ—ˆ์šฉ ํ•ด์•ผํ•œ๋‹ค.

๐Ÿค” ๊ทธ๋Ÿผ ์–ด๋–ค ์Šค์ผ€์ค„์ด recoverable ํ• ๊นŒ?

Recoverable Schedule

ํšŒ๋ณต ๊ฐ€๋Šฅํ•œ ์Šค์ผ€์ค„์ด ๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํŠธ๋žœ์žญ์…˜์˜ commit ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค.

๊ทธ๋ฆผ์„ ๋ณด๋ฉด ํŠธ๋žœ์žญ์…˜ 1๋ฒˆ์ด ํŠธ๋žœ์žญ์…˜ 2๋ฒˆ ์•ˆ์—์„œ operation์„ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ ์˜์กดํ•˜๊ณ  ์žˆ๋‹ค.

  1. 2๋ฒˆ ํŠธ๋žœ์žญ์…˜์ด ๋จผ์ € commit

  2. ๋งŒ์•ฝ 2๋ฒˆ ํŠธ๋žœ์žญ์…˜์ด rollback ํ•œ๋‹ค๋ฉด, ๋จผ์ € ๋กค๋ฐฑํ•˜๊ณ  ํŠธ๋žœ์žญ์…˜ 1๋ฒˆ๋„ ๊ฐ™์ด abort ํ•˜์—ฌ ๋กค๋ฐฑ ์‹œํ‚จ๋‹ค.

์ฆ‰, ํ•œ ํŠธ๋žœ์žญ์…˜์ด ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์˜ ๊ฒฐ๊ณผ๋ฅผ read ํ•  ๋•Œ, read ํ–ˆ๋˜ ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹๋œ ๊ฒฝ์šฐ์—๋งŒ ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹๋  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

Cascading Rollback (Cascadeless Schedule)

recoverable์˜ ๋‘ ๋ฒˆ์งธ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด rollback ํ•˜๋ฉด, ์ด๋ฅผ ์˜์กดํ•˜๋Š” ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜๋„ rollback ํ•ด์•ผํ•œ๋‹ค. ์ด๋Š” ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์˜ rollbakc์ด โ€œ์—ฐ์‡„์ โ€์œผ๋กœ ๋ฐœ์ƒํ•˜๋ฉด์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋น„์šฉ์ด ๋งŽ์ด ๋“ ๋‹ค.

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด write ์ž‘์—…์„ ํ•œ ํŠธ๋žœ์žญ์…˜์ด commit or rollback์„ ํ•œ ๋’ค์— read๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์Šค์ผ€์ค„๋งŒ ํ—ˆ์šฉํ•˜์ž ๋ผ๋Š” ๋ฐฉ๋ฒ•์ด ๋‚˜์˜จ๋‹ค. ์ฆ‰, ํ•œ ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹๋˜๊ธฐ ์ „๊นŒ์ง€ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ๊ทธ ํŠธ๋žœ์žญ์…˜์ด ์ˆ˜์ •ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์—†๋„๋ก ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์„ค๊ณ„ํ•œ ์Šค์ผ€์ค„์„ cascadeless schedule ์ด๋ผ๊ณ  ํ•œ๋‹ค.

Strict Schedule

๊ทธ๋ ‡๋‹ค๋ฉด ์œ„์—์„œ ์†Œ๊ฐœํ•œ cascadeless schedule์€ ๋ฌธ์ œ๊ฐ€ ์—†์„๊นŒ? ๐Ÿค”

Ex) 3๋งŒ์›์ธ ํ”ผ์ž๊ฐ€ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ K๋Š” 1๋งŒ์›์œผ๋กœ ์ˆ˜์ •ํ•˜๊ณ , H๋Š” 2๋งŒ์›์œผ๋กœ ์ˆ˜์ •ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

๊ทธ๋ฆผ์˜ ์Šค์ผ€์ค„์—์„œ ํ•œ ํŠธ๋žœ์žญ์…˜์—์„œ write๋ฅผ ํ•˜๊ณ  commit ํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ read ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— cascadeless schedule์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ํŠธ๋žœ์žญ์…˜ 1๋ฒˆ์ด rollback ๋˜๋ฉด์„œ ํŠธ๋žœ์žญ์…˜ 2๋ฒˆ์˜ commit์ด ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค. (๊ทธ๋Œ€๋กœ 3๋งŒ์›)

์ด๋ฅผ ๋ณด๊ฐ•ํ•œ ์Šค์ผ€์ค„์ด Strict Schedule์ด๋‹ค. ์œ„์— ์žˆ๋Š” ๊ทธ๋ฆผ์€ Strict Schedule์€ ์•„๋‹ˆ๋‹ค.

ํ•œ ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹๋˜๊ธฐ ์ „๊นŒ์ง€ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ๊ทธ ํŠธ๋žœ์žญ์…˜์ด ์ˆ˜์ •ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜๋„ +์“ธ์ˆ˜๋„ ์—†๋„๋ก ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. (๐Ÿ”ฅ read, write ์ „๋ถ€ ๋ถˆ๊ฐ€๋Šฅ)

๊ทธ๋Ÿผ Strict์œผ๋กœ ๋ณ€๊ฒฝํ•ด๋ณด์ž.

Strict Schedule์€ rollback ํ•  ๋•Œ recovery๊ฐ€ ์‰ฝ๋‹ค.

Summary

์„ฑ๋Šฅ์œผ๋กœ ์ธํ•ด ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜๋“ค์„ ๋™์‹œ์— ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค. (non-serial schedule)

ํ•˜์ง€๋งŒ ์ด๋กœ์ธํ•ด ์ด์ƒ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•ด์•ผํ•œ๋‹ค. ๋”ฐ๋ผ์„œ conflict serializable (์ถฉ๋Œ ์ง๋ ฌ ๊ฐ€๋Šฅ์„ฑ)ํ•œ non-serial schedule์„ ํ—ˆ์šฉํ•œ๋‹ค.

๊ทธ๋Ÿผ ์ด๋ฅผ RDB์—์„œ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ• ๊นŒ? ๐Ÿค”

  1. ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ์Šค์ผ€์ค„๋“ค์ด conflict serializable ํ•œ์ง€ ํ™•์ธํ•œ๋‹ค.

โ†’ ์ด ๋ฐฉ๋ฒ•์€ ์š”์ฒญ์ด ๋งŽ๋‹ค๋ฉด ๋น„์šฉ์ด ๋งŽ์ด ๋“ค ์ˆ˜ ์žˆ๋‹ค.

  1. ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์„ ๋™์‹œ์— ์‹คํ–‰ํ•ด๋„ ์Šค์ผ€์ค„์ด conflict serializable ํ•˜๊ฒŒ ๋ณด์žฅํ•˜๋Š” ํ”„๋กœํ† ์ฝœ ์‚ฌ์šฉ

โ†’ ์•„์˜ˆ conflict serializableํ•œ ์Šค์ผ€์ค„๋งŒ์ด ์‹คํ–‰๋˜๋„๋ก ๋ณด์žฅํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์„ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•.

์ด ๋ฐฉ๋ฒ•์ด ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.

๊ทธ ์–ด๋–ค ์Šค์ผ€์ค„๋„ serializable ํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด concurrency control์ด๋‹ค.

์ด๊ฒƒ์ด ํŠธ๋žœ์žญ์…˜์˜ Isolation์˜ ์†์„ฑ์ด ๋งŽ์ด ์—ฐ๊ด€๋˜์–ด ์žˆ๋‹ค. ๋„ˆ๋ฌด ์—„๊ฒฉํ•œ isolation์€ ์„ฑ๋Šฅ์„ ์ €ํ•˜์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฅผ ์™„ํ™”ํ•˜๋ ค๊ณ  ํ•œ ๊ฒƒ์ด isolation level์ด๋‹ค.

Last updated