
๋กํน ๋จ์๋?
๋กํน(locking) ๋จ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ง๊ทธ๋๋ก โ์ ๊ทธ๋ ๋จ์โ๋ฅผ ๋ํ๋ธ๋ค.
๋กํน ๊ธฐ๋ฒ์ด๋ ํ๋์ ํธ๋์ญ์
์ด ๋ฐ์ดํฐ๋ฅผ ์์ธ์คํ๋ ๋์, ๋ค๋ฅธ ํธ๋์ญ์
์ด ํด๋น ๋ฐ์ดํฐ ํญ๋ชฉ์ ์์ธ์ค ํ ์ ์๋๋ก ํ๋ ๋ณํ ์ ์ด ๊ธฐ๋ฒ์ด๋ค. โ๋์์ฑ ์ ์ด ๊ธฐ๋ฒโ ์ด๋ผ๊ณ ๋ ํ๋ค.
์ฌ๊ธฐ์์ ๋ก(lock)์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๋จ์๋ผ๊ณ ๋ณผ ์ ์๋ค.
๋ง์น ์ด์์ฒด์ ์ ์ค๋ ๋ ์ค์ผ์ค๋ง์ฒ๋ผ,
ํ ๋ฒ์ ํ๋๋ง ์ฌ์ฉํ๋๋ก ํ๋ ๋จ์๋ฅผ โ๋กํน ๋จ์โ๋ผ๊ณ ํ๋ค.
์ค์ง์ ์ธ ์์๋ฅผ ๋ค์ด๋ณด์๋ฉด,
ํ๋ก์ ํธ๋ฅผ ์งํํ ๋ ํ์๊ณผ DB๋ฅผ ๊ด๋ฆฌํด์ผํ๋ ์ผ์ ๋น๋ฒํ๋ค.
๋ง์ฝ ๋ด๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์์ ํ๋ ๋์ ๋ค๋ฅธ ํ์๋ ๋์์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฑด๋ค๊ฒ ๋ ๊ฒฝ์ฐ, ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ์ฌ๋ฐ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. โ๏ธ
์ด ๊ฒฝ์ฐ, ๋กํน๊ธฐ๋ฒ์ ์ ์ฉํ๋ ๋ฐ์ ์์ด ์ดํดํ๊ธฐ ์ฝ๊ฒ ์๋์ ๋กํน ๋จ์๋ฅผ ์ค์ ํด๋ณด์.
1) ๋กํน ๋จ์๊ฐ โํด๋โ ์ผ ๋
์ด ๊ฒฝ์ฐ, ๋๊ตฐ๊ฐ๊ฐ ์ด๋ค ํด๋์ ํ์ผ์ ์์
ํ ๋ ๋ค๋ฅธ ํ์์ ์ด ํด๋๋ฅผ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ํ๋ค.
2) ๋กํน ๋จ์๊ฐ โํ๋ก์ ํธโ ์ผ ๋
์ด๋๋ ์ฐ๋ฆฌ ํ์ด ํ๋ก์ ํธ๋ฅผ ์์
์ค์ผ ๋, ๋ค๋ฅธ ํ์ ํ๋ก์ ํธ ์ ๊ทผ์ ๋ง๋ ๊ฒ์ ์๋ก ๋ค ์ ์๋ค.
๋๋ถ๋ถ์ DBMS(MySQL, PostgreSQL, Oracle ๋ฑ)์์๋ ๋ ์ฝ๋ ๋จ์ ๋ฝ(Row Lock) ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉํ์ฌ ๋ณํ์ฑ๊ณผ ์ฑ๋ฅ์ ์กฐ์ ํ๋ค.
1) ํ
์ด๋ธ ๋ฝ
- ํ
์ด๋ธ ์ ์ฒด๋ฅผ ์ ๊ธ
- ๋ณํ์ฑ์ด ๋ฎ์ง๋ง ๋จ์ํ ์์
์ ์ ํฉ
2) ํ์ด์ง ๋ฝ
- ์ฌ๋ฌ ํ์ด์ง(๋ฐ์ดํฐ ๋ธ๋ก) ์ผ๋ก ๋๋์ด์ ธ ์๋ ๊ฒฝ์ฐ, ํด๋น ํ์ด์ง(๋ธ๋ก) ๋ง ์ ๊ธ
- ๋ณํ์ฑ๊ณผ ๋ฝ ์ค๋ฒํค๋์ ๊ท ํ
3) ๋ ์ฝ๋ ๋ฝ ๐
- ํ(Row) ๋ง ์ ๊ธ
- ๋ณํ์ฑ์ด ๋์ง๋ง ๋ฝ ๊ด๋ฆฌ ๋น์ฉ ์ฆ๊ฐ
4) ํ๋ ๋ฝ
- ํน์ ์ปฌ๋ผ(column) ๋ง ์ ๊ธ
- ๋ณํ์ฑ์ด ๊ฐ์ฅ ๋์ง๋ง ํ์ค์ ์ผ๋ก ์ ์ฌ์ฉ๋์ง ์์.

๋กํฌ ๋จ์์ ๋ณํ์ฑ
: ๋ฐ๋น๋ก
๋กํฌ ๋จ์๊ฐ ํด ์๋ก,
๋กํฌ์ ์๋ ๊ฐ์, ์ ์ด ๊ธฐ๋ฒ์ด ๊ฐ๋จํด์ง๋ค.
โก๏ธ ๋ณํ์ฑ์ ๊ฐ์ , ์ค๋ฒํค๋ ๊ฐ์
๋กํฌ์ ๋จ์๊ฐ ์์ผ๋ฉด,
๋กํฌ์ ์๋ ์ฆ๊ฐ, ์ ์ด ๊ธฐ๋ฒ์ด ๋ณต์กํด์ง๋ค.
โก๏ธ ๋ณํ์ฑ์ ์ฆ๊ฐ , ์ค๋ฒํค๋ ์ฆ๊ฐ
+
๋ณํ์ฑ๊ณผ ๋กํฌ๋จ์ ๊ด๊ณ๋ ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ๊ธฐ์ถ ๋จ๊ณจ !

'๐ป > DB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DB/OracleDB] Oracle DB ์ญ์ ํ ๋ฐ์ดํฐ ๋ณต๊ตฌํ๊ธฐ (TIMESTAMP) (0) | 2025.01.23 |
---|---|
[DB] MyBatis vs. JPA (2) | 2024.10.16 |
[DB/OracleDB] SQL๋ฌธ ์กฐํ, ํจ์ ์ ๋ฆฌ (2) | 2024.09.09 |
[DB/OracleDB] Oracle Cloud , DBeaver ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ ํ๊ธฐ (2) | 2024.09.08 |