MySQL Server
MySQL์ ๋ค์ํ ์ข ๋ฅ์ ์คํ ๋ฆฌ์ง ์์ง๋ค(Storage Engines ๋๋ Database Engines)์ ๊ฐ์ง๊ณ ์๋๋ฐ์
์ฐ์ ์คํ ๋ฆฌ์ง ์์ง์ด๋ผ๋ ๊ฒ์ ๋ํด ์ ๋ฆฌ๋ฅผ ํ๊ณ ๋ค์์ผ๋ก ๋ํ์ ์ธ ์คํ ๋ฆฌ์ง ์์ง์ธ InnoDB์ MyISAM์ ๋ํด ์ ๋ฆฌํ๋ ค๊ณ ํด์
1. ์คํ ๋ฆฌ์ง ์์ง(Storage Engine)
DB(Database)์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ ๊ฐ์ ธ์ค๊ฑฐ๋ ์ญ์ ํน์ ์์ ์ ํ ๋ ์ฌ์ฉํ๋ ์ํํธ์จ์ด ์ปดํฌ๋ํธ์์.
์ด ์์ง์ DB๋ง๋ค ์ฌ์ฉ๋๋ ๊ฒ์ด ๋ค๋ฅด๊ณ ๊ทธ ๋ด์ฉ ๋ํ ์กฐ๊ธ์ฉ ๋ฌ๋ผ์
์ฌ๋ฌ DB์ค์ ์ ๋ฆฌํ MySQL์ ์คํ ๋ฆฌ์ง ์์ง์ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ ์ ์ฅ์ฅ์น์ ๋ฃ๊ฑฐ๋ ์ฝ์ด์ค๋ ๋ถ๋ถ์ ๋ํด ์์ง์ ์กฐ์ํ ๋
DBMS(Database Management System) ๊ณ ์ ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ ํฌํธ๋ฒํธ๋ฅผ ํตํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํด์
MySQL์ ์์ง์ ํน์ง์ ๋ฐ๋ก ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ธ๋ฐ์ ๋๋ถ๋ถ์ DB๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ง ์๊ณ
์ฌ์ฉ์๊ฐ ๋ด์ฅ๋ ์์ง๊ณผ ์ํธ์์ฉ ํ ์ ์๋ ์์ ๋ง์ API๋ฅผ ํฌํจํ๊ณ ์๋ต๋๋ค
๋, ์์ง์ด๋ผ๋ ์ฉ์ด๋ DB Server ๋๋ DBMS๋ผ๋ ์ฉ์ด๋ก ์ฌ์ฉ๋๊ธฐ๋ ํ๊ณ ์์ ๋ณด์ด๋ MySQL๋ ๊ทธ๋ ์ง๋ง ํ๋์ ๋ง์ DBMS๋
๋์ผํ DB๋ด์ ๋ค์ค ์์ง์ ์ง์ํ๊ธฐ ๋๋ฌธ์ ์๋น์ค ํน์ฑ์ ๋ง๊ฒ ์คํ ๋ฆฌ์ง ์์ง์ ๊ตฌ์ฑํ๋ฉด ๋ ์ข์ ํ์ง์ ์๋น์ค๋ฅผ ์ ๊ณตํ ์ ์์๊ฑฐ๋ผ ์๊ฐ๋์!
2. MyISAM
MySQL์ ๋ํ ์์ง์ค์ ํ๋์ธ MyISAM์ ISAM(Indexed Sequential Access Method) ์ ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํด ๋์จ ์ ๊ทธ๋ ์ด๋ ๋ฒ์ ์ธ๋ฐ์
MySQL 5.5 ์ด์ ๋ฒ์ ์ ๊ธฐ๋ณธ ์คํ ๋ฆฌ์ง ์์ง์ด์๋ค๊ณ ํด์
๊ฐ์ฅ ํฐ ํน์ง์ผ๋ก๋ ๋น-ํธ๋์ ์ -์ธ์ดํ( Non-transactional-safe ) ํ ์ด๋ธ์ ๊ด๋ฆฌํ๋ค๋ ์
๋ค๋ฅธ ํน์ง์ผ๋ก๋ MySQL์ ๋ค๋ฅธ ๋ํ ์์ง์ธ InnoDB์ ๋นํด์ ๊ธฐ๋ฅ์ด ๋ณ๋ก ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ๋ชจ๋ธ ๋์์ธ์ด ๋จ์ํ๊ณ
์ ๋ฐ์ ์ผ๋ก ์๋๊ฐ ๋น๊ต์ ๋นจ๋ผ์ ( Select ์ฟผ๋ฆฌ๋ก ๋ฐ์ดํฐ๋ฅผ DB๋ก๋ถํฐ ์ฝ์ด์ค๋ ์์ ์๋๊ฐ ๋นจ๋ผ์! )
์ธ๋ฑ์ฑ์๋ B-Tree, R-Tree, Full-text๋ฅผ ์ง์ํ๋๋ฐ Full-text ์ธ๋ฑ์ฑ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๊ฒ์ํ๋ ค๋ ๋ด์ฉ์ ๋ํ ๋ณตํฉ๊ฒ์์ด ๊ฐ๋ฅํด์
ํ์ง๋ง, Lock์ Table-level๋ก ํ๊ธฐ ๋๋ฌธ์ INSERT๋ UPDATE์ ๊ฐ์ ์ฐ๊ธฐ ์์ ์ ์๋๊ฐ ๋๋ฆฌ๊ณ
๋น-ํธ๋์ ์ -์ธ์ดํ ํ ์ด๋ธ์ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ํ ๋ณด์ฅ์ด ์๋์
๊ทธ๋์ ๋ฌด๊ฒฐ์ฑ์ ๊ฐ๋ฐ์๋ DBA๊ฐ ์ง์ ๊ตฌํํด์ฃผ์ด์ผ ํด์
์ด๋ฌํ ํน์ง์ผ๋ก MyISAM์ ํธ๋ํฝ์ด ๋ง์ ์น์ฌ์ดํธ๋ ๋ก๊ทธ ํ ์ด๋ธ ํน์ ์ฐ๊ธฐ์์ ์ด ๋ณ๋ก ์๋ ์ฝ๊ธฐ์์ ์์ฃผ์ ํ ์ด๋ธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์์
3. InnoDB
MySQL 5.5 ๋ฒ์ ๋ถํฐ ๊ธฐ๋ณธ ์คํ ๋ฆฌ์ง ์์ง์ผ๋ก์จ MyISAM๊ณผ ๋ฐ์ ๋๊ฒ ํธ๋์ ์ -์ธ์ดํ( transactional-safe ) ํ ์ด๋ธ์ ๊ด๋ฆฌํ๊ณ ACID Transaction์ ์ง์ํด์
๋ง์ ๊ธฐ๋ฅ๋ค์ ์กฐ๊ธ ์ดํด๋ณด์๋ฉด
์ธ๋ฑ์ค๋ B-Tree์ Clustered๋ฅผ ์ง์ํ๊ณ , ์ธ๋ถํค( foreign key )์ง์ํ์ฌ ๋์์ฑ์ ์ ์ดํด์
๊ทธ๋ฆฌ๊ณ ์๋ ์๋ฌ ๋ณต๊ตฌ ๊ธฐ๋ฅ ๋ฐ backup ํน์ ํน์ ์์ ์ผ๋ก ๋ณต๊ตฌ๋ฅผ ์ง์ํ์ฌ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํด์
๋ํ MyISAM์ Table-level Lock์ ์ฌ์ฉํ๋ ๋ฐ๋ฉด InnoDB๋ Row-level Lock์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฐ๊ธฐ ์์ ( INSERT, UPDATE, DELETE )์ ๋ํ ์๋๊ฐ ๋นจ๋ผ์
ํ์ง๋ง, ์ด๋ ๊ฒ ๋ง์ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํ๋ค ๋ณด๋ ๋ฐ์ดํฐ ๋ชจ๋ธ ๋์์ธ์ ๋ง์ ์๊ฐ์ด ํ์ํ๊ณ ์์คํ ์์์ ๋ง์ด ์ฌ์ฉํด์
์ธ๋ฑ์ค๋ฉด์์๋ full-text ์ธ๋ฑ์ฑ์ ์ง์ํ์ง ์๊ธฐ๋๋ฌธ์ ๊ฒ์ํ๊ณ ์ ํ๋ ๋ด์ฉ์ ๋ํ ๋ณตํฉ๊ฒ์์ด ๋ถ๊ฐ๋ฅํด์
์ด๋ฐ ํน์ง์ผ๋ก InnoDB๋ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ๊ฐ๋ ํ ์ด๋ธ( ์๋ฅผ ๋ค๋ฉด, ๋์ ๊ด๋ จ๋ ํ ์ด๋ธ ) ๊ฐฑ์ (์ฐ๊ธฐ) ์์ฃผ์ ํธ๋์ ์ ์ด ์๊ตฌ๋๋ ํ ์ด๋ธ์ ์ ํฉํด์
4. MyISAM vs InnoDB
๋ง์ง๋ง์ผ๋ก ํ๋ก ์ ๋ฆฌ
ํน์ง |
MyISAM |
InnoDB |
๊ตฌ์กฐ์ ๋ณต์ก์ฑ |
๊ฐ๋จ / ๋ฐ์ดํฐ ๋ชจ๋ธ ๋์์ธ ๋ํ ๊ฐ๋จ |
๋ณต์ก / ๋ฐ์ดํฐ ๋ชจ๋ธ ๋์์ธ ๋ํ ๋ณต์ก |
ํธ๋์ ์ |
์์ |
๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๋ณด์ฅ |
Locking-level |
Table-Level-Lock |
Row-Level -Lock |
๊ธฐ๋ฅ ์ง์ |
B-Tree, R-Tree, Full-text |
B-Tree, Clustered |
์ธ๋ํค ์ง์ |
์ง์ ์ ํจ |
์ง์ |