๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŒพBackEnd/โœ…DataBase

MySQL - ๊ฒฉ๋ฆฌ ์ˆ˜์ค€

by MuGeon Kim 2023. 2. 28.
๋ฐ˜์‘ํ˜•

MYSQL ๊ฒฉ๋ฆฌ ์ˆ˜์ค€


๊ฒฉ๋ฆฌ ์ˆ˜์ค€

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

1. Read Uncommitted

 

 

  • Read Uncommitted ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์€ ๊ฐ ํŠธ๋žœ์žญ์…˜์—์„œ ๋ณ€๊ฒฝ ๋‚ด์šฉ์ด commit , Rollback ์—ฌ๋ถ€์— ์ƒ๊ด€์—†์ด ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์— ๋ณด์ธ๋‹ค. (Dirty Read)

→ ์‚ฌ์šฉ์ž A๊ฐ€ insert๋ฅผ ํ•˜๊ณ  ์‚ฌ์šฉ์ž B๊ฐ€ commit ์ด ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ select๋กœ ์ ‘๊ทผ์„ ํ•œ๋‹ค.

→ ๋งŒ์•ฝ์— Insert ํ•˜๋Š” ๊ฒฝ์šฐ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๋กค๋ฐฑ์„ ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์‚ฌ์šฉ์žB๋Š”

์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผ์„ ํ•˜๊ณ  ์žˆ์„๊นŒ? — ๋กค๋ฐฑ์ด ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผ

→ ์ด์ฒ˜๋Ÿผ Read Uncommitted๋Š” ์ •ํ•ฉ์„ฑ์— ๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.

 

2. Read Committed

  • ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒฉ๋ฆฌ ๋ ˆ๋ฒจ → ์˜ค๋ผํด์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ
  • ์–ธ๋‘๋กœ๊ทธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ๋”ํ‹ฐ ๋ฆฌ๋“œ ๋ฌธ์ œ์  ํ•ด๊ฒฐ
  • ํ•˜์ง€๋งŒ ๋ฌธ์ œ์ ์ด ์žˆ๋‹ค. (์ •ํ•ฉ์„ฑ์— ๋ฌธ์ œ)
  • Bob์ด ์ฒ˜์Œ์— select๋ฅผ ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜จ๋‹ค. Alice๊ฐ€ update ์ดํ›„์— commit์„ ํ•˜๋ฉด Bob์€ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜จ๋‹ค.
  • ๋ฌธ์ œ๊ฐ€ ์—†๋Š”๊ฑฐ ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ Bob์˜ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ๋˜‘๊ฐ™์€ select ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰์ด ๋˜๋ฉด ํ•ญ์ƒ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋ณด์—ฌ์•ผ ๋œ๋‹ค.
  • ์ด๋•Œ ์ •ํ•ฉ์„ฑ์— ์–ด๊ธ‹๋‚˜๊ฒŒ ๋œ๋‹ค.

 

3. Repeatable Read (InnoDB)

  • ํŠธ๋žœ์žญ์…˜ ์•„์ด๋””๋ฅผ ํ†ตํ•˜์—ฌ ์ •ํ•ฉ์„ฑ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.

  • ๊ธฐ์กด์˜ ๋ฌธ์ œ์ ์€ ํ•œ ํŠธ๋žœ์žญ์…˜์— ๋˜‘๊ฐ™์€ SELECT์ฟผ๋ฆฌ๋ฅผ ํ•˜์˜€์„ ๋•Œ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ ๊ฐ’์„ ์ฃผ์–ด ์ •ํ•ฉ์„ฑ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋‹ค.
  • ์ด๊ฒƒ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํŠธ๋žœ์žญ์…˜ ์•„์ด๋””๋ฅผ ์ฃผ์–ด ์ •ํ•ฉ์„ฑ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค.
  • ํ•œ ํŠธ๋žœ์žญ์…˜์— SELECT๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด ํŠธ๋žœ์žญ์…˜ ์•„์ด๋””์™€ ๋˜‘๊ฐ™์€ ์–ธ๋‘๋กœ๊ทธ์˜

๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ํ•ญ์ƒ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

๋ฐ˜์‘ํ˜•

'๐ŸŒพBackEnd > โœ…DataBase' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

MySQL - ์ธ๋ฑ์Šค  (0) 2023.02.28
MYSQL - LOCK  (0) 2023.02.28
MySQL ์—”์ง„ ์•„ํ‚คํ…์ฒ˜  (0) 2023.02.10