PostgreSQL์ ๊ฒฉ๋ฆฌ์์ค์ ๋ํด
PostgreSQL์ ๊ธฐ๋ณธ ๊ฒฉ๋ฆฌ ์์ค์ READ COMMITTED ์ด๋ค.
READ COMMITTED๋ ?
๋ค๋ฅธ ํธ๋์ญ์ ์ด ๋ฐ์ดํฐ๋ฅผ ์๋ก ์ปค๋ฐํ๋ฉด, ํ์ฌ ํธ๋์ญ์ ๋์ค์๋ ์ต์ ์ปค๋ฐ๋ ๊ฐ์ ์ฝ์ ์ ์๋ ๊ฒ์ด๋ค.
์ฆ, ํ์ฌ ํธ๋์ญ์ ์์์ ๋์ผํ row๋ฅผ ๋ ๋ฒ ์ด์ ์กฐํ ํ์๋, ์ค๊ฐ์ ๋ค๋ฅธ ๊ฐ์ด ๋์ฌ ์๋ ์๋ค.
ํ์ ๋ ์๋์ ์ค์๊ฐ์ผ๋ก ํ๋งคํ๋, ํ์ ํ๋งค ์ด๋ฒคํธ์์ READ COMMITTED ์ฌ์ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ๋ ๋ฌด์์ผ๊น?
* ๋ฐ๋ก ์ฌ๊ณ ๊ฐ ์ค๋ณต ๊ฐ์ ๋๋ ๊ฒ์ด๋ค. *
- ์๋ฅผ ๋ค์ด A ์ B๊ฐ ๋์์ ์ฌ๊ณ ๋ฅผ ์กฐํํ์ฌ ๋ ๋ค ๋จ์ ์ฌ๊ณ ๊ฐ ํ ๊ฐ ๋ผ๊ณ ํ๋ค๋ฉด, ๋ ๋ค ์ฃผ๋ฌธ์ด ๊ฐ๋ฅํ ๊ฒ์ด๊ณ , ๋จ์ ์ฌ๊ณ ๋ฅผ ์ด๊ณผํ๋ ์ฃผ๋ฌธ์ด ๋ฐํ๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ ๋์ ์ ๊ทผ ์ ๋ฐ์ดํฐ ์ ํฉ์ฑ์ด ๊นจ์ง๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
์ด๋ฌํ ์์ธ์ ํธ๋์ญ์ ์ด ์์ ํ ๋๋๊ธฐ ์ ์ ๋ค๋ฅธ ์ค๋ ๋๋ค๋ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฒ๋ฆฌํ ์ ์์ด ๋ฐ์ํ๋ ๊ฒ์ด๋ฏ๋ก
→ “๋ฝ”์ ๊ฑธ์ด ์ฌ๋ฌ ํธ๋์ญ์ ์ด ํ ๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ , ์์ ํ ์ ์๊ฒ ํ์ฌ ๋์์ฑ ์ถฉ๋์ ๋ฐฉ์งํ๋ฉด ๋๋ค.
๋ฝ์ ์ ์ฉํ์ง ์์์๋์ ์ ์ฉํ์๋ ๋น๊ต ํ ์คํธ :
๋ฝ๊ณผ ํธ๋์ญ์ ์ด ์ ์ฉ์ด ์๋ ์ํ๋ก ํ ์คํธ :
์์ธ์ฒ๋ฆฌ๋ฅผ ํด๋ ๋๋ถ์ ์ต์ข
์ฌ๊ณ ๋ 0์ด์์ง๋ง,
100๊ฐ์ ์ฌ๊ณ ๋ฅผ ํจ์ฌ ์ด๊ณผํ๋ 1083๊ฐ์ ์ฃผ๋ฌธ์ด ์ด๋ฃจ์ด ์ก๋ค.
๋น๊ด์ ๋ฝ๊ณผ ํธ๋์ญ์ ์ด ์ ์ฉ๋ ์ํ๋ก ํ ์คํธ :
์์ ์ฌ๊ณ ์ ์ฑ๊ณต ๊ฐ์๊ฐ ์ ํํ ์ผ์นํ๊ณ , ์ ํฉ์ฑ์ด ๋ณด์ฅ๋จ์ ํ์ธํ ์ ์์๋ค.
ํ์ง๋ง ๋ฝ์ ์ ์ฉํ์ ๊ฒฝ์ฐ, ์ ์ฒด ํ ์คํธ ์ํ ์๊ฐ์ด ์ฝ 1.5๋ฐฐ ๋ ๊ฑธ๋ ธ๋ค.
PostgreSQL์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฝ์ ์ป๊ธฐ ์ํด ๋ฌดํํ ๋๊ธฐํ๋๋ก ์ค์ ๋์ด ์์ด์
์ค์๊ฐ ์ฒ๋ฆฌ์ ๋น ๋ฅธ ์๋ต์ด ์ค์ํ ์๋น์ค์์๋ ์ฌ๊ฐํ ์ง์ฐ์ ์ ๋ฐ ํ ์ ์๋ค.
์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด lock_timeout์ ์ค์ ํด ์ค ์ ์์ง๋ง,
ํ์ ํ๋งค ์ด๋ฒคํธ์ฒ๋ผ ์์๊ฐ ์ค์ํ ์ํฉ์์๋ ์๋ฒ์์ ๋ค์ด์๋๋ฐ timeout ๋๋ฌธ์ ์ฃผ๋ฌธ์ ํ์ง ๋ชปํ๊ณ ์๋ฒ์ด ๋ค๋ก ๋ฐ๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธธ ์ ์์ด timeout ์ค์ ์ด ์คํ๋ ค ๋ฌธ์ ๊ฐ ๋ ์ ์๋ค.
๋ฐ๋ผ์ ๋น๊ด์ ๋ฝ์ ์๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ค์ ๋จ๊ณ๋ก Redis ๋์ ํ ์์ ์ด๋ค.
'๋ฐฑ์๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
SOLID ์์น๊ณผ ์ฌ์ฉ ์์ (0) | 2025.04.16 |
---|---|
Docker๋? (0) | 2025.02.21 |
Docker & CI/CD - 1 (1) | 2025.02.11 |