Junhyunny / junhyunny.github.io

Junhyunny's Devlog๐Ÿ˜
MIT License
8 stars 2 forks source link

java/spring-boot/jpa/concurrency-problem-insert-same-rows/ #40

Closed utterances-bot closed 2 months ago

utterances-bot commented 2 months ago

Concurrency Problem - Insert same rows - Junhyunnyโ€™s Devlogs



https://junhyunny.github.io/java/spring-boot/jpa/concurrency-problem-insert-same-rows/

0chil commented 2 months ago

insert ๊ฒฝํ•ฉ ์ƒํ™ฉ์„ ์–ด๋–ป๊ฒŒ ์˜ˆ์™ธ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์„๊นŒ... ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ์ข‹์€ ์ธ์‚ฌ์ดํŠธ ์–ป๊ณ  ๊ฐ‘๋‹ˆ๋‹ค.

์ฒซ ์‹œ๋„๋Š” ์—”ํ‹ฐํ‹ฐ ์ž์ฒด์— unique constraint๋ฅผ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด์—ˆ๋Š”๋ฐ, ์˜ˆ์™ธ๋ฅผ ํŠน์ •ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ์„œ ๋ณ„๋กœ ์ข‹์ง€ ์•Š์€ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. duplicate ์ƒํ™ฉ์— ์˜ํ•œ ๊ฒƒ์ธ์ง€? ํ˜น์€ ๋‹ค๋ฅธ ์ œ์•ฝ์กฐ๊ฑด์— ์˜ํ•œ ๊ฒƒ์ธ์ง€? ๋ฅผ ๊ตฌ๋ถ„ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ๊ทธ๊ฒƒ์ด ์–ด๋ ต๋”๋ผ๊ตฌ์š”. ๊ทธ๋Ÿฐ๋ฐ ์ด๋Ÿฐ ๋ฐฉ๋ฒ•์ด ์žˆ์—ˆ๋„ค์š”!

๊ด€๋ จํ•ด ์งˆ๋ฌธ์ด ๋ช‡๊ฐ€์ง€ ์žˆ๋Š”๋ฐ ์‹œ๊ฐ„์ด ๋˜์‹ ๋‹ค๋ฉด ๋‹ต๋ณ€์ฃผ์‹œ๋ฉด ์ œ๊ฒŒ ํฐ ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค :)

  1. ๋ณ„๋„์˜ ์ „์šฉ ์—”ํ‹ฐํ‹ฐ(ํ…Œ์ด๋ธ”)์„ ์‚ฌ์šฉํ•˜๋ฉด ์˜ˆ์™ธ๋ฅผ ํŠน์ •ํ•˜๊ธฐ ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ๋””์ž์ธ์„ ํƒํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ๋งž์„๊นŒ์š”?
  2. ํ˜น ๋‹ค๋ฅธ ์˜๋„๊ฐ€ ์žˆ์œผ์…จ์„๊นŒ์š”?
  3. CollectEntity๋Š” ๋‹ค๋ฅธ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋„๋ก ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๊ฒ ์ฃ ?
  4. ์ด๋Ÿฐ ๋””์ž์ธ์€ ์ฑ…์—์„œ๋„ ๋‹ค๋ฃฐ ๋ฒ•ํ•œ ์ผ๋ฐ˜์ ์ธ ๋””์ž์ธ์ธ๊ฐ€์š”? ์•„๋‹ˆ๋ฉด ์ค€ํ˜„๋‹˜๋งŒ์˜ ๋…์ฐฝ์ ์ธ ๋””์ž์ธ์ธ๊ฐ€์š”?
Junhyunny commented 2 months ago

@0chil ์•ˆ๋…•ํ•˜์„ธ์š”, ๋„์›€์ด ๋˜์…จ๋‹ค๋‹ˆ ๊ธฐ์˜๋„ค์š”. ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€ ๋“œ๋ฆฌ๋ฉด

  1. ๊ทธ๋ ‡์ง„ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹น์‹œ ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ฑด์ด ๊ทธ๋Ÿฌํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋„๋ฉ”์ธ ์„ค๊ณ„๊ฐ€ ์ด๋Ÿฐ ๋ชจ์Šต์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ์ด ๋” ๋ณต์žกํ•˜๊ณ , ๊ทธ์— ๋”ฐ๋ผ ์˜ˆ์™ธ๋ฅผ ํŠน์ •ํ•˜๊ฑฐ๋‚˜ ๊ตฌ๋ถ„ํ•˜๊ณ  ์‹ถ์€ ๋‹ˆ์ฆˆ๊ฐ€ ์žˆ์—ˆ๋‹ค๋ฉด ์กฐ๊ธˆ ๋ชจ์Šต์ด ๋‹ฌ๋ž์„ ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฑด ๊ตฌ์ฒด์ ์ธ ๋น„์ฆˆ๋‹ˆ์Šค ์ƒํ™ฉ์— ๋งž๊ฒŒ ์ ์ ˆํ•œ ๋„๋ฉ”์ธ ์„ค๊ณ„๋ฅผ ๊ณ ๋ฏผํ•ด๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋„ค์š”.
  2. ์œ„์˜ 1๋ฒˆ ๋‹ต๋ณ€์œผ๋กœ ๋Œ€์‹ ํ•ฉ๋‹ˆ๋‹ค.
  3. ์œ„์˜ 1๋ฒˆ ๋‹ต๋ณ€์œผ๋กœ ๋Œ€์‹ ํ•ฉ๋‹ˆ๋‹ค.
  4. ๋””์ž์ธ ์ฑ…์—์„œ ๋‹ค๋ฃฐ ๋ฒ•ํ•œ ์ผ๋ฐ˜์ ์ธ ๋””์ž์ธ์€ ์•„๋‹ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์œ ๋‹ˆํฌ ํ‚ค ์ ์šฉ์ด๋‚˜ ์ค‘๋ณต ํ™•์ธ ์ •๋„๋กœ ๋…์ฐฝ์ ์ธ ๋””์ž์ธ์ด๋ผ๊ณ  ๋งํ•˜๊ธฐ ๋ถ€๋„๋Ÿฝ๊ตฐ์š”. ๊ณ ๋ฏผํ•˜๋‹ค๋ณด๋ฉด ๋ˆ„๊ตฌ๋‚˜ ์ด ์ •๋„ ๋‹ต๋ณ€๊นŒ์ง„ ๋„๋‹ฌํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.