[์Šคํ”„๋ง DB 1ํŽธ] - 6. DB ๋ฝ

2023. 3. 19. 22:42ยทSpring/Spring DB

 

DB ๋ฝ - ๊ฐœ๋… ์ดํ•ด

 

์„ธ์…˜1์ด ํŠธ๋žœ์žญ์…˜์„ ์‹œ์ž‘ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋™์•ˆ ์•„์ง ์ปค๋ฐ‹์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์•˜๋Š”๋ฐ,

 

์„ธ์…˜2์—์„œ ๋™์‹œ์— ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๊ฒŒ ๋˜๋ฉด ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

๋ฐ”๋กœ ํŠธ๋žœ์žญ์…˜์˜ ์›์ž์„ฑ์ด ๊นจ์ง€๋Š” ๊ฒƒ์ด๋‹ค.

 

์—ฌ๊ธฐ์— ๋”ํ•ด์„œ ์„ธ์…˜1์ด ์ค‘๊ฐ„์— ๋กค๋ฐฑ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์„ธ์…˜2๋Š” ์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

 

์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด, ์„ธ์…˜์ด ํŠธ๋žœ์žญ์…˜์„ ์‹œ์ž‘ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋™์•ˆ์—๋Š”

 

์ปค๋ฐ‹์ด๋‚˜ ๋กค๋ฐฑ ์ „๊นŒ์ง€ ๋‹ค๋ฅธ ์„ธ์…˜์—์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๊ฒŒ ๋ง‰์•„์•ผ ํ•œ๋‹ค.

 

 

DB ๋ฝ - ๋ณ€๊ฒฝ

 

 

๋‹ค์Œ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ๋™์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ๋ฝ์œผ๋กœ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•˜๋Š”์ง€ ์ž์„ธํžˆ ์•Œ์•„๋ณด์ž.

 

 

 

1. ์„ธ์…˜1์€ ํŠธ๋žœ์žญ์…˜์„ ์‹œ์ž‘ํ•œ๋‹ค.


2.
์„ธ์…˜1์€ memberA ์˜ money ๋ฅผ 500์œผ๋กœ ๋ณ€๊ฒฝ์„ ์‹œ๋„ํ•œ๋‹ค.

 

์ด๋•Œ ํ•ด๋‹น ๋กœ์šฐ์˜ ๋ฝ์„ ๋จผ์ € ํš๋“ํ•ด์•ผ ํ•œ๋‹ค. ๋ฝ์ด ๋‚จ์•„ ์žˆ์œผ๋ฏ€๋กœ ์„ธ์…˜1์€ ๋ฝ์„ ํš๋“ํ•œ๋‹ค. (์„ธ์…˜1์ด ์„ธ์…˜2๋ณด๋‹ค ์กฐ๊ธˆ ๋” ๋นจ๋ฆฌ ์š”์ฒญํ–ˆ๋‹ค.)


3.
์„ธ์…˜1์€ ๋ฝ์„ ํš๋“ํ–ˆ์œผ๋ฏ€๋กœ ํ•ด๋‹น ๋กœ์šฐ์— update sql์„ ์ˆ˜ํ–‰ํ•œ๋‹ค

 

 

๋ฝ์„ ํš๋“ํ•ด์•ผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

4. ์„ธ์…˜2๋Š” ํŠธ๋žœ์žญ์…˜์„ ์‹œ์ž‘ํ•œ๋‹ค.


5.
์„ธ์…˜2๋„ memberA ์˜ money ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ๋‹ค.

 

์ด๋•Œ ํ•ด๋‹น ๋กœ์šฐ์˜ ๋ฝ์„ ๋จผ์ € ํš๋“ํ•ด์•ผ ํ•œ๋‹ค. ๋ฝ์ด ์—†์œผ๋ฏ€๋กœ ๋ฝ์ด ๋Œ์•„์˜ฌ ๋•Œ ๊นŒ์ง€ ๋Œ€๊ธฐํ•œ๋‹ค.


์ฐธ๊ณ ๋กœ ์„ธ์…˜2๊ฐ€ ๋ฝ์„ ๋ฌดํ•œ์ • ๋Œ€๊ธฐํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋ฝ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๋„˜์–ด๊ฐ€๋ฉด ๋ฝ ํƒ€์ž„์•„์›ƒ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

 

๋ฝ ๋Œ€๊ธฐ ์‹œ๊ฐ„์€ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

SET LOCK_TIMEOUT <milliseconds> : ๋ฝ ํƒ€์ž„์•„์›ƒ ์‹œ๊ฐ„์„ ์„ค์ •ํ•œ๋‹ค.

์˜ˆ) SET LOCK_TIMEOUT 10000 10์ดˆ, ์„ธ์…˜2์— ์„ค์ •ํ•˜๋ฉด ์„ธ์…˜2๊ฐ€ 10์ดˆ ๋™์•ˆ ๋Œ€๊ธฐํ•ด๋„ ๋ฝ์„ ์–ป์ง€ ๋ชปํ•˜๋ฉด ๋ฝ ํƒ€์ž„์•„์›ƒ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

 

 

6. ์„ธ์…˜1์€ ์ปค๋ฐ‹์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ปค๋ฐ‹์œผ๋กœ ํŠธ๋žœ์žญ์…˜์ด ์ข…๋ฃŒ๋˜์—ˆ์œผ๋ฏ€๋กœ ๋ฝ๋„ ๋ฐ˜๋‚ฉํ•œ๋‹ค.

 

7. ๋ฝ์„ ํš๋“ํ•˜๊ธฐ ์œ„ํ•ด ๋Œ€๊ธฐํ•˜๋˜ ์„ธ์…˜2๊ฐ€ ๋ฝ์„ ํš๋“ํ•œ๋‹ค.

 

8. ์„ธ์…˜2๋Š” update sql์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

9. ์„ธ์…˜2๋Š” ์ปค๋ฐ‹์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ํŠธ๋žœ์žญ์…˜์ด ์ข…๋ฃŒ๋˜์—ˆ์œผ๋ฏ€๋กœ ๋ฝ์„ ๋ฐ˜๋‚ฉํ•œ๋‹ค.

 

 

 

DB ๋ฝ - ์กฐํšŒ

 

๋ณดํ†ต ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ๋Š” ๋ฝ์„ ํš๋“ํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ผ๋ฐ˜์ ์ธ ์กฐํšŒ๋Š” ๋ฝ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค

 

 

 

์กฐํšŒ ์‹œ์ ์— ๋ฝ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ?

ํŠธ๋žœ์žญ์…˜ ์ข…๋ฃŒ ์‹œ์ ๊นŒ์ง€ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋ณ€๊ฒฝํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๊ฐ•์ œ๋กœ ๋ง‰์•„์•ผ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

์˜ˆ๋ฅผ ๋“ค์–ด์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์—์„œ memberA ์˜ ๊ธˆ์•ก์„ ์กฐํšŒํ•œ ๋‹ค์Œ์— ์ด ๊ธˆ์•ก ์ •๋ณด๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์–ด๋–ค ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ ์ด ๊ณ„์‚ฐ์ด ๋ˆ๊ณผ ๊ด€๋ จ๋œ ๋งค์šฐ ์ค‘์š”ํ•œ ๊ณ„์‚ฐ์ด์–ด์„œ ๊ณ„์‚ฐ์„ ์™„๋ฃŒํ•  ๋•Œ ๊นŒ์ง€ memberA ์˜ ๊ธˆ์•ก์„ ๋‹ค๋ฅธ๊ณณ์—์„œ ๋ณ€๊ฒฝํ•˜๋ฉด ์•ˆ๋œ๋‹ค.

 

์ด๋Ÿด ๋•Œ ์กฐํšŒ ์‹œ์ ์— ๋ฝ์„ ํš๋“ํ•˜๋ฉด ๋œ๋‹ค.

 

 

 

set autocommit false;
select * from member where member_id='memberA' for update;

 

select for update ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.


์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์„ธ์…˜1์ด ์กฐํšŒ ์‹œ์ ์— ๋ฝ์„ ๊ฐ€์ ธ๊ฐ€๋ฒ„๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ์„ธ์…˜์—์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค.

 

๋ฌผ๋ก  ์ด ๊ฒฝ์šฐ๋„ ํŠธ๋žœ์žญ์…˜์„ ์ปค๋ฐ‹ํ•˜๋ฉด ๋ฝ์„ ๋ฐ˜๋‚ฉํ•œ๋‹ค.

 

 

 

 

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-1/dashboard

 

์Šคํ”„๋ง DB 1ํŽธ - ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ํ•ต์‹ฌ ์›๋ฆฌ - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ DB ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ธฐ์ˆ ์„ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์ดํ•ดํ•˜๊ณ , ์™„์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ ์˜ ์›๋ฆฌ์™€ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ณ , ๋” ๊นŠ์ด์žˆ๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค., - ๊ฐ•์˜

www.inflearn.com

 

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

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

[์Šคํ”„๋ง DB 1ํŽธ] - 8. ํŠธ๋žœ์žญ์…˜ ์ถ”์ƒํ™”  (2) 2023.03.24
[์Šคํ”„๋ง DB 1ํŽธ] - 7. ์Šคํ”„๋ง๊ณผ ๋ฌธ์ œ ํ•ด๊ฒฐ - ํŠธ๋žœ์žญ์…˜  (0) 2023.03.21
[์Šคํ”„๋ง DB 1ํŽธ] - 5. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๊ตฌ์กฐ์™€ DB ์„ธ์…˜  (0) 2023.03.15
[์Šคํ”„๋ง DB 1ํŽธ] - 4. ํŠธ๋žœ์žญ์…˜  (0) 2023.03.15
[์Šคํ”„๋ง DB 1ํŽธ] - 3. DataSource ์ดํ•ด  (0) 2023.03.14
'Spring/Spring DB' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [์Šคํ”„๋ง DB 1ํŽธ] - 8. ํŠธ๋žœ์žญ์…˜ ์ถ”์ƒํ™”
  • [์Šคํ”„๋ง DB 1ํŽธ] - 7. ์Šคํ”„๋ง๊ณผ ๋ฌธ์ œ ํ•ด๊ฒฐ - ํŠธ๋žœ์žญ์…˜
  • [์Šคํ”„๋ง DB 1ํŽธ] - 5. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๊ตฌ์กฐ์™€ DB ์„ธ์…˜
  • [์Šคํ”„๋ง DB 1ํŽธ] - 4. ํŠธ๋žœ์žญ์…˜
hello_u
hello_u
  • hello_u
    ๐Ÿ˜œ
    hello_u
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๐Ÿ˜œ (345)
      • Hardware (2)
        • BMC (2)
      • Spring (109)
        • Spring ์ž…๋ฌธ (20)
        • Spring ๊ธฐ๋ณธ (27)
        • Spring MVC (18)
        • Spring DB (22)
        • Spring JPA ๊ธฐ๋ณธ (16)
        • Spring JPA ํ™œ์šฉ (6)
      • Develop (27)
        • DB (8)
        • JAVA (4)
        • Web (2)
        • Python (7)
        • OSS (2)
        • Git (2)
        • API (2)
      • Algorithm (155)
        • CodeUp ๊ธฐ์ดˆ (44)
        • ํŒŒ์ด์ฌ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (64)
        • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (4)
        • SWEA (30)
        • Softeer (10)
        • BOJ (2)
      • CS (9)
        • ์ปดํ“จํ„ฐ์ผ๋ฐ˜ (3)
        • ์šด์˜์ฒด์ œ (3)
        • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (0)
        • ์ •๋ณดํ†ต์‹  (1)
        • ์ž๋ฃŒ๊ตฌ์กฐ (1)
        • ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™ (1)
        • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (0)
        • ์ตœ์‹  ๋””์ง€ํ„ธ, ์ผ๋ฐ˜์ƒ์‹ (0)
      • ์ž๊ฒฉ์ฆ (41)
        • ์ •๋ณด๋ณด์•ˆ๊ธฐ์‚ฌ (9)
        • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (22)
        • ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ 1๊ธ‰ (3)
        • SQLD (7)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
hello_u
[์Šคํ”„๋ง DB 1ํŽธ] - 6. DB ๋ฝ
์ƒ๋‹จ์œผ๋กœ

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