MySQL ์๋ฒ๋ ํฌ๊ฒ ๋จธ๋ฆฌ ์ญํ ์ ํ๋ MYSQL ์์ง๊ณผ ์๋ฐ ์ญํ ์ ๋ด๋นํ๋ ์คํ ๋ฆฌ์ง ์์ง์ผ๋ก ๊ตฌ์ฑ๋๋ค. ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณต๋๋ ์คํ ๋ฆฌ์ง ์์ง์ผ๋ก๋ InnoDB๊ณผ MyISAM ๋ฑ์ด ์๊ณ , ํธ๋ค๋ฌ API๋ฅผ ๋ง์กฑํ๋ฉด ๋๊ตฌ๋ ์ง ์คํ ๋ฆฌ์ง ์์ง์ ์ถ๊ฐํ์ฌ MYSQL ์๋ฒ์ ์ถ๊ฐํ ์ ์๋ค.
1. MYSQL ์ ์ฒด ๊ตฌ์กฐ
MySQL ๊ณ ์ ์ C API๋ถํฐ JDBC๋ ODBC, ๊ทธ๋ฆฌ๊ณ .NET์ ํ์ค ๋๋ผ์ด๋ฒ๋ฅผ ์ ๊ณตํ๋ฉฐ,
์ด๋ฌํ ๋๋ผ์ด๋ฒ๋ฅผ ์ด์ฉํ์ฌ C/C++, PHP, ์๋ฐ, ํ, ํ์ด์ฌ, ๋ฃจ๋น, .NET ๋ฑ ๋ชจ๋ ์ธ์ด๋ก MYSQL ์๋ฒ์์ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ์ง์ํ๋ค.
MySQL ์์ง
- Client๋ก๋ถํฐ์ ์ ์ ๋ฐ ์ฟผ๋ฆฌ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ปค๋ฅ์ ํธ๋ค๋ฌ
- SQL ํ์ ๋ฐ ์ ์ฒ๋ฆฌ๊ธฐ
- ์ฟผ๋ฆฌ์ ์ต์ ํ๋ ์คํ์ ์ํ ์ตํฐ๋ง์ด์
์ ๊ตฌ์ฑ์์๊ฐ MySQL ์์ง์ ์ค์ฌ์ ์ด๋ฃฌ๋ค.
MySQL์ ํ์ค SQL ๋ฌธ๋ฒ์ ์ง์ํ๊ธฐ ๋๋ฌธ์ ํ์ค ๋ฌธ๋ฒ์ ๋ฐ๋ผ ์์ฑ๋ ์ฟผ๋ฆฌ๋ ๋ค๋ฅธ DBMS์ ํธํ๋๋ฉฐ,
MySQL ์์ง์ ์์ฒญ๋ SQL ๋ฌธ์ฅ์ ๋ถ์ํ๊ฑฐ๋ ์ต์ ํํ๋ ๋ฑ DBMS์ ๋๋์ ๊ฐ์ ์ญํ ์ ํ๋ฉฐ MYSQL ์๋ฒ์์ ๋จ ํ๋๋ง ์กด์ฌํ๋ค.
์คํ ๋ฆฌ์ง ์์ง
์ค์ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ ์คํ ๋ฆฌ์ง์ ์ ์ฅํ๊ฑฐ๋ ๋์คํฌ ์คํ ๋ฆฌ์ง๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ ๋ถ๋ถ์ ์คํ ๋ฆฌ์ง ์์ง์ด ์ ๋ดํ๋ค.
MySQL ์์ง๊ณผ๋ ๋ค๋ฅด๊ฒ ์ฌ๋ฌ๊ฐ์ ์คํ ๋ฆฌ์ง ์์ง์ ๋์์ ์ฌ์ฉํ ์ ์๋ค.
์๋์ ๊ฐ์ด ํด๋น ํ ์ด๋ธ์ด ์ฌ์ฉํ ์คํ ๋ฆฌ์ง ์์ง์ ์ง์ ํ๋ฉด ์ดํ ํ ์ด๋ธ์ ๋ชจ๋ ์ฝ๊ธฐ ์์ ์ด๋ ๋ณ๊ฒฝ ์์ ์ ์ ์๋ ์คํ ๋ฆฌ์ง ์์ง์ด ์ฒ๋ฆฌํ๋ค.
CREATE TABLE member (age INT) ENGINE=INNODB;
๊ฐ ์คํ ๋ฆฌ์ง ์์ง์ ์ฑ๋ฅ ํฅ์์ ์ํด ์๋์ ๊ฐ์ ๊ธฐ๋ฅ์ ๋ด์ฅํ๊ณ ์๋ค.
- MyISAM: ํค ์บ์
- InnoDB: ๋ฒํผ ํ
ํธ๋ค๋ฌ API
MYSQL ์์ง์ ์ฟผ๋ฆฌ ์คํ๊ธฐ์์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฑฐ๋ ์ฝ์ด์ผ ํ ๋๋ ๊ฐ ์คํ ๋ฆฌ์ง ์์ง์ ์ฐ๊ธฐ ๋๋ ์ฝ๊ธฐ๋ฅผ ์์ฒญํ๋๋ฐ,
์ด๋ฅผ Handler ์์ฒญ์ด๋ผ ํ๋ค. ์ด๋ ์ฌ์ฉ๋๋ API๋ฅผ Handler API๋ผ๊ณ ํ๋ค.
์ ๋ฆฌํ์๋ฉด, ์ด ํธ๋ค๋ฌ API๋ฅผ ํตํด ์คํ ๋ฆฌ์ง ์์ง์ด MYSQL ์์ง๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ด๋ค.
2. MySQL ์ค๋ ๋ฉ ๊ตฌ์กฐ
MySQL ์๋ฒ๋ Process ๊ธฐ๋ฐ์ด ์๋๋ผ Thread ๊ธฐ๋ฐ์ผ๋ก ์๋ํ๋ฉฐ, Foreground Thread์ Background Thread ๋ก ๊ตฌ๋ถํ ์ ์๋ค.
Foreground ์ค๋ ๋ (ํด๋ผ์ด์ธํธ ์ค๋ ๋)
Foreground ์ค๋ ๋๋ ์ต์ํ MySQL ์๋ฒ์ ์ ์๋ ํด๋ผ์ด์ธํธ์ ์๋งํผ ์กด์ฌํ๋ฉฐ, ์ฃผ๋ก ๊ฐ ํด๋ผ์ด์ธํธ ์ฌ์ฉ์๊ฐ ์์ฒญํ๋ ์ฟผ๋ฆฌ ๋ฌธ์ฅ์ ์ฒ๋ฆฌํ๋ค. ํด๋ผ์ด์ธํธ ์ฌ์ฉ์๊ฐ ์์
์ ๋ง์น๊ณ ์ปค๋ฅ์
์ ์ข
๋ฃํ๋ฉด ํด๋น ์ปค๋ฅ์
์ ๋ด๋นํ๋ ์ค๋ ๋๋ ๋ค์ ์ค๋ ๋ ์บ์๋ก ๋๋์๊ฐ๋ค.
์ด๋ ์ด๋ฏธ ์ค๋ ๋ ์บ์์ ์ผ์ ๊ฐ์ ์ด์์ ์ค๋ ๋๊ฐ ๋๊ธฐ์ค์ด๋ฉด ์บ์์ ๋ฃ์ง ์๊ณ ์ค๋ ๋๋ฅผ ์ข
๋ฃ์์ผ ์ผ์ ๊ฐ์๋ฅผ ์ ์งํ๋ค.
ํฌ๊ทธ๋ผ์ด๋ ์ค๋ ๋๋ ๋ฐ์ดํฐ๋ฅผ MySQL์ ๋ฐ์ดํฐ ๋ฒํผ๋ ์บ์๋ก๋ถํฐ ๊ฐ์ ธ์ค๋ฉฐ, ๋ฒํผ๋ ์บ์์ ์๋ ๊ฒฝ์ฐ์๋ ์ง์ ๋์คํฌ์ ๋ฐ์ดํฐ๋ ์ธ๋ฑ์ค ํ์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์์ ์์ ์ ์ฒ๋ฆฌํ๋ค.
MyISAM ํ
์ด๋ธ์ ๋์คํฌ ์ฐ๊ธฐ ์์
๊น์ง ํฌ๊ทธ๋ผ์ด๋ ์ค๋ ๋๊ฐ ์ฒ๋ฆฌํ์ง๋ง,
InnoDB ํ
์ด๋ธ์ ๋ฐ์ดํฐ ๋ฒํผ๋ ์บ์๊น์ง๋ง ํฌ๊ทธ๋ผ์ด๋ ์ค๋ ๋๊ฐ ์ฒ๋ฆฌํ๊ณ , ๋๋จธ์ง ๋ฒํผ๋ก๋ถํฐ ๋์คํฌ๊น์ง ๊ธฐ๋กํ๋ ์์
์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋๊ฐ ์ฒ๋ฆฌํ๋ค.
Background ์ค๋ ๋
InnoDB์ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ์ฌ๋ฌ ๊ฐ์ง ์์ ์ด ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์ฒ๋ฆฌ๋๋ค.
- Insert Buffer๋ฅผ ๋ณํฉํ๋ ์ค๋ ๋
- ๋ก๊ทธ๋ฅผ Disk๋ก ๊ธฐ๋กํ๋ ์ค๋ ๋
- InnoDB Buffer Pool์ ๋ฐ์ดํฐ๋ฅผ Disk์ ๊ธฐ๋กํ๋ ์ค๋ ๋
- ๋ฐ์ดํฐ๋ฅผ ๋ฒํผ๋ก ์ฝ์ด ์ค๋ ์ค๋ ๋
- ์ ๊ธ์ด๋ ๋ฐ๋๋ฝ์ ๋ชจ๋ํฐ๋งํ๋ ์ค๋ ๋
๊ฐ์ฅ ์ค์ํ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋๋ Log Thread์ Write Thread์ด๋ค.
InnoDB์์๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ์์
์ ์ฃผ๋ก Foreground Thread์์ ์ฒ๋ฆฌ๋๊ธฐ ๋๋ฌธ์ ์ฝ๊ธฐ ์ค๋ ๋๋ ๋ง์ด ์ค์ ํ ํ์๊ฐ ์์ง๋ง,
Write Thread์ ๊ฒฝ์ฐ ์์ฃผ ๋ง์ ์์
์ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ธ ๋ด์ฅ ๋์คํฌ๋ฅผ ์ฌ์ฉํ ๋๋ 2~4 ์ ๋๋ฅผ ์ค์ ํ๊ณ , DAS๋ SAN๊ณผ ๊ฐ์ ์คํ ๋ฆฌ์ง๋ฅผ ์ด์ฉํ ๋๋ ๋์คํฌ๋ฅผ ์ต์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ ๋งํผ ์ถฉ๋ถํ ์ค์ ํ๋๊ฒ ์ข๋ค.
์ฌ์ฉ์์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋์ค ๋ฐ์ดํฐ์ ์ฐ๊ธฐ ์์
์ ์ง์ฐ(๋ฒํผ๋ง)๋์ด ์ฒ๋ฆฌ๋ ์ ์์ง๋ง ๋ฐ์ดํฐ์ ์ฝ๊ธฐ ์์
์ ์ ๋ ์ง์ฐ๋ ์ ์๋ค.
๊ทธ๋์ ์ผ๋ฐ์ ์ธ ์์ฉ DBMS์์๋ ๋๋ถ๋ถ ์ฐ๊ธฐ ์์
์ ๋ฒํผ๋งํด์ ์ผ๊ด ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฅ์ด ํ์ฌ๋์ด ์๊ณ InnoDB๋ ๊ทธ๋ ๊ฒ ๋์ํ๋ค.
ํ์ง๋ง, MyISAM์ ๊ทธ๋ ์ง ์๊ณ ์ฌ์ฉ์ ์ค๋ ๋๊ฐ ์ฐ๊ธฐ ์์
๊น์ง ํจ๊ป ์ฒ๋ฆฌํ๋๋ก ์ค๊ณ๋์ด ์๋ค.
๋ฐ๋ผ์, InnoDB๋ INSERT, UPDATE, DELETE ์ฟผ๋ฆฌ์ ๋ํด์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๊ฐ ๋์คํฌ์ ์ ์ฅ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์์๋ ๋์ง๋ง MyISAM์ ๊ฒฝ์ฐ์๋ ์ฐ๊ธฐ ๋ฒํผ๋ง ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ด์ ๋๊ธฐํด์ผ ํ๋ค.
3. ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐ ์ฌ์ฉ ๊ตฌ์กฐ
MySQL์์ ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํฌ๊ฒ ๊ธ๋ก๋ฒ ๋ฉ๋ชจ๋ฆฌ ์์ญ๊ณผ ๋ก์ปฌ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ผ๋ก ๊ตฌ๋ถ๋๋ค.
๊ธ๋ก๋ฒ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ MySQL ์๋ฒ๊ฐ ์์๋๋ฉด์ OS๋ก๋ถํฐ ํ ๋น๋๋ค.
๊ธ๋ก๋ฒ ๋ฉ๋ชจ๋ฆฌ ์์ญ๊ณผ ๋ก์ปฌ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ MySQL ์๋ฒ ๋ด์ ์กด์ฌํ๋ ๋ง์ ์ค๋ ๋๊ฐ ๊ณต์ ํด์ ์ฌ์ฉํ๋ ๊ณต๊ฐ์ธ์ง ์ฌ๋ถ์ ๋ฐ๋ผ ๊ตฌ๋ถ๋๋ค.
๊ธ๋ก๋ฒ ๋ฉ๋ชจ๋ฆฌ ์์ญ
์ผ๋ฐ์ ์ผ๋ก ํฌ๊ทธ๋ผ์ด๋ ์ค๋ ๋์ ์์ ๋ฌด๊ดํ๊ฒ ํ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ๋ง ํ ๋น๋๋ค. ํ์์ ๋ฐ๋ผ 2๊ฐ์ด์์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋น๋ฐ์ ์ ์์ง๋ง ํฌ๊ทธ๋ผ์ด๋ ์ค๋ ๋์๋ ๋ฌด๊ดํ๋ฉฐ ์์ฑ๋ ๊ธ๋ก๋ฒ ์์ญ์ด ์ฌ๋ฌ๊ฐ๋๋ผ๋ ๋ชจ๋ ์ค๋ ๋์ ์ํด ๊ณต์ ๋๋ค.
๊ธ๋ก๋ฒ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ข
๋ฅ๋ ์๋์ ๊ฐ๋ค.
- ํ ์ด๋ธ ์บ์
- InnoDB ๋ฒํผ ํ
- InnoDB ์ด๋ํฐ๋ธ ํด์ ์ธ๋ฑ์ค
- InnoDB ๋ฆฌ๋ ๋ก๊ทธ ๋ฒํผ
๋ก์ปฌ ๋ฉ๋ชจ๋ฆฌ ์์ญ
์ธ์
๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ผ๊ณ ๋ ํํํ๋ฉฐ, MySQL ์๋ฒ์์ ์กด์ฌํ๋ ํด๋ผ์ด์ธํธ ์ค๋ ๋๊ฐ ์ฟผ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ค.
ํด๋ผ์ด์ธํธ๊ฐ MySQL ์๋ฒ์ ์ ์ํ๋ฉด ์๋ฒ๋ด์์๋ ํด๋ผ์ด์ธํธ ์ปค๋ฅ์
์ผ๋ก๋ถํฐ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ํด๋ผ์ด์ธํธ ์ค๋ ๋๋ฅผ ํ๋์ฉ ํ ๋นํ๊ฒ ๋๋๋ฐ, ํด๋ผ์ด์ธํธ ์ค๋ ๋๊ฐ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํด๋ผ์ด์ธํธ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ผ๊ณ ํ๋ค. ํด๋ผ์ด์ธํธ์ MySQL ์๋ฒ์์ ์ปค๋ฅ์
์ ์ธ์
์ด๋ผ๊ณ ํ๊ธฐ ๋๋ฌธ์ ๋ก์ปฌ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ธ์
๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ผ๊ณ ๋ ํ๋ค.
๋ก์ปฌ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ฐ ํด๋ผ์ด์ธํธ ์ค๋ ๋๋ณ๋ก ๋ ๋ฆฝ์ ์ผ๋ก ํ ๋น๋๋ฉฐ ์ ๋ ๊ณต์ ๋์ง ์๋๋ค๋ ํน์ฑ์ด ์๋ค. ๋ ๋ค๋ฅธ ํน์ง์ผ๋ก๋ ๊ฐ ์ฟผ๋ฆฌ์ ์ฉ๋๋ณ๋ก ํ์ํ ๋๋ง ๊ณต๊ฐ์ด ํ ๋น๋๊ณ ํ์ํ์ง ์์ ๊ฒฝ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํ์ง ์์ ์ ์๋ค. ์ปค๋ฅ์ ๋ฒํผ์ ๊ฒฐ๊ณผ ๋ฒํผ๋ ์ปค๋ฅ์ ์ด ์ด๋ ค์๋ ๋์ ๊ณ์ ํ ๋น๋ ์ํ์ด์ง๋ง, ์ํธ ๋ฒํผ๋ ์กฐ์ธ ๋ฒํผ๋ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ์๊ฐ์๋ง ํ ๋นํ๋ค๊ฐ ๋ค์ ํด์ ํ๋ค.
๋ก์ปฌ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ข ๋ฅ๋ ์๋์ ๊ฐ๋ค.
- ์ ๋ ฌ ๋ฒํผ
- ์กฐ์ธ ๋ฒํผ
- ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ ์บ์
- ๋คํธ์ํฌ ๋ฒํผ
4. ํ๋ฌ๊ทธ์ธ ์คํ ๋ฆฌ์ง ์์ง ๋ชจ๋ธ
์๋ง์ ์ฌ์ฉ์์ ์๊ตฌ ์กฐ๊ฑด์ ๋ง์กฑ์ํค๊ธฐ ์ํด ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ ์คํ ๋ฆฌ์ง ์์ง ์ด์ธ์ ๋ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ๋ ์ ๊ณตํ๋ ์คํ ๋ฆฌ์ง ์์ง์ ์ง์ ๊ฐ๋ฐํ์ฌ ํ๋ฌ๊ทธ์ธ์ ์ถ๊ฐํ ์ ์๋ค. ๋ํ ์ ๋ฌธ ๊ฒ์ ์์ง์ ์ํ ๊ฒ์์ด ํ์(์ธ๋ฑ์ฑํ ํค์๋๋ฅผ ๋ถ๋ฆฌํ๋ ์์ )๊ณผ ์ฌ์ฉ์ ์ธ์ฆ ๋๊ตฌ ๋ฑ์ ๋ชจ๋ ํ๋ฌ๊ทธ์ธ์ผ๋ก ๊ตฌํ๋์ด ์ ๊ณต๋๋ค.
์ปดํฌ๋ํธ
MySQL 8.0 ๋ถํฐ๋ ๊ธฐ์กด์ ํ๋ฌ๊ทธ์ธ ์ํคํ ์ฒ๋ฅผ ๋์ฒํ๊ธฐ ์ํด ์ปดํฌ๋ํธ ์ํคํ ์ฒ๊ฐ ์ง์๋๋ค. MySQL ์๋ฒ์ ํ๋ฌ๊ทธ์ธ์ ๋ช ๊ฐ์ง ๋จ์ ์ด ์๋๋ฐ, ์ปดํฌ๋ํธ๋ ์ด๋ฌํ ๋จ์ ๋ค์ ๋ณด์ํด์ ๊ตฌํ๋์๋ค.
5. ์ฟผ๋ฆฌ ์คํ ๊ตฌ์กฐ
MySQL ์์ง์ด ๊ฐ ์คํ ๋ฆฌ์ง ์์ง์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๊ฑฐ๋ ์ ์ฅํ๋๋ก ๋ช
๋ นํ๋ ค๋ฉด ๋ฐ๋์ ํธ๋ค๋ฌ๋ฅผ ํตํด์ผ ํ๋ค.
MyISAM์ด๋ InnoDB์ ๊ฐ์ด ๋ค๋ฅธ ์คํ ๋ฆฌ์ง ์์ง์ ์ฌ์ฉํ๋ ํ
์ด๋ธ์ ๋ํด ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋๋ผ๋ MySQL์ ์ฒ๋ฆฌ ๋ด์ฉ์ ๋์ผํ๋ฉฐ ๋ฐ์ดํฐ ์ฝ๊ธฐ์ ์ฐ๊ธฐ ์์ญ์ ์ฒ๋ฆฌ ์ฐจ์ด๊ฐ ์์ ๋ฟ์ด๋ค. ์ค์ง์ ์ผ๋ก ๋ณต์กํ GROUP By๋ ORDER BY ๋ฑ ๋ณต์กํ ์ฒ๋ฆฌ๋ ์คํ ๋ฆฌ์ง ์์ง ์์ญ์ด ์๋๋ผ MySQL ์์ง์ ์ฒ๋ฆฌ ์์ญ์ธ SQL ์คํ๊ธฐ์์ ์ฒ๋ฆฌ๋๋ค.
์ฟผ๋ฆฌ ํ์
์ฟผ๋ฆฌ ํ์๋ ์ฌ์ฉ์ ์์ฒญ์ผ๋ก ๋ค์ด์จ ์ฟผ๋ฆฌ ๋ฌธ์ฅ์ ํ ํฐ(MySQL์ด ์ธ์ํ ์ ์๋ ์ต์ ๋จ์์ ์ดํ๋ ๊ธฐํธ)์ผ๋ก ๋ถ๋ฆฌํด ํธ๋ฆฌ ํํ์ ๊ตฌ์กฐ๋ก ๋ง๋ค์ด ๋ด๋ ์์ ์ ์๋ฏธํ๋ค. ์ฟผ๋ฆฌ ๋ฌธ์ฅ์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ ์ค๋ฅ๋ ์ด ๋จ๊ณ์์ ๋ฐ๊ฒฌ๋๊ณ ์ฌ์ฉ์์๊ฒ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๊ฒ ๋๋ค.
์ ์ฒ๋ฆฌ๊ธฐ
์ฟผ๋ฆฌ ํ์ ๊ณผ์ ์์ ๋ง๋ค์ด์ง ํ์ ํธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฟผ๋ฆฌ ๋ฌธ์ฅ์ ๊ตฌ์กฐ์ ์ธ ๋ฌธ์ ์ ์ด ์๋์ง ํ์ธํ๋ค. ๊ฐ ํ ํฐ์ ํ ์ด๋ธ ์ด๋ฆ์ด๋ ์ปฌ๋ผ ์ด๋ฆ, ๋๋ ๋ด์ฅ ํจ์์ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๋งคํํด ํด๋น ๊ฐ์ฒด์ ์กด์ฌ ์ฌ๋ถ์ ๊ฐ์ฒด์ ์ ๊ทผ ๊ถํ๋ฑ์ ํ์ธํ๋ ๊ณผ์ ์ ์ด ๋จ๊ณ์์ ์ํํ๋ค. ์ค์ ์กด์ฌํ์ง ์๊ฑฐ๋ ๊ถํ์ ์ฌ์ฉํ ์ ์๋ ๊ฐ์ฒด์ ํ ํฐ์ ์ด ๋จ๊ณ์์ ๊ฑธ๋ฌ์ง๋ค.
์ตํฐ๋ง์ด์
์ฌ์ฉ์์ ์์ฒญ์ผ๋ก ๋ค์ด์จ ์ฟผ๋ฆฌ ๋ฌธ์ฅ์ ์ ๋ ดํ ๋น์ฉ์ผ๋ก ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ ์ญํ ์ ๋ด๋นํ๋ฉฐ DBMS์ ๋๋์ ํด๋นํ๋ค.
์คํ ์์ง
์ตํฐ๋ง์ด์ ๊ฐ ๋๋๋ผ๋ฉด ์คํ ์์ง๊ณผ ํธ๋ค๋ฌ๋ ์๊ณผ ๋ฐ์ ๋น์ ํ ์ ์๋ค.
์คํ ์์ง์ ๋ง๋ค์ด์ง ๊ณํ๋๋ก ๊ฐ ํธ๋ค๋ฌ์๊ฒ ์์ฒญํด์ ๋ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ ๋ค๋ฅธ ํธ๋ค๋ฌ ์์ฒญ์ ์
๋ ฅ์ผ๋ก ์ฐ๊ฒฐํ๋ ์ญํ ์ ์ํํ๋ค.
์คํ ๋ฆฌ์ง ์์ง (ํธ๋ค๋ฌ)
MySQL ์๋ฒ์ ๊ฐ์ฅ ๋ฐ๋จ์์ ์คํ ์์ง์ ์์ฒญ์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ๋ก ์ ์ฅํ๊ณ ์ฝ์ด์ค๋ ์ญํ ์ ๋ด๋นํ๋ค.
ํธ๋ค๋ฌ๋ผ๊ณ ๋ ๋ถ๋ฅด๋ฉฐ, MyISAM ํ
์ด๋ธ์ ์กฐ์ํ๋ ๊ฒฝ์ฐ์๋ ํธ๋ค๋ฌ๊ฐ MyISAM ์คํ ๋ฆฌ์ง ์์ง์ด ๋๊ณ InnoDB ํ
์ด๋ธ์ ์กฐ์ํ๋ ๊ฒฝ์ฐ์๋ InnoDB ์คํ ๋ฆฌ์ง ์์ง์ด ํธ๋ค๋ฌ๊ฐ ๋๋ค.
6. ์ฟผ๋ฆฌ ์บ์
์ฟผ๋ฆฌ ์บ์๋ ๋น ๋ฅธ ์๋ต์ ํ์๋ก ํ๋ ์น ๊ธฐ๋ฐ ์์ฉ ํ๋ก๊ทธ๋จ์์ ๋งค์ฐ ์ค์ํ ์ญํ ์ ๋ด๋นํ์ง๋ง, ํ ์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์บ์์ ์ ์ฅ๋ ๊ฒฐ๊ณผ ์ค์์ ๋ณ๊ฒฝ๋ ํ ์ด๋ธ๊ณผ ๊ด๋ จ๋ ๊ฒ๋ค์ ๋ชจ๋ ์ญ์ ํด์ผ ํ๋ฏ๋ก ์ฌ๊ฐํ ๋์ ์ฒ๋ฆฌ ์ฑ๋ฅ ์ ํ๋ฅผ ์ ๋ฐํ๋ค.
MySQL 8.0 ์์๋ ์ฟผ๋ฆฌ ์บ์๋ ์์ ํ ์ ๊ฑฐ๋์๋ค.
7. ์ค๋ ๋ ํ
์ค๋ ๋ ํ์ ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉ์์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ค๋ ๋ ๊ฐ์๋ฅผ ์ค์ฌ์ ๋์ ์ฒ๋ฆฌ๋๋ ์์ฒญ์ด ๋ง๋ค ํ๋๋ผ๋ MySQL ์๋ฒ์ CPU๊ฐ ์ ํ๋ ๊ฐ์์ ์ค๋ ๋ ์ฒ๋ฆฌ์๋ง ์ง์คํ ์ ์๊ฒ ํด์ ์๋ฒ์ ์์ ์๋ชจ๋ฅผ ์ค์ด๋ ๊ฒ์ด ๋ชฉ์ ์ด๋ค.
์ค๋ ๋ ํ์ด ์ค์ ์๋น์ค์์ ๋์ ๋๋ ์ฑ๋ฅ ํฅ์์ ๋ณด์ฌ์ฃผ๋ ๊ฒฝ์ฐ๋ ๋๋ฌผ๋ค. ์ค์ผ์ค๋ง ๊ณผ์ ์์ CPU ์๊ฐ์ ์ ๋๋ก ํ๋ณดํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ์๋ ์ฟผ๋ฆฌ ์ฒ๋ฆฌ๊ฐ ๋ ๋๋ ค์ง๋ ์ฌ๋ก๋ ๋ฐ์ํ ์ ์๋ค๋ ์ ์ ์ฃผ์ํด์ผ ํ๋ค.
์ ํ๋ ์์ ์ค๋ ๋๋ง์ผ๋ก CPU๊ฐ ์ฒ๋ฆฌํ๋๋ก ์ ์ ํ ์ ๋ํ๋ค๋ฉด CPU์ ํ๋ก์ธ์ค ์นํ๋๋ ๋์ด๊ณ ์ด์์ฒด์ ์ ์ฅ์์๋ ๋ถํ์ํ Context Switch๋ฅผ ์ค์ฌ์ ์ค๋ฒํค๋๋ฅผ ๋ฎ์ถ ์ ์๋ค.
์ค๋ ๋ ๊ทธ๋ฃน์ ๋ชจ๋ ์ค๋ ๋๊ฐ ์ผ์ ์ฒ๋ฆฌํ๊ณ ์๋ค๋ฉด ์ค๋ ๋ ํ์ ํด๋น ์ค๋ ๋ ๊ทธ๋ฃน์ ์๋ก์ด ์์
์ค๋ ๋(Worker Thread)๋ฅผ ์ถ๊ฐํ ์ง, ์๋๋ฉด ๊ธฐ์กด ์์
์ค๋ ๋๊ฐ ์ฒ๋ฆฌ๋ฅผ ์๋ฃํ ๋๊น์ง ๊ธฐ๋ค๋ฆด์ง ์ฌ๋ถ๋ฅผ ํ๋จํด์ผ ํ๋ค. ์ค๋ ๋ ํ์ ํ์ด๋จธ ์ค๋ ๋๋ ์ฃผ๊ธฐ์ ์ผ๋ก ์ค๋ ๋ ๊ทธ๋ฃน์ ์ํ๋ฅผ ์ฒดํฌํด์ thread_pool_stall_limit ์์คํ
๋ณ์์ ์ ์๋ ๋ฐ๋ฆฌ์ด๋งํผ ์์
์ค๋ ๋๊ฐ ์ง๊ธ ์ฒ๋ฆฌ์ค์ธ ์์
์ ๋๋ด์ง ๋ชปํ๋ฉด ์๋ก์ด ์ค๋ ๋๋ฅผ ์์ฑํด์ ์ค๋ ๋ ๊ทธ๋ฃน์ ์ถ๊ฐํ๋ค. ์ด๋ ์ ์ฒด ์ค๋ ๋์ ๊ฐ์๋ max ๊ฐ์ ๋์ ์ ์๋ค.
๋ฐ๋ผ์, ๋ชจ๋ ์ค๋ ๋ ๊ทธ๋ฃน์ ์ค๋ ๋๊ฐ ์์
์ ์ฒ๋ฆฌ์ค์ด๋ผ๋ฉด ์๋ก์ด ์ฟผ๋ฆฌ ์์ฒญ์ด ๋ค์ด์ค๋๋ผ๋ thread_pool_stall_limit ๋ฐ๋ฆฌ์ด๋งํผ์ ๊ธฐ๋ค๋ ค์ผ๋ง ์๋ก์ด ์์
์ ์ฒ๋ฆฌํ ์ ์๋ค๋ ๋ป์ด๋ค. ์๋ต ์๊ฐ์ ๋ฏผ๊ฐํ๋ค๋ฉด ํด๋น ์์คํ
๋ณ์๋ฅผ ์ ์ ํ ๋ฎ์ถฐ์ ์ฌ์ฉํด์ผ ํ๋ค. 0์ ๊ฐ๊น๊ฒ ์ค์ ํ ๊ฒ์ด๋ผ๋ฉด ์ฐจ๋ผ๋ฆฌ ์ค๋ ๋ ํ์ ์ฌ์ฉํ์ง ์๋๊ฒ ์ข๋ค.
MySQL ์๋ฒ ์ํฐํ๋ผ์ด์ฆ ์๋์ ์์๋ง ์ค๋ ๋ ํ์ ์ ๊ณตํ๋ฉฐ, ์ปค๋ฎค๋ํฐ ์๋์ ์์๋ ์ง์ํ์ง ์๋๋ค. ํ๋ฌ๊ทธ์ธ์ ์ค์นํ๋ฉด ์ฌ์ฉํ ์ ์๊ธฐ ํ๋ค.
8. ํธ๋์ญ์ ์ง์ ๋ฉํ๋ฐ์ดํฐ
๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์์ ํ
์ด๋ธ์ ๊ตฌ์กฐ ์ ๋ณด์ ์คํ ์ด๋ ํ๋ก๊ทธ๋จ ๋ฑ์ ์ ๋ณด๋ฅผ ๋ฉํ๋ฐ์ดํฐ๋ผ๊ณ ํ๋ค.
MySQL ์๋ฒ 5.7 ๋ฒ์ ๊น์ง ํ
์ด๋ธ์ ๊ตฌ์กฐ๋ฅผ ํ์ผ์ผ๋ก ๊ด๋ฆฌํ๋ค. ํ์ง๋ง, ์ด๋ฌํ ํ์ผ ๊ธฐ๋ฐ์ ๋ฉํ๋ฐ์ดํฐ๋ ์์ฑ ๋ฐ ๋ณ๊ฒฝ ์์
์ด ํธ๋์ญ์
์ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์ ํ
์ด๋ธ์ ์์ฑ ๋๋ ๋ณ๊ฒฝ ๋์ค์ MySQL ์๋ฒ๊ฐ ๋น์ ์์ ์ผ๋ก ์ข
๋ฃ๋๋ฉด ์ผ๊ด๋์ง ์์ ์ํ๋ก ๋จ๋ ๋ฌธ์ ๊ฐ ์์๋ค.
๋ฐ๋ผ์, MySQL 8.0 ๋ถํฐ๋ ํ
์ด๋ธ ๊ตฌ์กฐ ์ ๋ณด๋ ์คํ ์ด๋ ํ๋ก๊ทธ๋จ์ ์ฝ๋ ๊ด๋ จ ์ ๋ณด๋ฅผ ๋ชจ๋ InnoDB์ ํ
์ด๋ธ์ ์ ์ฅํ๋๋ก ๊ฐ์ ํ์๋ค.
๋ํ, MySQL ์๋ฒ๊ฐ ์๋ํ๋๋ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ํ ํ
์ด๋ธ๋ค์ ์์คํ
ํ
์ด๋ธ์ด๋ผ๊ณ ํ๋๋ฐ, ๋ํ์ ์ผ๋ก ์ฌ์ฉ์์ ์ธ์ฆ๊ณผ ๊ถํ์ ๊ด๋ จ๋ ํ
์ด๋ธ๋ค์ด ์๋ค. MySQL 8.0 ๋ถํฐ๋ ์ด ์์คํ
ํ
์ด๋ธ ๋ํ InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ์ฌ์ฉํ๋๋ก ๊ฐ์ ํ์๋ค.
'๐ข๏ธDatabase' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Redis ์๊ณ ์ฌ์ฉํ์! (0) | 2023.08.20 |
---|---|
[Real MySQL 8.0] ์ฟผ๋ฆฌ ์์ฑ ๋ฐ ์ต์ ํ - SELECT (0) | 2023.08.14 |
[Real MySQL 8.0] MySQL ์ฐ์ฐ์์ ๋ด์ฅํจ์ (0) | 2023.08.08 |
[Real MySQL 8.0] InnoDB ๋ฒํผ ํโข์ธ๋ ๋ก๊ทธ โข์ฒด์ธ์ง ๋ฒํผโข ๋ฆฌ๋ ๋ก๊ทธ (0) | 2023.08.07 |
[Real MySQL 8.0] InnoDB ์คํ ๋ฆฌ์ง ์์ง ์ํคํ ์ฒ (MVCC, ๋ฐ๋๋ฝ ๊ฐ์ง, ...) (0) | 2023.08.07 |