MySQL Engine Lock
MySQL ์์ง ๋ ๋ฒจ์ ๋ฝ์ ๋ชจ๋ ์คํ ๋ฆฌ์ง ์์ง์ ์ํฅ์ ์ฃผ๊ฒ ๋๋ ๋ฝ์ผ๋ก, ์๋์ ๊ฐ์ ์ข ๋ฅ๊ฐ ์๋ค.
๊ธ๋ก๋ฒ ๋ฝ(Global Lock)
๋ฝ์ ๋ฒ์๊ฐ MySQL ์๋ฒ ์ ์ฒด๋ก(์์ ๋์ ํ ์ด๋ธ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋๋๋ผ๋ ํฌํจ), ์ ๊ณตํ๋ ์ ๊ธ ์ค ๊ฐ์ฅ ๋ฒ์๊ฐ ํผ
ํ ์ธ์ ์์ ๊ธ๋ก๋ฒ ๋ฝ์ ํ๋ํ๋ฉด ๋ค๋ฅธ ์ธ์ ์์ SELECT๋ฅผ ์ ์ธํ ๋๋ถ๋ถ์ DDL/DML ์ฟผ๋ฆฌ๊ฐ ๋ฝ์ด ํด์ ๋ ๋๊น์ง ๋๊ธฐ
๋ชจ๋ ํ ์ด๋ธ์ ํฐ ์ํฅ์ ๋ฏธ์น๊ธฐ ๋๋ฌธ์ ์น ์๋น์ค์์๋ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข์
FLUSH TABLES WITH READ LOCK
๋ช ๋ น์ผ๋ก ํ๋ํ๋ฉฐ,UNLOCK TABLES
๋ช ๋ น์ผ๋ก ํด์
๋ฐฑ์
๋ฝ(Backup Lock)
InnoDB ์คํ ๋ฆฌ์ง ์์ง์์๋ ํธ๋์ญ์ ์ ์ง์ํ๊ธฐ ๋๋ฌธ์ ๊ธ๋ก๋ฒ ๋ฝ์ ์ฌ์ฉํ ํ์๊ฐ ๊ฑฐ์ ์์ด์ก์ผ๋ฉฐ, ์ข ๋ ๊ฐ๋ฒผ์ด ๋ฝ์ธ ๋ฐฑ์ ๋ฝ์ ์ฌ์ฉํ๋ค. ํน์ ์ธ์ ์์ ๋ฐฑ์ ๋ฝ์ ํ๋ํ๋ฉด ์๋์ ์์ ์ด ์ ํ๋์ง๋ง ์ผ๋ฐ์ ์ธ ํ ์ด๋ธ์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ํ์ฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ํ ์ด๋ธ ๋ฑ์ ๋ณ๊ฒฝ ๋ฐ ์ญ์
REPAIR TABLE / OPTIMIZE TABLE ๋ช ๋ น
์ฌ์ฉ์ ๊ด๋ฆฌ ๋ฐ ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ
MySQL ์๋ฒ๋ฅผ ์์ค - ๋ ํ๋ฆฌ์นด
๋ก ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ ์ฃผ๋ก ๋ฐฑ์
์์
์ ๋ ํ๋ฆฌ์นด ์๋ฒ์์ ์ด๋ฃจ์ด ์ง๋๋ฐ, ์ด ๋ ๋ ํ๋ฆฌ์นด ์๋ฒ์์ ๋ฐฑ์
๋ฝ์ ์ฌ์ฉํ์ฌ ๋ฐฑ์
์ ์ํํ๊ณ ์๋ค.
ํ
์ด๋ธ ๋ฝ(Table Lock)
๊ฐ๋ณ ํ ์ด๋ธ ๋จ์๋ก ์ค์ ๋๋ ์ ๊ธ์ผ๋ก, ๋ช ์์ ๋๋ ๋ฌต์์ ์ผ๋ก ํน์ ํ ์ด๋ธ์ ๋ฝ์ ํ๋ํ ์ ์๋ค.
๋ช ์์ ๋ฝ
LOCK TABLES tbl_name [READ | WRITE]
๋ช ๋ น์ผ๋ก ํ๋UNLOCK TABLES
๋ช ๋ น์ผ๋ก ํด์ ํน๋ณํ ์ํฉ์ด ์๋๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ ์ผ์ด ๊ฑฐ์ ์์
๋ช ์์ ์ผ๋ก ํ ์ด๋ธ์ ์ ๊ทธ๋ ์์ ์ ๊ธ๋ก๋ฒ ๋ฝ๊ณผ ๋์ผํ๊ฒ ๋ค๋ฅธ ์์ ์ ํฐ ์ํฅ์ ๋ฏธ์นจ
๋ฌต์์ ๋ฝ
(MyISAM / MEMORY ํ์ )DML ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ฉด ๋ฐ์
ํ์ง๋ง InnoDB ์์ง์์๋ ์คํ ๋ฆฌ์ง ์์ง ์ฐจ์์์ ๋ ์ฝ๋ ๊ธฐ๋ฐ์ ์ ๊ธ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ DML ์ฟผ๋ฆฌ๋ก ๋ฌต์์ ๋ฝ์ด ์ค์ ๋์ง ์์
(๋ชจ๋ ์์ง ํฌํจ)DDL ์ฟผ๋ฆฌ๋ก ์คํค๋ง๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ ๋ฌต์์ ๋ฝ์ด ์ค์ ๋จ
๋ค์๋ ๋ฝ(Named Lock)
๋ค์๋ ๋ฝ์ GET_LOCK()
ํจ์๋ฅผ ์ฌ์ฉํด ์์์ ๋ฌธ์์ด์ ๋ํด ๋ฝ์ ์ค์ ํ ์ ์์ผ๋ฉฐ,
์ ๊ธ์ ๋์์ด ํ
์ด๋ธ/๋ ์ฝ๋ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํน์ ๊ฐ์ฒด๊ฐ ์๋๋ผ ์ง์ ํ ๋ฌธ์์ด(String)์ ๋ํ ์ ๊ธ์ด๋ค.
ํธ๋์ญ์ ์ด ์ข ๋ฃ๋ ๋ ์๋์ผ๋ก ํด์ ๋์ง ์๊ธฐ ๋๋ฌธ์, ์ ๊ธ ์๊ฐ์ด ์ง๋๊ฑฐ๋ ๋ช ์์ ์ผ๋ก ํด์ ํด์ผ ํ๋ค.
์์ฉ - ๋ถ์ฐ ๋ฝ
๋ค์๋ ๋ฝ์ ์๋์ ๊ฐ์ด ๋ช ์์ ์ผ๋ก ๋ฝ์ ์ค์ ํ๊ณ ํด์ ํ๋ ๋ฐฉ์์ผ๋ก ๋ถ์ฐ ๋ฝ์ ๊ตฌํํ ์ ์๋ค.
๋ฉํ๋ฐ์ดํฐ ๋ฝ(Metadata Lock)
๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด(ํ ์ด๋ธ์ด๋ ๋ทฐ ๋ฑ)์ ์ด๋ฆ์ด๋ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ์ ํ๋ํ๋ ์ ๊ธ์ผ๋ก, ๋ช ์์ ์ผ๋ก ํ๋ํ๊ฑฐ๋ ํด์ ํ๋ ๊ฒ์ด ์๋ ํ ์ด๋ธ์ ์ด๋ฆ์ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ ์๋์ผ๋ก ํ๋๋๋ค.
์์ ๊ฐ์ด ๋ ๊ฐ์ ๋ช
๋ น๋ฌธ์ผ๋ก ๋๋์ด ์คํํ๋ฉด, ๊ธฐ์กด rank
ํ
์ด๋ธ์ ์ ๊ทผํ๋ ค๋ ๋ค๋ฅธ ์ธ์
์์ Table Not Found
์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๋ค.
ํ์ง๋ง ์์ ๊ฐ์ด RENAME TABLE ๋ช
๋ น๋ฌธ์ ๋ ๊ฐ์ ์์
์ ํ ๋ฒ์ ์คํํ๋ฉด
๋ ํ
์ด๋ธ์ ๋ํด ์ ๋ถ ๋ฝ์ ํ๋ํ๊ฒ ๋์ด ๋ค๋ฅธ ์ธ์
์์ Table Not Found
๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
์์ฉ - ํ
์ด๋ธ ๊ตฌ์กฐ ๋ณ๊ฒฝ
๋ง์ฝ ์๋น์ค ์ ์ง ์ค ํ ์ด๋ธ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํด์ผํ๋ ์ํฉ์ด๋ผ๋ฉด ์๋์ ๊ฐ์ด ํ ์ ์๋ค.
์๋ก์ด ๊ตฌ์กฐ์ ํ ์ด๋ธ ์์ฑ
์ต๊ทผ(1์๊ฐ ์ง์ ๋๋ ํ๋ฃจ ์ )๊น์ง์ ๋ฐ์ดํฐ๋ฅผ Primary Key์ธ id ๊ฐ์ ๋ฒ์๋ณ๋ก ๋๋ ์ ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๋ก ๋ณต์ฌ
ํธ๋์ญ์ ์ auto commit์ผ๋ก ์ค์
์์ ๋์ ํ ์ด๋ธ์ ๋ํด ํ ์ด๋ธ ๋ฝ์ ์ค์
๊ธฐ์กด ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์๋ก์ด ํ ์ด๋ธ๋ก ๋ณต์ฌ
๋ชจ๋ ๋ฐ์ดํฐ ๋ณต์ฌ ์๋ฃ ํ ํ ์ด๋ธ ์ด๋ฆ ๋ณ๊ฒฝ
ํ ์ด๋ธ ์ฐ๊ธฐ ๋ฝ ํด์ ๋ฐ ํ ์ด๋ธ ์ญ์
์ฐธ๊ณ ์๋ฃ
Last updated
Was this helpful?