์ ๋ฆฌ์ค #1 ์์ง ์ํคํ ์ฒ
by JiwonDev๐ MySQL ์์ง ์ํคํ ์ฒ
MySQL Server๋ ๋ค๋ฅธ DB์ ๋นํด ๊ตฌ์กฐ๊ฐ ๋ ํนํ ํธ์ด๋ค. ์ด๋ก ์ธํด ์ถ๊ฐ์ ์ธ ํํ์ ๊ฐ์ง ์ ์์ง๋ง, ๋ฐ๋๋ก ๋ค๋ฅธ DB์์ ๋ฌธ์ ๊ฐ ๋์ง ์๋ ๋ถ๋ถ์ด ๋ฌธ์ ๊ฐ ๋ ์ ์๋ค.
MySQL์ ํฌ๊ฒ ๋๋๋ฉด ์๋จ์ [MySQL ์์ง]๊ณผ [Storage ์์ง]์ผ๋ก ๋๋์ด์ง๋ค.
@ MySQL ์์ง
์์ฒญ๋ SQL ๋ฌธ์ฅ์ ๋ถ์ํ๊ณ ์ต์ ํํ๋ค.
์ ์ฒ๋ฆฌ๊ธฐ, ์ตํฐ๋ง์ด์ , SQL Parser, Connection Handler ๋ฑ์ด ํฌํจ๋๋ค.
์ค์ง์ ์ธ ๋ฐ์ดํฐ ์ฝ๊ธฐ/์ฐ๊ธฐ๋ฅผ ์ ์ธํ๊ณ Group By ๋ Order By ๊ฐ์ ๋ณต์กํ ์ฟผ๋ฆฌ ์ฒ๋ฆฌ๋ ๋ชจ๋ ์ฌ๊ธฐ์ ์๋ ์ฟผ๋ฆฌ ์คํ๊ธฐ์ ์ํด ์ด๋ฃจ์ด์ง๋ค.
๊ทธ๋ผ Storage ์์ง์ด ํ๋๊ฒ ๋ญ์์? ๋ผ๊ณ ๋ฌผ์ด๋ณผ ์ ์์ง๋ง, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ์ผ์ฒ๋ฆฌ๋ ๋ด ์ปดํจํฐ์ ์๋ C๋๋ผ์ด๋ธ์ฒ๋ผ ๋จ์ํ์ง ์๋ค. ๋จ์ํด๋ณด์ด๋ ๋ฐ์ดํฐ ์ฝ๊ธฐ/์ฐ๊ธฐ๊ฐ ๋ค์ํ ๊ธฐ๋ฅ๊ณผ ์ฑ๋ฅ์ ๋ณด์ฅํ๋ ค๋ฉด ์ผ๋ง๋ ๋ณต์กํด์ง๋๊ฐ๋ฅผ ๋์ค์ ๋ฐฐ์ฐ๊ฒ ๋ ๊ฒ์ด๋ค.
@ Handler API
MySQL ์์ง์ ์ฟผ๋ฆฌ ์คํ๊ธฐ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฑฐ๋ ์ฝ์ ๋๋ ์คํ ๋ฆฌ์ง ์์ง์ ์์ฒญํด์ผํ๋ค.
์ด ์์ฒญ์ ์ฌ์ฉํ๋ API๋ฅผ Handler API ๋ผ๊ณ ํ๋ค.
ํด๋น API๋ฅผ ํตํด ์ผ๋ง๋ ๋ง์ ๋ ์ฝ๋ ์์ ์ด ์์๋์ง ํ์ธํ ์ ์๋ค.
@ ์คํ ๋ฆฌ์ง ์์ง (InnoDB, MyISAM)
์ฌ๋ด์ผ๋ก ๊ธฐ์กด ์ฌ์ฉํ๋ MyISAM์ MySQL Indexed Sequential Access Method ์ ์ฝ์ด์ด๊ณ
์ค๋ผํด์ด 2005๋ Innobase ์ฌ๋ฅผ ์ธ์ํ์ฌ InnoDB ๋ผ์ด์ผ์ค๋ฅผ ๊ฐ์ ธ์๊ณ , Sun์ฌ ์ธ์ ์ดํ MySQL์ ์ ์ฉ์ํจ ๊ฒ์ด๋ค.
์ค์ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ์ ์ฅํ๊ฑฐ๋, ์ฝ์ด์ค๋ ์ญํ ์ ๋ด๋นํ๋ค.
MySQL ์๋ฒ์์ [MySQL ์์ง]์ ํ๋ ๋ฐ์ ์กด์ฌ ๋ชปํ์ง๋ง, [Storage ์์ง]์ ์ฌ๋ฌ๊ฐ๋ฅผ ๋์์ ์ฌ์ฉ ํ ์ ์๋ค.
์ค์ ๋ก ์๋์ ๊ฐ์ด ํ ์ด๋ธ์ ํน์ ์คํ ๋ฆฌ์ง ์์ง์ ์ง์ ํด๋๋ฉด, ํด๋น ํ ์ด๋ธ์ ๋ชจ๋ ์์ ์ด ํน์ ์คํ ๋ฆฌ์ง๋ฅผ ์ฌ์ฉํ๋ค.
mysql> CREATE TABLE test (fd1 INT, fd2 INT) ENGINE=INNODB;
๊ทธ ์ธ ์์ง ์ฑ๋ฅ์ ํฅ์ ์ํค๊ธฐ์ํด ํค ์บ์, ๋ฒํผ ํ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ๋ด์ฅํ๊ณ ์๋ค.
๐ ํ๋ฌ๊ทธ์ธ ์คํ ๋ฆฌ์ง ์์ง ๋ชจ๋ธ
MySQL์ ๋ ํนํ ๊ตฌ์กฐ์ค ๋ํ์ ์ธ ๊ฒ์ด ํ๋ฌ๊ทธ์ธ ๋ชจ๋ธ์ด๋ค. ์์ง์ ํ๋ฌ๊ทธ์ธํด์ ์ฌ์ฉํ๋ ๊ตฌ์กฐ์ด๋ค.
๋ค๋ง Storage ์์ง๋ง ํ๋ฌ๊ทธ์ธ ํ ์ ์๋๊ฒ ์๋๋ผ, ํ์ํ๋ค๋ฉด MySQL ์์ง์ ์ ๋ฌธ ๊ฒ์์ ์ํ ํ๋ฌ๊ทธ์ธ, ๋ณด์ ์ธ์ฆํ๋ฌ๊ทธ์ธ ๋ฑ์ ํ์ํ๊ฑธ ์ถ๊ฐํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ ์คํ ๋ฆฌ์ง ์์ง ์ด์ธ์ ๋ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์คํ ๋ฆฌ์ง๊ฐ ํ์ํ ์ ์์ผ๋ฉฐ, ์ ๋ฌธ ๊ฐ๋ฐํ์ฌ๊ฐ ๋ง๋๋ ํ๋ฌ๊ทธ์ธ๋ ์์ง๋ง ํ์ํ๋ค๋ฉด ์ฌ์ฉ์๊ฐ ์ง์ ์ปค์คํ ํ์ฌ ๊ฐ๋ฐํ ์๋ ์๋ค.
์ฐธ๊ณ ๋ก MySQL 8.0 ๋ถํฐ๋ ๊ธฐ์กด์ ํ๋ฌ๊ทธ์ธ ์ํคํ ์ฒ ๋์ , ์ปดํฌ๋ํธ ์ํคํ ์ฒ๊ฐ ์ง์๋๋ค.
ํ๋ฌ๊ทธ์ธ์์ ์ปดํฌ๋ํธ๋ก ์ด๋ฆ์ ๋ฐ๊พผ ์ด์ ๋, ์๋์ ๊ฐ์ ํ๋ฌ๊ทธ์ธ์ ๋จ์ ์ ๊ฐ์ ์์ผฐ๊ธฐ ๋๋ฌธ์ด๋ค.
- ํ๋ฌ๊ทธ์ธ์ ์ค์ง MySQL ์๋ฒ์ ์ธํฐํ์ด์ค ํ ์ ์๊ณ , ํ๋ฌ๊ทธ์ธ ๋ผ๋ฆฌ๋ ํต์ ๋ถ๊ฐ๋ฅํ๋ค.
- ํ๋ฌ๊ทธ์ธ์ MySQL ์๋ฒ์ ๋ณ์๋ ํจ์๋ฅผ ์ง์ ํธ์ถํ๋ค. (์ถ์ํ, ์บก์ํ ๋์ง์์ ์ํํ๋ค)
- ํ๋ฌ๊ทธ์ธ์ ์ํธ ์์กด ๊ด๊ณ๋ฅผ ์ค์ ํ ์ ์๋ค. ์ด๊ธฐํ๊ฐ ์ด๋ ต๋ค.
๐ MySQL ์ค๋ ๋ฉ ๊ตฌ์กฐ
MySQL์ ํ๋ก์ธ์ค ๊ธฐ๋ฐ์ด ์๋๋ผ ์ค๋ ๋ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ค.
ํ ํ๋ก์ธ์ค ๋ด์ foreground ์ background ์ค๋ ๋๋ก ๊ตฌ๋ถํ์ฌ ๋์ํ๋ค.
@ ํด๋ผ์ด์ธํธ ์ค๋ ๋ (Foreground)
Foreground๋ ์๋ฒ์ ์ ์๋ ํด๋ผ์ด์ธํธ ์ ๋งํผ ์กด์ฌํ๋ฉฐ, ๊ฐ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ๋ ์ฟผ๋ฆฌ ๋ฌธ์ฅ์ ์ฒ๋ฆฌํ๋ค. ๋จ ์์ ์ด ์ข ๋ฃ๋๋ฉด Thread_Pool๋ก ๋์๊ฐ๋ฉฐ ์ค๋ ๋์ ๊ฐ์๋ฅผ ์์คํ ๋ณ์๋ก ์กฐ์ ํ ์ ์๋ค. (thread_cache_size)
Foreground ์ค๋ ๋๋ MySQl์ ๋ฐ์ดํฐ ๋ฒํผ๋ ์บ์๋ก๋ถํฐ ๊ฐ์ ธ์ค๋ฉฐ, ์๋ ๊ฒฝ์ฐ์๋ง ์ง์ ๋์คํฌ๋ฅผ ์ฝ๋๋ค.
๊ธฐ์กด์ MyISAM์ ๋์คํฌ ์ฐ๊ธฐ ์์ ๊น์ง ๊ฐ๋ฅํ์ง๋ง InnoDB๋ ๋ถ๊ฐ๋ฅํ๋ค. ์ค์ง ๋ฒํผ์ ์บ์, ๋์คํฌ ์ฝ๊ธฐ๋ง ๊ฐ๋ฅํ๋ค.
์ฆ ๋ฒํผ์ ๊ธฐ๋ก๋ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ๊ธฐ๋กํ๋๊ฑด ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋๋ง ํ ์ ์๋ค.
@ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋ (Background)
MyISAM์ ํด๋ผ์ด์ธํธ ์ค๋ ๋๊ฐ ๋ชจ๋ ๊ฑธ ์ฒ๋ฆฌํ์ง๋ง, InnoDB๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋์ ์ญํ ์ด ๋ถ๋ฆฌ๋์๋ค.
- ์ธ์ํธ ๋ฒํผ๋ฅผ ๋ณํฉํ๋ ์ค๋ ๋
- ๋ก๊ทธ๋ฅผ ๋์คํฌ๋ก ๊ธฐ๋กํ๋ ์ค๋ ๋
- InnoDB ๋ฒํผ ํ์ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ๊ธฐ๋กํ๋ ์ค๋ ๋
- ๋ฐ์ดํฐ๋ฅผ ๋ฒํผ๋ก ์ฝ์ด์ค๋ ์ค๋ ๋
- ์ ๊ธ์ด๋ ๋ฐ๋๋ฝ์ ๋ชจ๋ํฐ๋งํ๋ ์ค๋ ๋
ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋์ค ์ฐ๊ธฐ ์์ ์ ์ง์ฐ(๋ฒํผ๋ง)๋ ์ ์์ง๋ง, ์ฝ๊ธฐ๋ ์ง์ฐ ๋ ์ ์๋ค. ๊ทธ๋์ ์ผ๋ฐ์ ์ธ ์์ฉ DB๋ ๋๋ถ๋ถ ์ฐ๊ธฐ ์์ ์ ๋ฒํผ๋งํด์ ์ผ๊ด์ฒ๋ฆฌํ๋ ๊ธฐ๋ฅ์ด ํ์ฌ๋์ด ์์ผ๋ฉฐ ์ด๋ InnoDB๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค.
์ด๋ฌํ ์ด์ ๋ก InnoDB์์๋ Insert, Update, Delete ์ฟผ๋ฆฌ๋ก ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋๋ผ๋ ๋์คํฌ์ ์์ ํ ์ ์ฅ ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์์๋ ์ฝ์ ์ ์๋ค.
๐ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐ ์ฌ์ฉ ๊ตฌ์กฐ
MySQL ๋ฉ๋ชจ๋ฆฌ๋ ๊ธ๋ก๋ฒ๊ณผ ๋ก์ปฌ๋ก ๋๋์ด์ง๋ค.
@ ๊ธ๋ก๋ฒ ๋ฉ๋ชจ๋ฆฌ ์์ญ
๊ธ๋ก๋ฒ ๋ฉ๋ชจ๋ฆฌ๋ MySQL ์๋ฒ๊ฐ ์์๋ ๋ ์ด์์ฒด์ ๋ก๋ถํฐ ํ ๋น๋๋ค. ํด๋ผ์ด์ธํธ ์ค๋ ๋ ์ซ์์๋ ๋ฌด๊ดํ๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ํ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋น๋๊ณ ๋ชจ๋ ์ค๋ ๋๊ฐ ๊ณต์ ํ์ฌ ์ฌ์ฉํ๋ค.
๋ค๋ง ์๋ฐ static ์์ญ์ฒ๋ผ ๋ฌด์กฐ๊ฑด ์ฒ์๋ถํฐ 100% ํ ๋น๋๋๊ฑด ์๋๊ณ , ์ด์์ฒด์ ์ ํ ๋น ๋ฐฉ์์ ๋ฐ๋ผ ์์ฝํด๋๊ณ ํ์ํ ๋ ์กฐ๊ธ์ฉ ํ ๋นํด์ฃผ๋ ๊ฒฝ์ฐ๋ ์๋ค.
@ ๋ก์ปฌ ๋ฉ๋ชจ๋ฆฌ ์์ญ
๋ก์ปฌ๋ฉ๋ชจ๋ฆฌ๋ ์ธ์ , ์ปค๋ฅ์ ๋ฉ๋ชจ๋ฆฌ๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.
MySQL ์๋ฒ ์์ ํด๋ผ์ด์ธํธ ์ค๋ ๋๊ฐ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ์ด๋ฉฐ ์ค๋ ๋ ๋ณ๋ก ๋ ๋ฆฝ์ ์ผ๋ก ํ ๋น๋๊ณ ์ ๋ ๊ณต์ ํ์ง ์๋๋ค. ํ์ํ์ง ์๋ค๋ฉด ์์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์กฐ์ฐจ ํ ๋นํ์ง ์๋ ๊ฒฝ์ฐ๋ ์๋ค. ์ด๋ Sort, Join ๋ฒํผ๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค.
๋ก์ปฌ ๋ฉ๋ชจ๋ฆฌ์ ์๋ช ์ฃผ๊ธฐ๋ ๋ฒํผ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ค.
Connection, Result ๋ฒํผ๋ ํด๋ผ์ด์ธํธ ์ปค๋ฅ์ ์ด ์ด๋ ค์๋ ๋์ ๊ณ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋จ์์์ผ๋ Sort, Join ๋ฒํผ๋ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ์๊ฐ์๋ง ํ ๋นํ๋ค๊ฐ ๋ค์ ํด์ ํ๊ฒ ๋๋ค.
๐ ์ฟผ๋ฆฌ ์คํ๊ตฌ์กฐ
@ Qurey Cache (MySQL 8.0์ ์ ๊ฑฐ๋จ)
์ฟผ๋ฆฌ ์บ์๋ ๋น ๋ฅธ ์๋ต์ ํ์๋ก ํ๋ ์น ๊ธฐ๋ฐ ์๋น์ค์์ ์ค์ํ ์ญํ ์ ๋ด๋นํ๋ค.
SQL์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ์บ์ํ์ฌ ๋์ผํ SQL ์ฟผ๋ฆฌ๊ฐ ์คํ๋๋ฉด ํ ์ด๋ธ์ ์ฝ์ง ์๊ณ ์ฆ์ ๋ฐํํ๋ ์บ์ ๋ฉ๋ชจ๋ฆฌ์ด๋ค.
ํ์ง๋ง MySQL 8.0์ผ๋ก ๋์ด์ค๋ฉฐ ์ฟผ๋ฆฌ ์บ์๋ MySQL ์๋ฒ์ ๊ธฐ๋ฅ์์ ์์คํ ๋ณ์๋ฅผ ํฌํจํ ๋ชจ๋ ๊ธฐ๋ฅ์ด ์ ๊ฑฐ ๋์๋ค. ์ฑ๋ฅ์ด ๋น ๋ฅด๋ค๊ณ ํด๋ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์บ์์์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ฐพ์์ ์ญ์ ํ๋ ๊ฒ์ด ๋์์ฑ๋ฅ ์ฒ๋ฆฌ์ ์ฌ๊ฐํ ์ํฅ์ ์ฃผ์๊ณ , ์ค์ ์๋น์ค์์ ์ฟผ๋ฆฌ ์บ์๊ฐ ์ฑ๋ฅ์ ํฐ ๋์์ด ๋ ๊ฒฝ์ฐ๊ฐ ๊ฑฐ์ ์์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฌด์๋ณด๋ค ์ ๋ง์ ๋ฒ๊ทธ์ ์์ธ์ผ๋ก ์ง๋ชฉ๋์๊ธฐ ๋๋ฌธ์ ์ ๊ฑฐ๋ ๊ฒ๋ ์๋ค.
@ Query Parser
์ฟผ๋ฆฌ๋ฌธ์ ํ ํฐ์ผ๋ก ๋ถ๋ฆฌํด ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๋ง๋ค์ด ๋ธ๋ค. ํ ํฐ์ด ์ฌ๋ฐ๋ฅธ์ง ํ์ธํ๋ ์์
@ PreProcessor
ํ์ ํธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์กฐ์ ์ธ ๋ฌธ์ ์ ์ ํ์ ํ๋ค. ์ฟผ๋ฆฌ ํ์๋ ํ ํฐ์ ์ ํจ์ฑ๋ง ๊ฒ์ฌํ๋ค๋ฉด, ๋ฌธ๋ฒ๊ตฌ์กฐ๋ฅผ ํ์ ํ๋ ์์ . ์ด ๋จ๊ณ์์ ๋ด์ฅ ํจ์๋ฅผ ๋งคํํ๊ณ , ๊ฐ์ฒด์ ์กด์ฌ ์ฌ๋ถ, ์ ๊ทผ ๊ถํ ๋ํ ํจ๊ป ํ์ธํ๋ค.
@ Query Optimizer
์ ์ฒ๋ฆฌ๊น์ง ์๋ฃ๋ ์ ํจํ ์ฟผ๋ฆฌ๋ฅผ ์ต์ ํ ์์ผ Storage Engine์ ๋๊ธธ ์ค์ ์คํ๊ณํ์ ์์ฑํด๋ธ๋ค.
@ Query execution engine (api calls)
์์ฑ๋ ์คํ ๊ณํ์ ๋ฐํ์ผ๋ก Storage engine์ Handler API๋ฅผ ํธ์ถํ๋ค.
์ค์ง์ ์ธ API ํธ์ถ๊ณผ ํด๋ผ์ด์ธํธ์๊ฒ ๊ฒฐ๊ณผ ๋ฐํ์ด ์ด๋ฃจ์ด์ง๋ ๊ณณ์ด๋ค.
์๋ฅผ ๋ค์ด GROUP BY ๋ผ๋ ์คํ๊ณํ์ ์๋์ ๊ฐ์ ์์ ์ด ์งํ๋๋ค.
1. ์คํ ์์ง์ด Handler API๋ก ์์ ํ ์ด๋ธ์ ๋ง๋ค๋ผ๊ณ ์์ฒญ
2. ์คํ ์์ง์ WHERE ์ ์ ์ผ์นํ๋ ๋ ์ฝ๋๋ฅผ ์ฝ์ด์ค๋ผ๊ณ Handler API ์์ฒญ
3. ์ฝ์ด์จ ๋ ์ฝ๋๋ค์ ์์ํ ์ด๋ธ์ ์ ์ฅํ๋ผ๊ณ Handler API ์์ฒญ
4. ๋ฐ์ดํฐ๊ฐ ์ค๋น๋ ์์ ํ ์ด๋ธ์์ ํ์ํ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ผ๊ณ Handler API ์์ฒญ
5. ์ต์ข ์ ์ผ๋ก ์คํ ์์ง์ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉ์๋ ๋ค๋ฅธ ๋ชจ๋๋ก ๋๊น
@ Storage engines (Handler)
MySQL ์๋ฒ ๊ฐ์ฅ ๋ฐ๋จ์์ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ์ ์ฅํ๊ณ , ์ฝ์ด์ค๋ ์ญํ ์ ๋ด๋นํ๋ค.
์ฆ MyISAM, InnoDB ๊ฐ์ Storage Engine์ Handler๋ผ๊ณ ๋ถ๋ฅผ ์ ์๋ค.
@ Thread Pool
MySQL์ ๊ธฐ๋ณธ Thread Pool์ ์ํฐํ๋ผ์ด์ฆ ๋ฒ์ ์๋ง ํฌํจ๋์ด ์๋ค.
๊ทธ๋์ ์ฌ๊ธฐ์์๋ ์ปค๋ฎค๋ํฐ์๋ ์ฌ์ฉ ๊ฐ๋ฅํ Percona ํ๋ฌ๊ทธ์ธ์ ํตํ ์ค๋ ๋ ํ์ ๋ํด ๊ฐ๋จํ ์ค๋ช ํ๋๋ก ํ๊ฒ ๋ค.
์ค๋ ๋ ํ์ ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉ์์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ค๋ ๋ ๊ฐ์๋ฅผ ์ค์ฌ CPU์ ์ปจํ ์คํธ ์ค์์น์ ์์์ ์๋ชจ๋ฅผ ์ค์ด๋ ๊ฒ์ด ๋ชฉ์ ์ด๋ค. ๋ค๋ง ๋ง์ ์ฌ๋๋ค์ด ๊ทธ๋ฅ ์ค๋ ๋ ํ์ ์ฌ์ฉํ๋ฉด ๋ฌด์กฐ๊ฑด ์ฑ๋ฅ์ด ๋์์ง ๊ฒ์ด๋ผ ๊ธฐ๋ํ๋๋ฐ ์๋ฌด์๊ฐ์์ด ์ค์ ํ๋ค๋ฉด ๊ฐ ์ค๋ ๋๊ฐ CPU ์ฒ๋ฆฌ ์๊ฐ์ ํ๋ณด ๋ฐ์ง ๋ชปํด ๋ ๋๋ ค์ง๋ ์ฌ๋ก๋ ๋ฐ์ํ ์ ์๋ค๋ ๊ฑธ ์ ์ํ์.
Percona Server ์ค๋ ๋ํ์ ๊ธฐ๋ณธ์ ์ผ๋ก CPU ์ฝ์ด ๊ฐ์๋งํผ ์ค๋ ๋ ๊ทธ๋ฃน์ ์์ฑํ๋ค.
์ค๋ ๋ ๊ทธ๋ฃน์ ๋ชจ๋ ์ค๋ ๋๊ฐ ์ผ์ ์ฒ๋ฆฌํ๊ณ ์๋ค๋ฉด, ์ค๋ ๋ ํ์์๋ ์์ ์ค๋ ๋๋ฅผ ์ถ๊ฐํ ์ง, ์๋๋ฉด ์ค๋ ๋ ๋ฐํ์ ๊ธฐ๋ค๋ฆด์ง ์ ํํด์ผ ํ๋ค. ์ด๋ thread_pool_stall_limit ๋ณ์์ ์ค์ ๋ ๋ฐ๋ฆฌ์ด๋งํผ ๊ธฐ๋ค๋ ธ๋ค๊ฐ ์์ฑํ๋๋ฐ thread_pool_max_threads ๋ณ์๋ก ์์ฑ ๊ฐ๋ฅํ ์ต๋ ์ค๋ ๋ ๊ฐ์๋ฅผ ์ ํํ ์ ์๋ค.
๋ํ ํ์์, ์ ์์ ํ๋ฅผ ์ด์ฉํ์ฌ SQL์ ์์๋ฅผ ํด๋น ํธ๋์ญ์ ์ Lock์ด ๋น ๋ฅด๊ฒ ํ๋ฆฌ๋๋ก ์กฐ์ ํ์ฌ ์ ์ฒด์ ์ธ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๊ธฐ๋ฅ๋ ๊ฐ์ง๊ณ ์๋ค.
@ ํธ๋์ญ์ ์ง์ ๋ฉํ๋ฐ์ดํฐ
MySQL 5.7 ๊น์ง๋ ํ ์ด๋ธ ๊ตฌ์กฐ๋ฅผ db.frm (format) ํ์ฅ์ ํ์ผ์ ์ ์ฅํ๊ณ , ์ผ๋ถ stored program ๋ํ ํ์ผ(.trn .trg .par)๋ก ๊ด๋ฆฌ ํ์๋ค. ๋จ์ํ ํ์ผ์ ์ ์ฅํ๋ ๋ฉํ๋ฐ์ดํฐ๋ ์์ฒด์ ์ธ ํธ๋์ญ์ ์ ์ง์ํ ์ ์๊ธฐ ๋๋ฌธ์ ํ ์ด๋ธ ์์ฑ & ๋ณ๊ฒฝ ๋์ค MySQL ์๋ฒ๊ฐ ์ค๋ฅ๊ฐ ๋์ ์ข ๋ฃ๋๋ฉด ํ์ผ ๋ด์ฉ์ด ์ผ๊ด๋์ง ์๋ ๋ฌธ์ ๊ฐ ์์๋ค.
๊ทธ๋์ MySQL 8.0 ๋ถํฐ๋ ํ ์ด๋ธ์ ๊ตฌ์กฐ ์ ๋ณด, Stored Program๋ฑ ๋ฉํ๋ฐ์ดํฐ๋ค์ InnoDB ์ ์์คํ ํ ์ด๋ธ์ ๋ง๋ค์ด ๋ฐ๋ก ์ ์ฅํ๋ค. ์ฆ DB ๋ฐ์ดํฐ์ฒ๋ผ ์์ ์ ์์์ ์ผ๋ก ๊ด๋ฆฌํ์ฌ MySQL์ ์๋ฒ๊ฐ ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋๋๋ผ๋ ๋ฌธ์ ๊ฐ ์๋๋ก ๋ฐ๋์๋ค.
'๐ฑBackend > DB(MySQL,PostgreSQL)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ ๋ฆฌ์ค-5 (0) | 2021.10.27 |
---|---|
์ ๋ฆฌ์ค - 4 (0) | 2021.10.20 |
์ ๋ฆฌ์ค - 3 (0) | 2021.10.20 |
์ ๋ฆฌ์ค -2 (0) | 2021.10.20 |
1. MySQL์ ๋ฌด์์ธ๊ฐ (0) | 2021.10.13 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
JiwonDev
JiwonDev