๐ป [Theory] MySQL InnoDB์ MyISAM
๐ป [Theory] MySQL InnoDB์ MyISAM
์ด๋ฒ์๋ RDB์์ ๋ง์ด ์ฌ์ฉ๋๋ MySQL์ ๊ฐ์ฅ ๋ํ์ ์ธ ์คํ ๋ฆฌ์ง ์์ง์ธ
InnoDB์ MyISAM์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
์คํ ๋ฆฌ์ง ์์ง์ด๋?
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํด ๋ฐ์ดํฐ๋ฅผ ์ฝ์ , ์ถ์ถ, ์ ๋ฐ์ดํธ ๋ฐ ์ญ์ (CRUD ์ฐธ์กฐ)ํ๋ ๋ฐ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ์ํํธ์จ์ด ์ปดํฌ๋ํธ์ด๋ค.
- ์ฆ, ์คํ ๋ฆฌ์ง ์์ง์ DB์์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ ํ ๋ฐฉ์์ผ๋ก ์ ์ฅํ๊ณ ์ ๊ทผํ ๊ฒ์ธ์ง์ ๋ํ ๊ธฐ๋ฅ(CRUD)์ ์ ๊ณตํ๋ค.
- ์คํ ๋ฆฌ์ง ์์ง์ ํน์ฑ์ ๋ฐ๋ผ ๋ฐ์ดํฐ ์ ๊ทผ์ด ์ผ๋ง๋ ๋น ๋ฅธ์ง, ์ผ๋ง๋ ์์ ์ ์ธ์ง, ํธ๋์ญ์ ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋์ง ๋ฑ์ ์ฐจ์ด์ ์ด ๋ฐ์ํ๋ค
- MySQL์ ์คํ ๋ฆฌ์ง ์์ง์ผ๋ก ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ์์ง์ผ๋ก๋ InnoDB์ MyISAM์ด ์๋ค.
MyISAM
MyISAM์ MySQL ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ์์คํ 5.5 ๋ฒ์ ์ด์ ์ ๊ธฐ๋ณธ ์คํ ๋ฆฌ์ง ์์ง์ด๋ค. ์ด๊ฒ์ ์ ISAM ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ง๋ง, ๋ ๋ง์ ์ ์ฉํ ํ์ฅ์ฑ ๊ฐ์ง๊ณ ์์๋ค. MyISAM์ ๊ฐ์ฅ ๋ถ์กฑํ ์ ์ ํธ๋์ญ์ ์ ์ง์ ๋ถ์ฌ์๋ค. MySQL 5.5๊ณผ ์ดํ ํ์ ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ํ๊ณผ ๋ ๋์ ๋์์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด InnoDB ์์ง์ผ๋ก ์ ํ๋์๋ค.
- ํญ์ ํ ์ด๋ธ์ ROW COUNT๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ SELECT count(*) ๋ช ๋ น์ ๋น ๋ฅด๊ณ , SELECT ๋ช ๋ น์์๋ ๋น ๋ฅธ ์๋๋ฅผ ์ง์
- full text ์ธ๋ฑ์ค๋ฅผ ์ง์ํ๋๋ฐ ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ Read Only๊ธฐ๋ฅ์ด ๋ง์ ์๋น์ค์ผ ์๋ก MyISAM์ด ํจ์จ์ ์ด๋ผ ํ ์ ์๋ค.
- full text ์ธ๋ฑ์ค : ๊ฒ์ ์์ง๊ณผ ์ ์ฌํ ๋ฐฉ๋ฒ์ผ๋ก ์์ฐ ์ธ์ด๋ฅผ ์ด์ฉํด ๊ฒ์ํ ์ ์๋ ํน๋ณํ ์ธ๋ฑ์ค๋ก ๋ชจ๋ ๋ฐ์ดํฐ ๋ฌธ์์ด์ ๋จ์ด๋ฅผ ์ ์ฅ
- ํธ๋์ญ์ ๋ฏธ์ ๊ณต
- table level locking
- SELECT INSERT UPDATE DELETE์ ํด๋น Table ์ ์ฒด์ Locking์ด ๊ฑธ๋ฆฐ๋ค.
InnoDB
MySQL 5.5 ์ดํ์ ๊ธฐ๋ณธ ์์ง์ผ๋ก ํธ๋์ญ์ ์ง์, ๋์์ฑ์ ๋์ ์ฑ๋ฅ, ์ธ๋ํค ์ง์ ๋ฑ ์ฌ๋ฌ ๊ธฐ๋ฅ๋ค์ด ์ถ๊ฐ ๋์๋ค.
- ACID ํธ๋์ญ์ ์ง์
- ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ํ ๋ณด์ฅ
- MyISAM๊ณผ ๋น์ทํ์ง๋ง ORACLE์ฒ๋ผ ๋ง์ ๊ธฐ๋ฅ์ ์ง์ํ๋ค.
- commit, rollback, ์ฅ์ ๋ณต๊ตฌ, row-level locking, ์ธ๋ํค ๋ฑ
- row level locking ์ง์
- ํธ๋์ญ์ ์ฒ๋ฆฌ๊ฐ ํ์ํ ๋์ฉ๋์ ๋ฐ์ดํฐ์ ์ ๋ฆฌํ ์ ์ด ์์ด์, ์ฌ์ฉ์์ CRUD๊ฐ ๋ง์ ์๋น์ค์ ์ ๋ฆฌํ๋ค.
- ๋ค์์ ์ฌ์ฉ์ ๋์์ ์๊ณผ ํผํฌ๋จผ์ค๊ฐ ์ฆ๊ฐํ์ฌ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋ ์ต๋์ ํผํฌ๋จผ์ค๋ฅผ ๋ด๋๋ก ์ค๊ณ
- ๋์์ ์ผ๋ก ์์ฒญ์ด ๋ง์ด์ค๋ ๋์ ํผํฌ๋จผ์ค๊ฐ ํ์ํ ๋์ฉ๋ ์ฌ์ดํธ์ ์ ํฉ
- full text ์ธ๋ฑ์ค ์ง์ํ์ง ์๋๋ค.
์ ๋ฆฌ
- ๊ฐ์ฅ ํฐ ํน์ง์ผ๋ก ํธ๋์ญ์ ์ ์ ๋ฌด์ locking level์ ์ฐจ์ด๊ฐ ์๋ค.
- InnoDB ์์ง์ ํธ๋์ญ์ ์ฒ๋ฆฌ๊ฐ ํ์ํ๊ณ ๋์ฉ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๋ถ๋ถ์์ ํจ์จ์ ์ด๋ค.
- MyISAM ์์ง์ ํธ๋์ญ์ ์ฒ๋ฆฌ๊ฐ ํ์ ์๊ณ , Read only ๊ธฐ๋ฅ์ด ๋ง์ ์๋น์ค์ผ์๋ก ํจ์จ์ ์ด๋ค.
- ํ์ค๋ก ์ ๋ฆฌํ๋ฉด, InnoDB๋ ๋ฐ์ดํฐ์ ๋ณํ๊ฐ ๋ง์ ์๋น์ค์, MyISAM์ SELECT๊ฐ ๋ง์ ์๋น์ค์ ์ ํฉํ๋ค ํ ์ ์๋ค.
- ์ฉ๋์ ๋ฐ๋ผ InnoDB๋ MyISAM ์คํ ๋ฆฌ์ง ์์ง์ ๊ฒฐ์ ํ๋๋ฐ, InnoDB์ MyISAM ํ ์ด๋ธ์ ๊ฐ์ด ์ฌ์ฉํ ๊ฒฝ์ฐ, ์กฐ์ธ์ ์ฃผ์ํด์ผํ๋ค
๋
MySQL์ ๊ฐ์ฅ ๋ํ์ ์ธ ์คํ ๋ฆฌ์ง ์์ง์ธ
InnoDB์ MyISAM์ ๋ํด ์์๋ณด์์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค. ๐
Reference
Written on June 22, 2021