๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€๊ณผ ๊ทธ์— ๋”ฐ๋ฅธ ์ด์ƒ ํ˜„์ƒ (์š”์•ฝํŽธ)

2025. 3. 4. 23:27ยทTIL

 

ํŠธ๋žœ์ ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ด๋ž€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ์—ฌ๋Ÿฌ ํŠธ๋žœ์ ์…˜ ๊ฐ„์˜ ๋…๋ฆฝ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ์ •๋„์ž…๋‹ˆ๋‹ค.

์ฆ‰, ์—ฌ๋Ÿฌ ํŠธ๋žœ์ ์…˜์ด ๋™์‹œ์— ์ˆ˜ํ–‰๋  ๋•Œ, ํŠน์ • ํŠธ๋žœ์ ์…˜์ด ๋‹ค๋ฅธ ํŠธ๋žœ์ ์…˜์—์„œ ๋ณ€๊ฒฝ ๋˜๋Š” ์กฐํšŒํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ—ˆ์šฉํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ด ๋†’์€ ์ˆœ์„œ๋Œ€๋กœ SERIALIZABLE, REPEATABLE READ, READ COMMITTED, READ UNCOMMITED๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ด ๋†’์„์ˆ˜๋ก ์„ฑ๋Šฅ์€ ์ €ํ•˜๋˜์ง€๋งŒ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์ด ๋ณด์žฅ๋˜๊ณ , ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ด ๋‚ฎ์„์ˆ˜๋ก ์„ฑ๋Šฅ์€ ์ข‹์•„์ง€์ง€๋งŒ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์ด ๋‚ฎ์•„์ง‘๋‹ˆ๋‹ค.

 

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

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

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

READ COMMITTED ๋Š” ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹๋œ ๋ณ€๊ฒฝ์‚ฌํ•ญ๋งŒ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Dirty Read๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‚˜๋จธ์ง€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ DBMS(Oracle, SQL Server, PostgreSQL)์˜ ๊ธฐ๋ณธ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค.

READ UNCOMMITTED ๋Š” ํŠธ๋žœ์žญ์…˜์ด commit๋˜์ง€ ์•Š์€ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋‚ฎ์€ ์ˆ˜์ค€์˜ ๊ฒฉ๋ฆฌ๋กœ ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚˜์ง€๋งŒ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์ด ๋ณด์žฅ๋˜์ง€ ์•Š์•„ ์‹ ๋ขฐ์„ฑ์ด ๋‚ฎ์Šต๋‹ˆ๋‹ค.

Dirty Read, Non-Repeatable Read, Phantom Read๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

[ ์ด์ƒ ํ˜„์ƒ ]

  1. Dirty Read : ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
    •  ํŠธ๋žœ์žญ์…˜ A๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  B๋Š” ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์Œ. ๋‚˜์ค‘์— ํŠธ๋žœ์žญ์…˜ A๊ฐ€ ๋กค๋ฐฑ๋˜๋ฉด ํŠธ๋žœ์žญ์…˜ B๋Š” ์œ ํšจํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  2. Non-repeatable Read: ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ๋‘ ๋ฒˆ ์‹คํ–‰ํ–ˆ์„ ๋•Œ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
    •  ํŠธ๋žœ์žญ์…˜ A๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ , ํŠธ๋žœ์žญ์…˜ B๊ฐ€ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์ปค๋ฐ‹ํ•œ ํ›„, ํŠธ๋žœ์žญ์…˜ A๊ฐ€ ๋‹ค์‹œ ์ฝ์œผ๋ฉด ๋‹ค๋ฅธ ๊ฐ’์„ ์–ป๊ฒŒ๋ฉ๋‹ˆ๋‹ค.
  3. Phantom Read: ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ๋‘ ๋ฒˆ ์‹คํ–‰ํ–ˆ์„ ๋•Œ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์ด ๋‹ฌ๋ผ์ง€๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
    •  ํŠธ๋žœ์žญ์…˜ A๊ฐ€ ํŠน์ • ์กฐ๊ฑด์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ณ , ํŠธ๋žœ์žญ์…˜ B๊ฐ€ ํ•ด๋‹น ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ƒˆ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…/์‚ญ์ œํ•œ ํ›„, ํŠธ๋žœ์žญ์…˜ A๊ฐ€ ๋‹ค์‹œ ๊ฐ™์€ ์กฐ๊ฑด์œผ๋กœ ์กฐํšŒํ•˜๋ฉด ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์ด ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

 

 

728x90
๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

git rm --cached ์ปค๋ฐ‹์— ํฌํ•จ๋œ ํŒŒ์ผ ์ œ๊ฑฐํ•˜๊ธฐ  (0) 2025.03.14
๋ฉ€ํ‹ฐ ๋ชจ๋“ˆ ํ”„๋กœ์ ํŠธ (multi module) ๊ฐœ๋…  (0) 2025.03.10
SpringBoot์—์„œ FeignClient ๊ฐ„๋‹จํ•˜๊ฒŒ ์ ์šฉํ•˜๊ธฐ  (0) 2025.03.01
FeignClient vs RestClient  (0) 2025.02.28
PageableArgumentResolver๋ฅผ ํ™œ์šฉํ•œ @Pageable ํŽ˜์ด์ง€ ์‚ฌ์ด์ฆˆ ์ œํ•œ  (0) 2025.02.24
'TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • git rm --cached ์ปค๋ฐ‹์— ํฌํ•จ๋œ ํŒŒ์ผ ์ œ๊ฑฐํ•˜๊ธฐ
  • ๋ฉ€ํ‹ฐ ๋ชจ๋“ˆ ํ”„๋กœ์ ํŠธ (multi module) ๊ฐœ๋…
  • SpringBoot์—์„œ FeignClient ๊ฐ„๋‹จํ•˜๊ฒŒ ์ ์šฉํ•˜๊ธฐ
  • FeignClient vs RestClient
bamDal
bamDal
๊ด€์‹ฌ์žˆ๋Š” ๋ถ„์•ผ ๊ณต๋ถ€ํ•˜๋Š” ๋ธ”๋กœ๊ทธ.....๐ŸŒ™๐ŸŒฐ
  • bamDal
    ๐ŸŒ™๐ŸŒฐ๋‹ฌ๋ฐค์— ์ฝ”๋”ฉ
    bamDal
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
      • TIL
      • Back-End
        • JAVA
        • SPRING
        • ํŒŒ์ด์ฌ
        • Linux
      • DataBase
        • MariaDB
      • CS
        • ์ž๋ฃŒ๊ตฌ์กฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜
      • Infra
      • Tool
        • Git
        • IntelliJ
      • Etc
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ•™์Šต
      • Front-End
        • jQuery
        • AJAX
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ์นดํ…Œ๊ณ ๋ฆฌ
    • ํƒœ๊ทธ
  • ๋งํฌ

    • Github
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • ๋ฐ˜์‘ํ˜•
    250x250
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
bamDal
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€๊ณผ ๊ทธ์— ๋”ฐ๋ฅธ ์ด์ƒ ํ˜„์ƒ (์š”์•ฝํŽธ)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”