MySQL ์๋ฒ
- MySQL ์์ง๊ณผ ์คํ ๋ฆฌ์ง ์์ง์ผ๋ก ๊ตฌ๋ถ
- ํ๋ก์ธ์ค ๊ธฐ๋ฐ์ด ์๋๋ผ ์ค๋ ๋ ๊ธฐ๋ฐ์ผ๋ก ์๋

Foreground Thread
- MySQL์ ์ฐ๊ฒฐ๋ ํด๋ผ์ด์ธํธ ์๋งํผ ์์ฑ๋๋ฉฐ ๊ฐ ํด๋ผ์ด์ธํธ์ ์ฟผ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ์ ์ข
๋ฃํ๋ฉด ์ค๋ ๋๋ ์ค๋ ๋ ์บ์๋ก ๋์๊ฐ๋ฉฐ, ์บ์ ํฌ๊ธฐ๋
thread_cache_size๋ก ์ ํ๋๋ค.- ์บ์์ ์ฌ์ ๊ฐ ์์ผ๋ฉด ์ค๋ ๋๋ ์ข ๋ฃ๋์ด ์บ์์๋ ์ค์ ๋ ๊ฐ์๋ง ์ ์ง๋๋ค.
- MySQL ๋ฒํผ๋ ์บ์์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ฉฐ, ์์ผ๋ฉด ๋์คํฌ์์ ์ง์ ์ฝ๋๋ค.
- MyISAM
- ๋์คํฌ ์ฐ๊ธฐ๊น์ง Foreground Thread๊ฐ ์ฒ๋ฆฌํ๋ค.
- InnoDB
- ๋ฒํผ/์บ์๊น์ง Foreground Thread๊ฐ ์ฒ๋ฆฌํ๊ณ , ๋์คํฌ ๊ธฐ๋ก์ Background Thread๊ฐ ๋ด๋นํ๋ค.
- MyISAM
Background Thread
- InnoDB๋ ์ฌ๋ฌ ์์
์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋๊ฐ ์ฒ๋ฆฌํ๋ค.
- Insert Buffer ๋ณํฉ
- ๋ก๊ทธ ๊ธฐ๋ก
- ๋ฒํผ ํ ๋ด์ฉ์ ๋์คํฌ์ ๊ธฐ๋ก(Write thread)
- ๋ฐ์ดํฐ๋ฅผ ๋ฒํผ๋ก ์ฝ์ด์ค๊ธฐ(Read thread)
- ์ ๊ธยท๋ฐ๋๋ฝ ๋ชจ๋ํฐ๋ง
- ์ด ์ค ํต์ฌ์ ๋ก๊ทธ ์ค๋ ๋(Log thread) ์ ์ฐ๊ธฐ ์ค๋ ๋(Write thread)
- ์ฝ๊ธฐ/์ฐ๊ธฐ ์ค๋ ๋ ๊ฐ์๋ฅผ ์ค์ ๊ฐ๋ฅ
innodb_write_io_threads,innodb_read_io_threads
- ์ฝ๊ธฐ๋ ์ง์ฐ๋ ์ ์์ง๋ง ์ฐ๊ธฐ๋ ์ง์ฐ ํ ์ผ๊ด ์ฒ๋ฆฌ(๋ฒํผ๋ง)๊ฐ ๊ฐ๋ฅํ๋ค.
- InnoDB๋ ์ด๋ฌํ ๋ฒํผ๋ง์ ์ง์ํด INSERT/UPDATE/DELETE ์ ์ฆ์ ๋์คํฌ ๊ธฐ๋ก์ ๊ธฐ๋ค๋ฆฌ์ง ์์๋ ๋จ.
- MyISAM์ ์ฌ์ฉ์ ์ค๋ ๋๊ฐ ์ฐ๊ธฐ๊น์ง ์ฒ๋ฆฌํ๋ฏ๋ก ๋ฒํผ๋ง์ ๊ฑฐ์ ํ์ฉํ ์ ์๋ค.
๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐ ์ฌ์ฉ ๊ตฌ์กฐ
- MySQL ์์คํ ๋ณ์๋ก ์ค์ ํด ๋ ๋งํผ ์ด์์ฒด์ ๋ก๋ถํฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ๋๋ค.
- ๊ธ๋ก๋ฒ ๋ฉ๋ชจ๋ฆฌ ์์ญ๊ณผ ๋ก์ปฌ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ผ๋ก ๊ตฌ๋ถ๋๋ค.
- ๊ธ๋ก๋ฒ ๋ฉ๋ชจ๋ฆฌ ์์ญ
- ์ฃผ๋ก Background Thread๊ฐ ์ฌ์ฉ
- ๋ก์ปฌ(์ธ์
) ๋ฉ๋ชจ๋ฆฌ ์์ญ
- ์ฃผ๋ก Client Thread๊ฐ ์ฌ์ฉ
- ๊ธ๋ก๋ฒ ๋ฉ๋ชจ๋ฆฌ ์์ญ

MySQL์ ์ฟผ๋ฆฌ ์คํ ๊ตฌ์กฐ
- ์ฟผ๋ฆฌ ํ์
- ์ฟผ๋ฆฌ๋ฅผ ํ ํฐ์ผ๋ก ๋ถ๋ฆฌํด ํธ๋ฆฌ ํํ์ ๊ตฌ์กฐ๋ก ๋ง๋ฌ
- ์ ์ฒ๋ฆฌ๊ธฐ
- ํ์ ํธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์กฐ์ ์ธ ๋ฌธ์ ์ ์ด ์๋ ์ง ํ์ธ
- ์ตํฐ๋ง์ด์
- DBMS์ ๋๋ ์ญํ , ์ ๋ ดํ ๋น์ฉ์ผ๋ก ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ง๋ฅผ ๊ฒฐ์
- ์คํ ์์ง
- ๋ง๋ค์ด์ง ๊ณํ๋๋ก ๊ฐ ํธ๋ค๋ฌ๋ค์ ์ฐ๊ฒฐํ๋ ์ญํ
InnoDB ์คํ ๋ฆฌ์ง ์์ง ์ํคํ ์ฒ
- ํ๋ผ์ด๋จธ๋ฆฌ ํค์ ์ํ ํด๋ฌ์คํฐ๋ง
- ์ธ๋ ํค ์ง์
- MVCC(Multi Version Concurrency Control)
- Non-Locking Consistent Read
- ์๋ ๋ฐ๋๋ฝ ๊ฐ์ง
- ์ ๊ธ ๋๊ธฐ ๋ชฉ๋ก์ ๊ทธ๋ํ(Wait-for List) ํํ๋ก ๊ด๋ฆฌ
- ๋ฐ๋๋ฝ ๊ฐ์ง ์ค๋ ๋๊ฐ ์ฃผ๊ธฐ์ ์ผ๋ก ์ฐพ์์ ๊ฐ์ ์ข
๋ฃ
- ๊ธฐ์ค : ํธ๋์ญ์ ์ ์ธ๋ ๋ก๊ทธ ์์ด ์ ์ ํธ๋์ญ์
- ๋ฐ๋๋ฝ ๊ฐ์ง ์ค๋ ๋๊ฐ ์ฃผ๊ธฐ์ ์ผ๋ก ์ฐพ์์ ๊ฐ์ ์ข
๋ฃ
- ์ ๊ธ ๋๊ธฐ ๋ชฉ๋ก์ ๊ทธ๋ํ(Wait-for List) ํํ๋ก ๊ด๋ฆฌ
- ์๋ํ๋ ์ฅ์ ๋ณต๊ตฌ
- MySQL ์๋ฒ๊ฐ ์์๋ ๋ ์๋ฃ๋์ง ๋ชปํ ํธ๋์ญ์ ์ด๋ ๋์คํฌ ์ผ๋ถ๋ง ๊ธฐ๋ก๋ ๋ฐ์ดํฐ ํ์ด์ง ๋ฑ์ ๋ํ ์ผ๋ จ์ ๋ณต๊ตฌ ์์ ์ด ์๋์ผ๋ก ์งํ
- InnoDB ๋ฒํผ ํ
- ๋์คํฌ์ ๋ฐ์ดํฐ ํ์ผ์ด๋ ์ธ๋ฑ์ค ์ ๋ณด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์บ์ํด ๋๋ ๊ณต๊ฐ
- ์ฐ๊ธฐ ์์ ์ ์ง์ฐ์์ผ ์ผ๊ด ์์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๊ฒ ํด์ฃผ๋ ๋ฒํผ ์ญํ
- Double Writer Buffer
- ์ ์์ ์ผ๋ก ๊ธฐ๋ก๋๋ฉด ํ์๊ฐ ์์ด์ง์ง๋ง ๊ธฐ๋ก๋๋ ๋์ค ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋์๋ค๋ฉด, ์ฌ์์๋ ๋ ํญ์ DoubleWrite Buffer์ ๋ด์ฉ๊ณผ ๋ฐ์ดํฐ ํ์ผ์ ํ์ด์ง๋ค์ ๋ชจ๋ ๋น๊ตํด์ ๋ณต์ฌํ๋ค.
- Undo Log
- ํธ๋์ญ์ ๊ณผ ๊ฒฉ๋ฆฌ ์์ค์ ๋ณด์ฅํ๊ธฐ ์ํด DML๋ก ๋ณ๊ฒฝ๋๊ธฐ ์ด์ ๋ฒ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๋๋ก ๋ฐฑ์ ํ๋ค.
- Change Buffer
- ๋ณ๊ฒฝํด์ผํ ์ธ๋ฑ์ค ํ์ด์ง๊ฐ ๋ฒํผ ํ์ ์์ผ๋ฉด ๋ฐ๋ก ์
๋ฐ์ดํธ๋ฅผ ์ํํ์ง๋ง ๊ทธ๋ ์ง ์๊ณ ๋์คํฌ๋ก๋ถํฐ ์ฝ์ด์์ ์
๋ฐ์ดํธ ํด์ผ ํ๋ค๋ฉด ์์ ๊ณต๊ฐ์ ์ ์ฅํด ๋๊ณ ๋ฐ๋ก ์ฌ์ฉ์์๊ฒ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ํํ๋ก ์ฑ๋ฅ์ ํฅ์์ํค๊ฒ ๋๋๋ฐ ์ด๋ ์์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ Change Buffer ๋ผ๊ณ ํ๋ค.
- Change Buffer๋ ์ถํ Backgroud Thread์ ์ํด merge thread ๋๋ค.
- ์ฌ์ฉ์์๊ฒ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ฌํ๊ธฐ ์ ์ ๋ฐ๋์ ์ค๋ณต ์ฌ๋ถ๋ฅผ ์ฒดํฌํด์ผ ํ๋ ์ ๋ํฌ ์ธ๋ฑ์ค๋ Change Buffer ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- ๋ณ๊ฒฝํด์ผํ ์ธ๋ฑ์ค ํ์ด์ง๊ฐ ๋ฒํผ ํ์ ์์ผ๋ฉด ๋ฐ๋ก ์
๋ฐ์ดํธ๋ฅผ ์ํํ์ง๋ง ๊ทธ๋ ์ง ์๊ณ ๋์คํฌ๋ก๋ถํฐ ์ฝ์ด์์ ์
๋ฐ์ดํธ ํด์ผ ํ๋ค๋ฉด ์์ ๊ณต๊ฐ์ ์ ์ฅํด ๋๊ณ ๋ฐ๋ก ์ฌ์ฉ์์๊ฒ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ํํ๋ก ์ฑ๋ฅ์ ํฅ์์ํค๊ฒ ๋๋๋ฐ ์ด๋ ์์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ Change Buffer ๋ผ๊ณ ํ๋ค.
- Redo Log ๋ฐ Log Buffer
- Adaptive Hash Index
- InnoDB ์คํ ๋ฆฌ์ง ์์ง์์ ์ฌ์ฉ์๊ฐ ์์ฃผ ์์ฒญํ๋ ๋ฐ์ดํฐ์ ๋ํด ์๋์ผ๋ก ์์ฑํ๋ ์ธ๋ฑ์ค