1) MySQL ์ํคํ ์ฒ
- ์ ๊ทธ๋ฆผ์ฒ๋ผ MySQL ์๋ฒ๋ ํฌ๊ฒ MySQL ์์ง๊ณผ ์คํ ๋ฆฌ์ง ์์ง์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
(1) MySQL ์์ง
- MySQL ์์ง์ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์์ฒญ๋ SQL ๋ฌธ์ฅ์ ๋ถ์ํ๊ฑฐ๋ ์ต์ ํํ์ฌ ์ฒ๋ฆฌํ๋ ์ญํ ์ ๋ด๋นํ๋ฉฐ MySQL ์์ง์ ๊ตฌ์ฑํ๋ ๊ฐ๊ฐ์ ์์๋ ์๋์ ๊ฐ๋ค.
โ Connection Handler
- ์ปค๋ฅ์ ๋ฐ ์ฟผ๋ฆฌ ์์ฒญ์ ์ฒ๋ฆฌ ๋ด๋น
โก SQL ์ธํฐํ์ด์ค
- DML, DDL, Procedure, View ๋ฑ SQL ์ธํฐํ์ด์ค ์ ๊ณต ๋ด๋น
โข SQL ํ์ (Parser)
- SQL ๋ฌธ๋ฒ ์ค๋ฅ ํ์ง ๋ฐ SQL ์ฟผ๋ฆฌ ๋ฌธ์ฅ์ MySQL์ด ์ฒ๋ฆฌํ๊ธฐ ์ข์ ํ ํฐ ๋จ์๋ก ๋๋ ์ ํธ๋ฆฌ ํํ๋ก ํ์ฑ ํ๋ ์์ ๋ด๋น
โฃ SQL ์ตํฐ๋ง์ด์ (Optimizer)
- ์ฟผ๋ฆฌ์ ์ต์ ํ๋ ์คํ ๋ด๋น
โค ์บ์์ ๋ฒํผ
- ์ฑ๋ฅ ํฅ์์ ์ํ ๋ณด์กฐ ์ ์ฅ์ ๊ธฐ๋ฅ ๋ด๋น
→ MySQL์ ํ์ค SQL(ANSI SQL) ๋ฌธ๋ฒ์ ์ง์ํ์ฌ, ํ์ค ๋ฌธ๋ฒ์ ๋ฐ๋ผ ์์ฑ๋ ์ฟผ๋ฆฌ๋ ํ DBMS์ ํธํ๋์ด ์คํ๋ ์ ์๋ค.
(2) ์คํ ๋ฆฌ์ง ์์ง
- ์คํ ๋ฆฌ์ง ์์ง์ ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ ์คํ ๋ฆฌ์ง์ ์ ์ฅํ๊ฑฐ๋ ์กฐํํ๋ ๋ถ๋ถ์ ๋ด๋นํ๋ค.
- MySQL ์์ง๊ณผ ํ๋ฌ๊ทธ์ธ ํํ๋ก ์ฐ๋ / ๋ถ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ฉฐ, MySQL ์์ง์์ ํธ๋ค๋ฌ API๋ฅผ ํตํด ์คํ ๋ฆฌ์ง ์์ง์ Read / Write ์์ฒญ์ด ๊ฐ๋ฅํ๋ค
- ์คํ ๋ฆฌ์ง ์์ง์ ์ฌ๋ฌ ๊ฐ๋ฅผ ๋์์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ (๊ฐ ํ ์ด๋ธ๋ง๋ค ๋ค๋ฅธ ์คํ ๋ฆฌ์ง ์์ง ์ฌ์ฉ ๊ฐ๋ฅ) ์ฑ๋ฅ ํฅ์์ ์ํด ํค ์บ์ (MyISAM), ๋ฒํผ ํ (InnoDB) ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- MySQL์์๋ ๋ค์ํ ์คํ ๋ฆฌ์ง ์์ง์ ์ง์ํ๋ ๋ํ์ ์ผ๋ก ์์์ผ ํ 2๊ฐ์ง ์์ง์ ๋ํด ์์๋ณด์!
โ MyISAM ์์ง
- MySQL 5.5 ์ด์ ๋ฒ์ ๊น์ง ์ฌ์ฉ๋์๋ ๊ธฐ๋ณธ ์คํ ๋ฆฌ์ง ์์ง์ด๋ค.
- ์ปค๋ฐ, ๋กค๋ฐฑ ๋ฐ ์ถฉ๋ ๋ณต๊ตฌ ๊ธฐ๋ฅ + Table-Level์ Lock์ ์ ๊ณตํ์ง๋ง ํธ๋์ญ์ ์ ์ ๊ณต๋์ง ์๋๋ค.
- ๋ฐ์ดํฐ๋ฅผ ๋งค์ฐ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ธฐ์ ์ ์ฒด์ ์ธ ์๋๊ฐ InnoDB ์์ง๋ณด๋ค ๋น ๋ฅด์ง๋ง Table-Level์ Lock์ ์ฌ์ฉํ์ฌ ๊ฐฑ์ ์์ ์๋๊ฐ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ Write ์์ ์ด ์๋ Select ์์ฃผ์ ํ ์ด๋ธ์ ์ ํฉํ ์์ง์ด๋ค.
- ๋ํ, ํธ๋์ญ์ ์ด ์ ๊ณต๋์ง ์์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ํ ๋ณด์ฅ์ด ์ด๋ ต๋ค.
โก InnoDB ์์ง
- MySQL 5.5 ๋ฒ์ ์ดํ๋ถํฐ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ์คํ ๋ฆฌ์ง ์์ง์ด๋ค.
- ์ปค๋ฐ, ๋กค๋ฐฑ ๋ฐ ์ถฉ๋ ๋ณต๊ตฌ ๊ธฐ๋ฅ + Row-Level์ Lock์ ์ ๊ณตํ๋ฉฐ MyISAM๊ณผ๋ ๋ค๋ฅด๊ฒ ํธ๋์ญ์ ์ ์ ๊ณตํ๋ค.
- Row-Level์ Lock์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ MyISAM ์์ง๋ณด๋ค ๊ฐฑ์ ์์ ์๋๊ฐ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ Write ์์ ์ด ๋ง์ ๊ฐฑ์ ์์ฃผ์ ํ ์ด๋ธ์ ์ ํฉํ๋ค
- MVCC ๊ธฐ๋ฅ์ ์ง์ํ์ฌ ๋ฐ์ด๋ ๋์์ฑ์ ์ ๊ณตํ๋ค.
- ๋ํ, ํธ๋์ญ์ ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๋ค.
[์ฐธ๊ณ ] Query ์คํ ์์
โ Query Parser
- ์ฌ์ฉ์ ์์ฒญ์ผ๋ก ๋ค์ด์จ ์ฟผ๋ฆฌ ๋ฌธ์ฅ์ ํ ํฐ์ผ๋ก ๋ถํดํด ํธ๋ฆฌ ํํ์ ๊ตฌ์กฐ๋ก ๋ง๋๋ ์์ ์ ํ๋ค.
- ํ ํฐ์ด๋ MySQL์ด ์ธ์ํ ์ ์๋ ์ต์ ๋จ์์ ์ดํ๋ ๊ธฐํธ๋ฅผ ์๋ฏธํ๋ฉฐ, ์ฟผ๋ฆฌ ๋ฌธ์ฅ์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ ์ค๋ฅ๋ฅผ ๊ฑธ๋ฌ ์ฌ์ฉ์์๊ฒ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๋ ๋จ๊ณ์ด๋ค.
โก ์ ์ฒ๋ฆฌ๊ธฐ
- ํ์ ๊ณผ์ ์์ ๋ง๋ค์ด์ง ํ์ ํธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฟผ๋ฆฌ ๋ฌธ์ฅ์ ๊ตฌ์กฐ์ ์ธ ๋ฌธ์ ๊ฐ ์๋์ง ํ์ธํ๋ค.
- ๊ฐ ํ ํฐ์ ํ ์ด๋ธ ์ด๋ฆ, ์นผ๋ผ ์ด๋ฆ, ๋ด์ฅ ํจ์ ๊ฐ์ ๊ฐ์ฒด์ ๋งคํํด ํด๋น ๊ฐ์ฒด์ ์กด์ฌ ์ฌ๋ถ์ ๊ฐ์ฒด ์ ๊ทผ ๊ถํ ๋ฑ์ ํ์ธํ๋ฉฐ, ์กด์ฌํ์ง ์๊ฑฐ๋ ๊ถํ์ ์ฌ์ฉํ ์ ์๋ ๊ฐ์ฒด์ ํ ํฐ์ด ๊ฑธ๋ฌ์ง๋ ๋จ๊ณ์ด๋ค.
โข ์ตํฐ๋ง์ด์
- ์ฌ์ฉ์ ์์ฒญ์ผ๋ก ๋ค์ด์จ ์ฟผ๋ฆฌ ๋ฌธ์ฅ์ ์ ๋ ดํ ๋น์ฉ์ผ๋ก ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ง ๊ฒฐ์ ํ๋ ์ญํ ์ ๋ด๋นํ๋ค.
โฃ ์คํ ์์ง
- ๋ง๋ค์ด์ง ๊ณํ๋๋ก ๊ฐ ํธ๋ค๋ฌ์๊ฒ ์์ฒญํด์ ๋ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ ๋ค๋ฅธ ํธ๋ค๋ฌ ์์ฒญ์ ์ ๋ ฅ์ผ๋ก ์ฐ๊ฒฐํ๋ ์ญํ ์ ์ํํ๋ค.
โค ํธ๋ค๋ฌ (์คํ ๋ฆฌ์ง ์์ง)
- MySQL ์๋ฒ ๊ฐ์ฅ ๋ฐ๋จ์์ MySQL ์คํ ์์ง์ ์์ฒญ์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ๋ก ์ ์ฅํ๊ณ ๋์คํฌ๋ก๋ถํฐ ์ฝ์ด ์ค๋ ์ญํ ์ ๋ด๋นํ๋ค.
[Reference]
๋ฐ์ํ
'๐จโ๐ป Back End > MySQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
DB Lock ์ฌํ (์ด๋ ค์ด ๋ถ๋ถ์ด ๋๋ฌด ๋ง์....์์ฑ์ค....) (0) | 2023.07.30 |
---|---|
DB Lock ๊ธฐ์ด (0) | 2023.07.30 |
ํธ๋์ญ์ ๊ฒฉ๋ฆฌ์ฑ ์์ค (0) | 2023.07.25 |
ํธ๋์ญ์ (Transaction) (0) | 2023.07.22 |
๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด (0) | 2023.07.22 |