MySQL - ์ํคํ ์ฒ
MySQL ์ํคํ ์ฒ ๊ฐ์
MySQL ์ ์ ํด๋ผ์ด์ธํธ
- Mysql์ ๋๋ถ๋ถ ์ธ์ด์ ๋ํด ์ ์ API ์ ๊ณต + Shell
MySQL ์๋ฒ = MySQL ์์ง + ์คํ ๋ฆฌ์ง ์์ง
1. MySQL ์๋ฒ
์ค๋ ๋ ๊ธฐ๋ฐ ์๋ = Foreground Thread + BackGround Thread
- Foreground Thread(ํด๋ผ์ด์ธํธ ์ค๋ ๋)
- MySQL ์๋ฒ์ ์ ์๋ ํด๋ผ์ด์ธํธ์ ์๋งํผ ์กด์ฌ
- Foreground Thread๋ ๋ฐ์ดํฐ ๋ฒํผ๋ ์บ์๋ก๋ถํฐ ๊ฐ์ ธ
- BackGround Thread
2. MySQL ์์ง
ํด๋ผ์ด์ธํธ ์ ์, SQL ์์ฒญ, ์ฟผ๋ฆฌ ๋ถ์ ๋ฐ ์ต์ ํ ์ญํ
์๋ ๋ชจ๋๋ก ๊ตฌ์ฑ. ์์ธํ ๋ด์ฉ์ ๊ฐ ์์ง์ ์ํคํ ์ฒ์์ ์ค๋ช
- ์ฟผ๋ฆฌ ํ์
- ์ ์ฒ๋ฆฌ๊ธฐ
- ์ตํฐ๋ง์ด์
- ์คํ ์์ง
3. ์คํ ๋ฆฌ์ง ์์ง
๋ฐ์ดํฐ ์คํ ๋ฆฌ์ง์ ์ ์ฅ ๋ฐ ์ฝ์ด์ค๋ ์ญํ
4. ํธ๋ค๋ฌ API
MySQL ์์ง์์ ๋ฐ์ดํฐ๋ฅผ ์คํ ๋ฆฌ์ง ์์ง์์ Read, Write ์์ฒญ ์ ์ฌ์ฉํ๋ API
5. File System ๋ฐ File Logs
์ค์ ํ ์ด๋ธ ๋ฐ์ดํฐ ๋ฐ ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ํ์ผ๋ก ์ ์ฅํ๋ OS์ ํ์ผ ์์คํ ๋ฐ ํ๋์จ์ด
์ฟผ๋ฆฌ ์คํ ๊ณผ์
1. Query Cache
- SQL ์คํ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์บ์ฑํ๋ ์ญํ
- ๋์ผ SQL ์คํ ์ ์ด์ ๊ฒฐ๊ณผ ์ฆ์ ๋ฐํ
- ํ
์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์บ์ฑ๋ ๋ฐ์ดํฐ ์ญ์
- ์บ์ฑ๋ ๋ฐ์ดํฐ ์ญ์ ์๋ง๋ค ์์ ํ๋ ์ค๋ ๋์ Lock ๊ฑธ๋ฆผ. ๋์์ฒ๋ฆฌ ์ฑ๋ฅ ์ ํ ์ ๋ฐ
- MySQL 8.0๋ถํฐ Query Cache ์ ๊ฑฐ๋จ
2. Query Parser
SQL ๋ฌธ์ฅ์ ์๋ฏธ ์๋ ํ ํฐ์ผ๋ก ์ชผ๊ฐ์ ํธ๋ฆฌ๊ตฌ์กฐ(Parse Tree)๋ก ์์ฑ
์ด ๋จ๊ณ์์ ์ฟผ๋ฆฌ ๋ฌธ์ฅ์ ๊ธฐ๋ณธ ์ค๋ฅ ์ฒดํฌ
3. Preprocessor
parse tree๋ฅผ ๊ธฐ๋ฐ์ผ๋ก SQL์ ๋ฌธ์ฅ ๊ตฌ์กฐ๋ฅผ ์ฒดํฌ
parse tree์ ํ ํฐ์ด ์ ํจํ์ง ์ฒดํฌ
4. Optimizer
SQL ์คํ์ ์ต์ ํ์์ ์คํ ๊ณํ์ ์๋ฆฝ
์ตํฐ๋ง์ด์ ๊ฐ SQL์ ์ต์ ํํ๋ ๋ฐฉ๋ฒ
- ๊ท์น ๊ธฐ๋ฐ ์ต์ ํ
- Opmizer์ ๋ด์ฅ๋ ์ฐ์ ์์์ ๋ฐ๋ผ ์ ์๋ฅผ ์ฑ ์ ํ์ฌ ์คํ ๊ณํ ์๋ฆฝ
- ๋น์ฉ ๊ธฐ๋ฐ ์ต์ ํ
- SQL๋ฅผ ์ฒ๋ฆฌํ๋ ๋ค์ํ ๋ฐฉ๋ฒ ๋ง๋ จ ํ, ์์ ์ ๋น์ฉ๊ณผ ๋์ ํ ์ด๋ธ์ ํต๊ณ์ ๋ณด๋ฅผ ํ์ฉํด์ ์คํ๊ณํ ์๋ฆฝ
5. ์ฟผ๋ฆฌ ์คํ ์์ง
์ตํฐ๋ง์ด์ ๊ฐ ๋ง๋ ์คํ ๊ณํ๋๋ก ์คํ ๋ฆฌ์ง ์์ง(InnoDB or MyISAM)์ ํธ์ถํด์ ๋ ์ฝ๋๋ฅผ ์ฝ๊ณ ์
Handler API์ ์ํด ๋์
6. Storage Engine
์ฟผ๋ฆฌ ์คํ ์์ง์ด ์์ฒญํ๋ ๋๋ก ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ๋ก ์ฝ๊ณ ์ ์ฅ