[Database] ๋ฐ์ดํฐ ๋ฒ ์ด์ค Lock์ ๊ฐ๋ , ์์ฑ ๋ฐ ํด์ ์๋ฆฌ
๋ชฉ์ฐจ
Lock
Lock์ ์ข ๋ฅ
Lock์ ๋ฒ์
Lock์ ํด์
์ค๋ฌด์์ ๋ฌด์๋ณด๋ค ๋๋ฅผ ๊ดด๋กญํ๋ Lock์ ๋ํด ์์๋ณด์
Lock?
Lock์ DBMS์์ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค. ๋ค๋ฅธ ๋ง๋ก ํ๋ฉด, ํธ๋์ญ์ ์ฒ๋ฆฌ์ ์์ฐจ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํจ์ด๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์์์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์์ผ๋ฏ๋ก, ๊ฐ์ ๋ฐ์ดํฐ์ ๋ํ์ฌ ๋์์ ์ ๊ทผํ๋ ๊ฒฝ์ฐ๊ฐ ํ์ฐ์ ์ผ๋ก ๋ฐ์ํ ์ ๋ฐ์ ์๋ค. ๋์์ ์ ๊ทผํ์ ๋, ๋ฐ์ดํฐ๊ฐ ๋ง๊ฐ์ง์ง ์๋๋ก ํด์ผํ๋ค. ์ฝ๊ฒ ์ ํ ์ ์๋ ๊ฒ์ด ์ฝ์ํธ ํฐ์ผํ ์ด๋, ์๊ฐ์ ์ฒญ๊ฐ์ ๋์ ๋ค๋ฐ์ ์ผ๋ก ๋ชฐ๋ฆฌ๋ ์์คํ ์ด๋ค.
Lock์ ์ข ๋ฅ
Lock์ ์ํฉ์ ๋ฐ๋ผ ๋ ๊ฐ์ง ์ข ๋ฅ๋ก ๋๋๋ค.
- ๊ณต์ ๋ฝ(Shared Lock, ๋๋ Read Lock)
๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋ ์ฌ์ฉํ๋ค. ๋ด๊ฐ ํด๋น ๋ฐ์ดํฐ์ Lock์ ๊ฑธ์์ด๋, ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ๋ณผ ์ ์๋ค. ๊ณต์ ๋ฝ์ ์ค์ ํ ๊ฒฝ์ฐ์ ๋ฐฐํ ๋ฝ์ ์ค์ ํ ์ ์๋ค. ์ฆ, ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ๋ณผ ์๋ ์์ผ๋ ๋ณ๊ฒฝ์ ํ ์ ์๋ค. ์ฝ๊ธฐ ์ ๊ธ์ด๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค.
- ๋ฐฐํ ๋ฝ(Exclusive Lock, ๋๋ Write Lock)
๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ ๋ ์ฌ์ฉํ๋ค. ํธ๋์ญ์ ์ด ์๋ฃ๋ ๋ ๊น์ง ์ ์ง๋๋ค. Lock์ด ํด์ ๋๊ธฐ ์ ๊น์ง๋ ๊ณต์ ๋ฝ๊ณผ ๋ฐฐํ ๋ฝ์ ๋ชจ๋ ์ค์ ํ ์ ์๋ค. ์ฆ, ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์๋ ์๊ณ ๋ณ๊ฒฝํ ์๋ ์๋ค.
Lock์ ๋ฒ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค : ์ ์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ์ค์ผ๋ก Lock ์ค์ . 1๊ฐ์ session๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ์ดํฐ๊ฐ ์ ๊ทผ ๊ฐ๋ฅ. DB ์ํํธ์จ์ด ์ ๊ทธ๋ ์ด๋ํ ๋ ์ฌ์ฉ๋์ด์ง๋ค.
- ํ์ผ : ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ผ ๊ธฐ์ค์ผ๋ก Lock ์ค์ . ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ(table ๋ฑ)๊ฐ ์ฐ์ฌ์ง๋ ๋ฌผ๋ฆฌ์ ์ ์ฅ์ ์๋ฏธ
- ํ ์ด๋ธ : ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ ๊ธฐ์ค์ผ๋ก Lock ์ค์ . DDL Lock์ด๋ผ๊ณ ๋ ํ๋ค.
- ์ปฌ๋ผ
- ํ
- ํ์ด์ง/๋ธ๋ญ
Blocking
(์ด์ ์ ๋ธ๋กํน์ ๋ํด ํฌ์คํ ์ ํ ์ ์ด ์๋ค. https://itbox.tistory.com/34 )
๋ธ๋กํน์ Lock๊ณผ ๋ผ์ด๋์ ์ ์๋ ๊ฐ๋ ์ด๋ค. Lock๊ฐ ๊ฒฝํฉ(๊ณต์ ๋ฝ๏ผ๋ฐฐํ ๋ฝ, ๋ฐฐํ ๋ฝ๏ผ๋ฐฐํ ๋ฝ)์ด ๋ฐ๋ก ๋ธ๋กํน์ด๊ธฐ ๋๋ฌธ์ด๋ค.
๊ณต์ ๋ฝ ๋ผ๋ฆฌ๋ ๋ธ๋กํน์ ๋ฐ์์ํค์ง ์๋๋ค. ๋ธ๋กํน์ ํด๊ฒฐํ๊ธฐ ์ํ์ฌ์๋ ํธ๋์ญ์ ์ ๋ํ์ฌ Commit์ ํ๊ฑฐ๋, Rollback์ ํด์ผํ๋ค. ๋จผ์ ๋ค์ด์จ ํธ๋์ญ์ ์ด ์ด๋ป๊ฒ๋ ์ข ๋ฃ๋์ด์ผ, ์ดํ์ ์์ ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ธ๋กํน์ ๋ฐ์์ํค์ง ์๊ธฐ ์ํด SQL ๋ฌธ์ฅ์ ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ๊ฑฐ๋, ํธ๋์ญ์ ์ ๋ฒ์๋ฅผ ์งง๊ฒ ์ง์ ํ๋ฉด ์ข๋ค. ๋ฌด์๋ณด๋ค ๊ฐ์ ์์์ ๋ํด ๋์์ ๋ณ๊ฒฝํ๋ ์์ ์ ์ต๋ํ ์ง์ํ๋ ๊ฒ์ด ์ ์ผ์ด๋ค.
Dead Lock
(์ด์ ์ ๋ฐ๋๋ฝ์ ๋ํด ํฌ์คํ ์ ํ ์ ์ด ์๋ค. https://itbox.tistory.com/51)
๊ต์ฐฉ์ํ๋ ๋ ๊ฐ์ ํธ๋์ญ์ ์ด ๊ฐ์ Lock์ ์ค์ ํ๊ณ , ์๋ก์ Lock์ ์ ๊ทผํ์ฌ ๊ฐ์ ์ป์ด์ค๋ ค๊ณ ํ ๋ ๋ฐ์๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์๋ Commit์ด๋ Rollback์ด ์๋, DBMS์ ์๋ฌ ๋ฐ์์ผ๋ก ๋ฌธ์ ๊ฐ ์ข ๋ฃ๋๋ค.
EX) ๋ ๊ฐ์ ํ ์ด๋ธ A, B๊ฐ ์๋ค. ํธ๋์ญ์ T1์ด Aํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ , Bํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ ค๊ณ ํ๋ค. ๋์์ ํธ๋์ญ์ T2๋ Bํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ , ์ด์ด์ Aํ ์ด๋ธ์ ์์ ํ๋ ค๊ณ ํ๋ค. ์ด ๊ฒฝ์ฐ์ T1์ Aํ ์ด๋ธ์ ๋ฒ ํ ๋ฝ์ ์ค์ ํ๊ณ , T2๋ Bํ ์ด๋ธ์ ๋ฒ ํ ๋ฝ์ ์ค์ ํ ์ํ๋ค. ์ด ๊ฒฝ์ฐ T1, T2 ๋ชจ๋ ์๋์ ๋ฒ ํ ๋ฝ์ด ํ๋ฆด ๋ ๊น์ง ๋ฌดํ์ ์ผ๋ก ๋๊ธฐํ๋ค. ๊ทธ๋ฌ๋, ์ด Lock์ ์๋ก์ ํธ๋์ญ์ ์ด ์ข ๋ฃ๋๊ธฐ๋ง์ ๊ธฐ๋ค๋ฆฌ๋ฏ๋ก ์์ํ ํด์๋์ง ๋ชปํ๋ค.