๐ก InnoDB๋ MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
์์ ์ฌ์ฉ๋๋ ์คํ ๋ฆฌ์ง ์์ง(Storage Engine) ์ค ํ๋์ด๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง์ด๋?
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ, ๊ด๋ฆฌ ๋ฐ ๊ฒ์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ํต์ฌ ๊ตฌ์ฑ ์์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ
(DBMS) ๋ด๋ถ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ, ๊ด๋ฆฌ, ๊ฒ์ ๋ฐ ์ฒ๋ฆฌ(CRUD ์ฐธ์กฐ)ํ๋ ํต์ฌ ์ํํธ์จ์ด ๊ตฌ์ฑ ์์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง์ ์กฐ์ํ ๋ DBMS ๊ณ ์ ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ ํฌํธ ๋ฒํธ๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ด ์์
- ๋๋ถ๋ถ DBMS๋ ๊ณ ์ ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ํตํ์ง ์๊ณ , ์ฌ์ฉ์๊ฐ ๋ด์ฅ๋ ์์ง๊ณผ ์ํธ์์ฉ ํ ์ ์๋ ์์ ๋ง์ API๋ฅผ ํฌํจ
์ฌ์ฉ ์ด์
- ๋์ฉ๋์ ๋ฐ์ดํฐ๋ฅผ ์ปจํธ๋กคํ๋ ๊ฒฝ์ฐ
- ํธ๋์ญ์
๊ด๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ
- ๋ณต๊ตฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ
- ์ ๋ ฌ๋ฑ์ ๊ตฌ๋ฌธ์ด ๋ค์ด๊ฐ๋ ๊ฒฝ์ฐ
- IUD ๋ฑ์ด ๋น๋ฒํ๊ฒ ๋ฐ์ํ๋ ๊ฒฝ์ฐ
- ๋์ ํผํฌ๋จผ์ค๊ฐ ํ์ํ ๋์ฉ๋ ์ฌ์ดํธ์ ์ ํฉ
InnoDB์ ํน์ง
- ํธ๋์ญ์
์ง์
- ์ธ๋ ํค ์ ์ฝ ์กฐ๊ฑด - ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๊ฐํ
: ์ธ๋ ํค๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์์ ๋ค๋ฅธ ํ
์ด๋ธ๊ณผ์ ๊ด๊ณ๋ฅผ ์ ์ํ๊ณ ์ ์งํ ์ ์์ต๋๋ค.
- ํ ๋จ์ ์ ๊ธ(Row-Level Locking) - ๋์์ฑ ์ ์ด ๊ฐ๋ฅ
- ์ฌ๋ฌ ํด๋ผ์ด์ธํธ๊ฐ ๋์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ธ ์ ์๊ฒ ํฉ๋๋ค.
- ๋ณ๊ฒฝ ์์
(INSERT, UPDATE, DELETE)์ ์๋๊ฐ ๋น ๋ฆ
- MVCC(Multi Versioning Concurrency Control) ๊ตฌ์กฐ๋ก ๋์
: ํธ๋์ญ์
๊ฐ์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ ์งํ๋ฉด์ ๋์์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ ์ ์๊ฒ ํฉ๋๋ค.
๋จ์
- ๋ณต๊ตฌ ๋ฐฉ๋ฒ ์ด๋ ค์
- Dead lock ๋ฐ์ ๊ฐ๋ฅ์ฑ ์์
- ์ฌ๋ฌ๊ธฐ๋ฅ์ด ์กด์ฌํ๋ฏ๋ก ๋ชจ๋ธ ๋์์ธ ์๊ฐโ
- ์์คํ
์์์ ๋ง์ด ์ฐจ์งํจ
- Full-text ์ธ๋ฑ์ฑ์ด ๋ถ๊ฐ๋ฅ
โ ๏ธ InnoDB ์ฌ์ฉ ์ ์ฃผ์ ์ฌํญ
- ํ
์ด๋ธ ์ปฌ๋ผ ์๋ ์ต๋ 1000๊ฐ
- Key์ ์ต๋ ๊ธธ์ด๋ 3500byte์ด์ง๋ง, MySQL์์ 1024byte๋ก ์ ํ
- LongBlob, LongText ์ปฌ๋ผ์ ์ต๋ 4GB ์ดํ
- InnoDB๋ ๋ด๋ถ์ ์ผ๋ก 65,535byte row-size๋ฅผ ์ง์ํ์ง๋ง, 65,535 ์ด์์ varchar๋ฅผ ํฌํจํ ์นผ๋ผ์ ์ ์ํ ์ ์๋ค.