๐Ÿ“ƒ ํŠธ๋žœ์žญ์…˜(Transaction)๊ณผ ๋™์‹œ์„ฑ ์ œ์–ด ๊ทธ๋ฆฌ๊ณ  ํšŒ๋ณต

JeongMinยท2023๋…„ 8์›” 25์ผ
0
post-thumbnail

Commit, Rollback, Auto Commit

Commit

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

Rollback

  • Rollback ์—ฐ์‚ฐ์€ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๊ฐ€ ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์ด ๊นจ์กŒ์„ ๋•Œ, ํŠธ๋žœ์žญ์…˜์ด ํ–‰ํ•œ ๋ชจ๋“  ๋ณ€๊ฒฝ์ž‘์—…์„ ์ทจ์†Œํ•˜๊ณ  ์ด์ „ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆฌ๋Š” ์—ฐ์‚ฐ์ด๋‹ค.
  • Rollback ์—ฐ์‚ฐ ์‹œ ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜์€ ๋ฐ›์•˜๋˜ ์ž์›๊ณผ ์ž ๊ธˆ์„ ๋ชจ๋‘ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์žฌ์‹œ์ž‘๋˜๊ฑฐ๋‚˜ ํ๊ธฐ๋œ๋‹ค.

Auto Commit

  • AutoCommit์ด๋ž€ ์‚ฌ์šฉ์ž๊ฐ€ Commit ๋ช…๋ น์„ ๋”ฐ๋กœ ํ•˜์ง€ ์•Š์•„๋„ ์ž๋™์œผ๋กœ ๋ชจ๋“  ๋ช…๋ น์„ Commit๋˜์–ด ์ฆ‰์‹œ ๋ฐ˜์˜๋˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.
  • ์ฃผ์˜ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” AutoCommit์„ ํ™œ์„ฑํ™” ํ•ด ๋†“์€ ํ›„์— DB๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๊ฒฝ์šฐ, ์‹ค์ˆ˜๋ฅผ ํ•˜๋”๋ผ๋„ ๊ณง๋ฐ”๋กœ ์ฆ‰์‹œ ๋ฐ˜์˜์ด ๋œ๋‹ค.
  • Commit์ด ๋œ ํŠธ๋žœ์žญ์…˜์€ RollBack์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

ํŠธ๋žœ์žญ์…˜(Transaction)

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚ค๋Š” ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…์˜ ๋‹จ์œ„์ด๋‹ค.
  • ์ƒํƒœ๋ฅผ ๋ณ€ํ™”ํ•œ๋‹ค๋Š” ๊ฒƒ์€ SQL ์งˆ์˜์–ด๋ฅผ ํ†ตํ•ด DB์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • ์ž‘์—… ๋‹จ์œ„๋Š” ์‚ฌ๋žŒ์ด ์ •ํ•˜๋Š” ๊ธฐ์ค€์— ๋”ฐ๋ผ ํ•œ๊บผ๋ฒˆ์— ๋ชจ๋‘ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ์—ฐ์‚ฐ์„ ๋œปํ•œ๋‹ค.

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

  • ํŠธ๋žœ์žญ์…˜ ๋‚ด์˜ ๋ชจ๋“  ๋ช…๋ น์€ ๋ฐ˜๋“œ์‹œ ์™„๋ฒฝํ•˜๊ฒŒ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋ฉฐ ์–ด๋Š ํ•˜๋‚˜๋ผ๋„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํŠธ๋žœ์žญ์…˜ ์ „๋ถ€๊ฐ€ ์ทจ์†Œ๋˜์–ด์•ผ ํ•œ๋‹ค.
  • ํŠธ๋žœ์žญ์…˜์˜ ์—ฐ์‚ฐ์€ ๋ชจ๋‘ ๋ฐ˜์˜๋˜๊ธฐ ์œ„ํ•ด Commit์„ ์‚ฌ์šฉํ•˜๊ณ  ์ „๋ถ€ ๋ฐ˜์˜ํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด์„œ Rollback์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

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

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

๋…๋ฆฝ์„ฑ(Isolation)

  • ์ˆ˜ํ–‰ ์ค‘์ธ ํŠธ๋žœ์žญ์…˜์€ ์™„์ „ํžˆ ์™„๋ฃŒ๋  ๋•Œ ๊นŒ์ง€ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ์˜ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์—†๋‹ค.

์˜์†์„ฑ(Durability)

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

ํŠธ๋žœ์žญ์…˜ ๊ณ ๋ฆฝ ์ˆ˜์ค€

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

์ด์ƒ ํ˜„์ƒ ์ข…๋ฅ˜

  • Dirty Read : ์–ด๋–ค ํŠธ๋žœ์žญ์…˜์—์„œ ์•„์ง ์‹คํ–‰์ด ๋๋‚˜์ง€ ์•Š์€ ํŠธ๋žœ์žญ์…˜์— ์˜ํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ณด๊ฒŒ๋˜๋Š” ๊ฒฝ์šฐ
  • Non Repeatable Read : ์–ด๋–ค ํŠธ๋žœ์žญ์…˜์ด ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ 2๋ฒˆ ์‹คํ–‰ํ•˜๋Š”๋ฐ ๊ทธ ์‚ฌ์ด์— ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ˆ˜์ •, ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ
  • Phantom Read : ์–ด๋–ค ํŠธ๋žœ์žญ์…˜์ด ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ 2๋ฒˆ ์‹คํ–‰ํ•˜๋Š”๋ฐ ๊ทธ ์‚ฌ์ด์— ์—†๋˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ถ”๊ฐ€๋œ ๊ฒฝ์šฐ

READ UNCOMMITTIED

  • ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰ ์ค‘์ด๊ฑฐ๋‚˜ ์•„์ง commit ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ Read ํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•œ๋‹ค.
  • ์ •ํ•ฉ์„ฑ์— ๋ฌธ์ œ๊ฐ€ ๋งŽ์€ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  • ์ด์ƒ ํ˜„์ƒ ์ค‘ Dirty Read, Non Repeatable Read, Phantom Read ๋ฐœ์ƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

READ COMMITTED

  • ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰์ด ์™„๋ฃŒ๋˜๊ณ  commit ๋œ ๋ฐ์ดํ„ฐ๋งŒ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ Read ํ•˜๋„๋ก ํ—ˆ์šฉํ•œ๋‹ค.
  • ํ•œ ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์ฝ์–ด๋„ ํŠธ๋žœ์žญ์…˜์ด ์ข…๋ฃŒ๋˜๋Š” ๋™์•ˆ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ DBMS์—์„œ Default๋กœ ์„ค์ •ํ•˜๋Š” ๋ ˆ๋ฒจ์ด๋‹ค.
  • ์ด์ƒ ํ˜„์ƒ ์ค‘ Non Repeatable Read, Phantom Read์ด ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•˜๋‹ค.

REPEATABLE READ

  • ๊ฐ™์€ ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ์ฝ๋”๋ผ๋„ ๋ฐ์ดํ„ฐ๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ํŠน์ • ํŠธ๋žœ์žญ์…˜์—์„œ ์ฝ๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ์ˆ˜์ •, ์‚ญ์ œ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์‚ฝ์ž…์€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ด์ƒ ํ˜„์ƒ ์ค‘ Phantom Read ๋ฐœ์ƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

SERIALIZABLE

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

DB ๊ฐฑ์‹  ์†์‹ค ๋ฌธ์ œ

  • ๊ฐฑ์‹  ์†์‹ค(lost update)๋Š” ๋™์‹œ์„ฑ ๋ฌธ์ œ์˜ ์›์ธ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ๋‘ ๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜์ด ํ•œ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ๊ฐฑ์‹ (update)ํ•  ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค. ๋™์‹œ์„ฑ์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด Lock์„ ํ™œ์šฉํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ๋™์‹œ์„ฑ ์ œ์–ด๋Š” ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ์‹คํ–‰๋  ๋•Œ, ์ผ๊ด€์„ฑ์„ ํ•ด์น˜์ง€ ์•Š๋„๋ก ํŠธ๋žœ์žญ์…˜์˜ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์„ ์ œ์–ดํ•˜๋Š” DBMS์˜ ๊ธฐ๋Šฅ์ด๋‹ค.

DB Lock

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๋“ค์ด ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ์ ‘๊ทผํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ๋ฌด๊ฒฐ์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ์ง€ํ‚ค๊ณ  ๋™์‹œ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด Lock์„ ์‚ฌ์šฉํ•œ๋‹ค.

๋‚™๊ด€์  ์ž ๊ธˆ(Optimisstic Lock)

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

๋น„๊ด€์  ์ž ๊ธˆ(Pessimistic Lock)

  • ๋น„๊ด€์  ๋ฝ์€ ์ž์› ๊ฒฝ์Ÿ์„ ๋น„๊ด€์ ์œผ๋กœ ๋ฐ”๋ผ๋ณด๊ธฐ ๋•Œ๋ฌธ์—, ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ์ˆ˜์ •ํ•  ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.
  • ๊ทธ๋ž˜์„œ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ์‹œ์ ์—์„œ Lock์„ ๊ฑธ๊ณ  ์กฐํšŒ ๋˜๋Š” ์—…๋ฐ์ดํŠธ ์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์œ ์ง€ํ•œ๋‹ค.

Inno DB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ Lock ์ข…๋ฅ˜

๊ณต์œ  ๋ฝ(Shared Lock)

  • ๊ณต์œ  ๋ฝ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ์ฝ๊ธฐ ๋ช…๋ น์— ๋Œ€ํ•ด ์ฃผ์–ด์ง€๋Š” ๋ฝ์œผ๋กœ Read Lock์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋ฉฐ, S๋กœ ํ‘œ๊ธฐํ•œ๋‹ค.
  • ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด๋„ ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์—๋Š” ์•„๋ฌด๋Ÿฐ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ๊ณต์œ  ๋ฝ๋ผ๋ฆฌ๋Š” ๋™์‹œ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๊ณต์œ  ๋ฝ์ด ๊ฑธ๋ ค์žˆ๋Š” row์— ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด S Lock(๊ณต์œ  ๋ฝ)์„ ๊ฑธ ์ˆ˜ ์žˆ์ง€๋งŒ X Lock(๋ฒ ํƒ€ ๋ฝ)์€ ๊ฑธ ์ˆ˜ ์—†๋‹ค.

๋ฒ ํƒ€ ๋ฝ(Exclusive Lock)

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

๋ ˆ์ฝ”๋“œ ๋ฝ(Record Lock)

  • InnoDB์—์„œ Record Lock์€ ์‹ค์ œ ํ…Œ์ด๋ธ”์˜ Record๊ฐ€ ์•„๋‹Œ DB Index Record์— ๊ฑธ๋ฆฌ๋Š” Lock์ด๋‹ค.
  • ํ…Œ์ด๋ธ”์— Index๊ฐ€ ์—†๋‹ค๋ฉด ์ˆจ๊ฒจ์ ธ ์žˆ๋Š” Clusterd Index๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ record๋ฅผ ์ž ๊ทผ๋‹ค.

๊ฐญ ๋ฝ(Gap Lock)

  • Index Record๊ฐ€ ์—†๋Š” ๋ถ€๋ถ„์— ๊ฑธ๋ฆฌ๋Š” Lock์ด๋‹ค. Index Record์™€ ์ธ์ ‘ํ•œ ์•ž, ๋’ค ์‚ฌ์ด ๊ณต๊ฐ„์— Lock์„ ๊ฑฐ๋Š” ๊ฒƒ์ธ๋ฐ, ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ณ  ๋„ฅ์ŠคํŠธ ํ‚ค ๋ฝ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.
  • ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” ์ƒˆ๋กœ์šด Row๊ฐ€ ์ถ”๊ฐ€๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค.

๋„ฅ์ŠคํŠธ ํ‚ค ๋ฝ(Next key lock)

  • ๋ ˆ์ฝ”๋“œ ๋ฝ๊ณผ ๊ฐญ ๋ฝ์„ ํ•ฉ์ณ๋†“์€ ๊ฒƒ์ด๋‹ค. Index Record๋„ ์ž ๊ทธ๊ณ  ๊ทธ Index Record ์•ž, ๋’ค ๊ฐญ๋„ ์ž ๊ทผ๋‹ค.

DB ๋ฐ๋“œ๋ฝ

  • ๋ฐ๋“œ๋ฝ์€ ๋‘ ๊ฐœ ์ด์ƒ์˜ ํŠธ๋žœ์žญ์…˜์ด ๊ฐ๊ฐ ์ž์‹ ์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ ๋ฝ์„ ํš๋“ํ•˜๊ณ  ์ƒ๋Œ€๋ฐฉ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ ๋ฝ์„ ์š”์ฒญํ•˜๋ฉด ๋ฌดํ•œ ๋Œ€๊ธฐ ์ƒํƒœ์— ๋น ์งˆ ์ˆ˜ ์žˆ๋Š” ํ˜„์ƒ์ด๋‹ค. ์šด์˜์ฒด์ œ์˜ ๋ฐ๋“œ๋ฝ๊ณผ ์œ ์‚ฌํ•˜๋‹ค.
  • ํ•ด๊ฒฐ ๋ฐฉ์•ˆ์œผ๋กœ๋Š” ํŠธ๋žœ์žญ์…˜ ์ง„ํ–‰๋ฐฉํ–ฅ์€ ๊ฐ™์€ ๋ฐฉํ–ฅ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ์ตœ์†Œํ™” ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  LOCK TIMEOUT์„ ์ด์šฉํ•˜์—ฌ ์ž ๊ธˆํ•ด์ œ ์‹œ๊ฐ„์„ ์กฐ์ ˆํ•œ๋‹ค.

DB ํšŒ๋ณต

  • ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ผ๊ด€์„ฑ์žˆ๋Š” ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆฌ๋Š” DBMS์˜ ๊ธฐ๋Šฅ์ด๋‹ค. ์žฅ์• ์˜ ์œ ํ˜•์œผ๋กœ๋Š” ํŠธ๋žœ์žญ์…˜ ์žฅ์• , ์‹œ์Šคํ…œ ์žฅ์• , ๋ฏธ๋””์–ด ์žฅ์•  ๋“ฑ์ด ์žˆ๋‹ค.
  • ํšŒ๋ณต ๊ธฐ๋ฒ•์€ ๋กœ๊ทธ ํŒŒ์ผ์„ ์ด์šฉํ•œ ํšŒ๋ณต, ์ฒดํฌํฌ์ธํŠธ๋ฅผ ์ด์šฉํ•œ ํšŒ๋ณต์ด ์žˆ๋‹ค.

๋กœ๊ทธ ํŒŒ์ผ

  • ๋กœ๊ทธ ํŒŒ์ผ์€ ํŠธ๋žœ์žญ์…˜์ด ๋ฐ˜์˜ํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ธฐ๋กํ•˜๊ธฐ ์ „์— ๋ฏธ๋ฆฌ ๊ธฐ๋กํ•ด๋‘๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋‹ค. ์•ˆ์ „ํ•œ ํ•˜๋“œ๋””์Šคํฌ์— ์ €์žฅ๋˜๋ฉฐ ์ „์›๊ณผ ๊ด€๊ณ„์—†์ด ๊ธฐ๋ก์ด ์กด์žฌํ•œ๋‹ค.

๋กœ๊ทธ ํŒŒ์ผ์„ ์ด์šฉํ•œ ํšŒ๋ณต

  • ๋กœ๊ทธ ํŒŒ์ผ์„ ์ด์šฉํ•œ ํšŒ๋ณต์€ ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ ๊ธฐ๋ก์„ ์ €์žฅํ•ด ๋‘” ๋กœ๊ทธ ํŒŒ์ผ์„ ์ด์šฉํ•ด ์‹œ์Šคํ…œ ์žฅ์• ๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋กœ๊ทธ ํŒŒ์ผ์˜ ํšŒ๋ณต ๋ฐฉ๋ฒ•์œผ๋กœ ์ฆ‰์‹œ ๊ฐฑ์‹ (Immediate Update)๊ณผ ์ง€์—ฐ ๊ฐฑ์‹ (Deferred Update)์ด ์žˆ๋‹ค.
  • ์ฆ‰์‹œ ๊ฐฑ์‹ ์€ ๊ฐฑ์‹ ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๊ทธ์— ๊ธฐ๋กํ•˜๋Š” ์ž‘์—…๊ณผ ๋ฒ„ํผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์˜ฎ๊ธฐ๋Š” ์ž‘์—…์ด ๋™์‹œ์— ์ง„ํ–‰๋  ์ˆ˜ ์žˆ๋‹ค.
  • ์ง€์—ฐ ๊ฐฑ์‹ ์€ ๊ฐฑ์‹ ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๊ทธ์— ๊ธฐ๋กํ•˜๋Š” ์ž‘์—…์ด ๋๋‚œ ํ›„์— ๋ฒ„ํผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์˜ฎ๊ธฐ๋Š” ๊ณผ์ •์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

REDO, UNDO

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

์ฒดํฌํฌ์ธํŠธ ํšŒ๋ณต ๊ธฐ๋ฒ•

  • DBMS์—์„œ ํšŒ๋ณต์„ ํ•  ๋•Œ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ๋กœ๊ทธ ๊ธฐ๋ก๊นŒ์ง€ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š”๋ฐ, ํŠน์ • ์‹œ๊ฐ„ ๋งˆ๋‹ค ๊ฒ€์‚ฌ๋ฅผ ํ•˜์—ฌ ๋ฌธ์ œ๊ฐ€ ์—†์Œ์„ ํ™•์ธํ•˜๋ฉด ๋‹ค์Œ๋ฒˆ ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ ํšŒ๋ณต์„ ์‹œ์ž‘ํ•˜๋Š” ์‹œ์ ์„ ์•ž๋‹น๊ธธ ์ˆ˜ ์žˆ๋‹ค.

  • ์ฃผ ๊ธฐ์–ต์žฅ์น˜(RAM)์— ๋กœ๊ทธ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ ํ•˜๋“œ๋””์Šคํฌ์˜ ๋กœ๊ทธ ํŒŒ์ผ์— ์ €์žฅํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰ ์ค‘์— ๋ณ€๊ฒฝ๋œ ๋ฒ„ํผ ๋‚ด์˜ ๋‚ด์šฉ์„ ํ•˜๋“œ๋””์Šคํฌ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•œ๋‹ค.

  • ์ฒดํฌํฌ์ธํŠธ ์ด์ „์— COMMIT ๊ธฐ๋ก์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์•„๋ฌด ์ž‘์—…์ด ํ•„์š” ์—†๋‹ค. ๋กœ๊ทธ์— ์ฒดํฌํฌ์ธํŠธ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ์‹œ์ ์€ ์ด๋ฏธ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ชจ๋‘ ๊ธฐ๋ก๋œ ํ›„ ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

  • ์ฒดํฌํฌ์ธํŠธ ์ดํ›„์— COMMIT ๊ธฐ๋ก์ด ์žˆ๋Š” ๊ฒฝ์šฐ REDO๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค. ์ฒดํฌํฌ์ธํŠธ ์ดํ›„์— ๋ณ€๊ฒฝ ๋‚ด์šฉ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ˜์˜๋˜์ง€ ์•Š์•„์„œ REDO๋ฅผ ์ง„ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

  • ์ฒดํฌํฌ์ธํŠธ ์ดํ›„์— COMMIT ๊ธฐ๋ก์ด ์—†๋Š” ๊ฒฝ์šฐ ์ฆ‰์‹œ ๊ฐฑ์‹  ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด UNDO๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋ฒ„ํผ์˜ ๋‚ด์šฉ์ด ๋ฐ˜์˜๋์„ ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์›์ƒ๋ณต๊ตฌ ์‹œ์ผœ์•ผ ํ•œ๋‹ค. ๋ฐ˜๋ฉด ์ง€์—ฐ ๊ฐฑ์‹  ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด ์•„๋ฌด๊ฒƒ๋„ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ง€์—ฐ ๊ฐฑ์‹  ๋ฐฉ๋ฒ•์€ COMMIT ์ด์ „์—๋Š” ๋ฒ„ํผ์˜ ๋‚ด์šฉ์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ˜์˜ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€