Open HJ-Rich opened 2 years ago
4์ฅ ์ํคํ ์ฒ
MySQL ์์ง
MySQL ์คํ ๋ฆฌ์ง ์์ง
ํธ๋ค๋ฌ
InnoDB, MyISAM, MEMORY ๋ฑ
MySQL ์๋ฒ
์ฌ์ฉ์ ์ค๋ ๋
๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋
๊ธ๋ก๋ฒ ๋ฉ๋ชจ๋ฆฌ
๋ก์ปฌ ๋ฉ๋ชจ๋ฆฌ(์ธ์ ๋ฉ๋ชจ๋ฆฌ)
ํ๋ฌ๊ทธ์ธ
์ปดํฌ๋ํธ
ํ ํฐ
์ฟผ๋ฆฌ ํ์
์ ์ฒ๋ฆฌ๊ธฐ
์ตํฐ๋ง์ด์
์คํ ์์ง
์ฟผ๋ฆฌ ์บ์
InnoDB
MVCC
๋ฒํผ ํ
์ธ๋ ๋ก๊ทธ
READ_UNCOMMITTED
READ_COMMITTED
No-Locking Consistent Read
ํ ์ด๋ธ ์คํ์ด์ค
ํผ์ง ์ค๋ ๋
๋ฆฌ๋ ๋ก๊ทธ
[10๋ถ ํ ์ฝํก] ๐ซ ์ฐ๊ธฐ์ MySQL แแ กแแ ตแแ ฆแจแแ ฅ ์ค ์บก์ณ
4์ฅ ์ํคํ ์ฒ ์ ๋ฐ
์ฃผ์
์ ์ ์ด์
4์ฅ ์ํคํ ์ฒ
๋ ์์ผ๋ก ๋ณธ๊ฒฉ์ ์ผ๋ก ์๊ฐํ ๋ด์ฉ๋ค์ ๋ํด ๊ฐ๊ด์ ์ผ๋ก ์ค๋ช ํ๋ ์ฅ์ด์๋ค๊ณ ์๊ฐํ๋ค.ํด๋น ํ ์คํธ
MySQL ์์ง
: MySQL ๋๋์ ํด๋น. ์ฟผ๋ฆฌ ํ์ฑ, ์ต์ ํ, ์คํ๊ณํ ์์ฑ ๋ฑ์ ๋ด๋น. ์ด์ ์.MySQL ์คํ ๋ฆฌ์ง ์์ง
: MySQL ์, ๋ฐ์ ํด๋น. ๋์คํฌ์ ์ฝ๊ณ ์ฐ๊ธฐ๋ฅผ ๋ด๋น. ์๋์ฐจ. ์ด์ ์์๊ฒ ํธ๋ค์ ์ ๊ณตํจ.ํธ๋ค๋ฌ
: MySQL ์คํ ๋ฆฌ์ง ์์ง์ด MySQL ์์ง์ ์ํด ์ด์ด ๋์ API. ์กฐ์ํ๊ธฐ ์ํ ํธ๋ค. ์คํ ๋ฆฌ์ง ์์ง ์์ฒด๋ฅผ ์ด๋ฅด๊ธฐ๋ ํจ.InnoDB, MyISAM, MEMORY ๋ฑ
: MySQL ์คํ ๋ฆฌ์ง ์์ง์ ์ผ์ข . ํ ์ด๋ธ๋ง๋ค ์คํ ๋ฆฌ์ง ์์ง์ ์ ํํ ์ ์์ผ๋ InnoDB๊ฐ ์๋์ ์ด๋ฉฐ ๊ธฐ๋ณธ๊ฐ.MySQL ์๋ฒ
: MySQL ์์ง๊ณผ MySQL ์คํ ๋ฆฌ์ง ์์ง์ ์์ธ๋ฌ ์ด๋ฅด๋ ๋ง.์ฌ์ฉ์ ์ค๋ ๋
: ์ฐ๊ฒฐ ์์ฒญ์ด ์์ ๋ ์ฒ๋ฆฌ๋ฅผ ์ํด ํ ๋นํ๋ ์ค๋ ๋. ํฌ๊ทธ๋ผ์ด๋ ์ค๋ ๋์ด๋ฉฐ ๋ค๋ฅธ ์ค๋ ๋์ ๋ ๋ฆฝ์ .๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋
: MyISAM์ ์ฌ์ฉ์ ์ค๋ ๋๊ฐ ์ฐ๊ธฐ ์ค๋ ๋ ์ญํ ๊น์ง ๋ด๋นํด์ ์๋ต ์๊ฐ์ด ๋ฆ์. InnoDB๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋๊ฐ ์ฐ๊ธฐ๋ฅผ ๋ด๋นํจ.๊ธ๋ก๋ฒ ๋ฉ๋ชจ๋ฆฌ
: ๊ธ๋ก๋ฒ ๋ฉ๋ชจ๋ฆฌ๋ ์์คํ ๋ณ์์ ์ค์ ๋ ๋งํผ OS๋ก๋ถํฐ ํ ๋น๋ฐ๋ ๋ชจ๋ ์ค๋ ๋๊ฐ ๊ณต์ ํ๋ ๊ณต๊ฐ์ด๋ค. ํ ๋น ์ ์ฃผ์ ํ์.๋ก์ปฌ ๋ฉ๋ชจ๋ฆฌ(์ธ์ ๋ฉ๋ชจ๋ฆฌ)
: ์ฌ์ฉ์ ์ค๋ ๋๊ฐ ํ ๋น๋์ด ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์์ ์ค๋ ๋๋ง๋ค ๋ ๋ฆฝ์ ์ผ๋ก ํ ๋น๋๋ ๊ณต๊ฐ.ํ๋ฌ๊ทธ์ธ
: MySQL ์๋ฒ ์ ์ฒด์ ์ ์ฉ ๊ฐ๋ฅํ ๊ธฐ๋ฅ. ์์ ํ ์๋ก์ด ๊ธฐ๋ฅ์ ํ๋ฌ๊ทธ์ธ์ ์ด์ฉํด ๊ตฌํ ๊ฐ๋ฅํจ.์ปดํฌ๋ํธ
: ํ๋ฌ๊ทธ์ธ๊ณผ ๋น์ทํ ์ญํ ์ ํ๋, ํ๋ฌ๊ทธ์ธ์ ๋จ์ ์ ๊ทน๋ณต. ํ๋ฌ๊ทธ์ธ์ ํ๋ฌ๊ทธ์ธ๋ผ๋ฆฌ ํต์ ๋ชปํ๊ณ , MySQL ์๋ฒ์ ๋ณ์์ ํจ์๋ฅผ ์ง์ ํธ์ถํ๊ธฐ์ ์บก์ํ๋ฅผ ์๋ฐฐํ๊ณ , ์ํธ ์์กด ์ค์ ์ด ๋ถ๊ฐํด ์ด๊ธฐํ๊ฐ ์ด๋ ค์.ํ ํฐ
: MySQL์ด ์ธ์ ๊ฐ๋ฅํ ์ต์๋จ์์ ์ดํ, ๊ธฐํธ์ฟผ๋ฆฌ ํ์
: ๊ธฐ๋ณธ ๋ฌธ๋ฒ ์ค๋ฅ ๊ฒ์ฆ. SQL๋ฌธ์ฅ์ ํ ํฐ์ผ๋ก ๋ถ๋ฆฌํด์ ํธ๋ฆฌ ํํ ๊ตฌ์กฐ๋ก ๋ง๋ค์ด๋.์ ์ฒ๋ฆฌ๊ธฐ
: ํ ํฐ์ ์ฌ์ฉ๋ ํ ์ด๋ธ ์ด๋ฆ, ์นผ๋ผ ์ด๋ฆ, ๋ด์ฅ ํจ์ ๋ฑ์ด ์ค์ ๋ก ์กด์ฌํ๋์ง, ์ ๊ทผ ๊ถํ์ด ์๋์ง ๊ฒ์ฆ.์ตํฐ๋ง์ด์
: DBMS์ ๋๋. ์ฟผ๋ฆฌ ์ต์ ํ๋ฅผ ๋ด๋น. ์ด๋ค ๊ธฐ์ค์ผ๋ก ์ต์ ํ๋ฅผ ์ํ ์ ํ์ ํ๋์ง, ์ด๋ป๊ฒ ์ด๋ฅผ ๋์ธ์ง ๋ฐฐ์ฐ๊ฒ ๋ ์์ .์คํ ์์ง
: ์คํ ๋ฆฌ์ง ์์ง์ด ์ ๊ณตํ๋ ํธ๋ค๋ฌ API๋ฅผ ํธ์ถํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ํธ๋ค๋ฌ API๋ฅผ ํธ์ถํ๋ฉฐ ์ ๋ฌํ๋ ๋ฑ ์์ฒญ๊ณผ ๊ฒฐ๊ณผ๋ฅผ ์ฐ๊ฒฐ์ํจ๋ค.์ฟผ๋ฆฌ ์บ์
: ๋น ๋ฅธ ์๋ต์ด ํ์ํ ํ๊ฒฝ์์ SQL ์คํ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์บ์ํ๋ค ๋น ๋ฅด๊ฒ ์๋ตํ๋ ์ฉ๋. ์บ์ฑ ์ ์ง ๋ฐ ๊ด๋ฆฌ ๋น์ฉ์ผ๋ก ์ธํ ์ฑ๋ฅ ์ ํ๋ก ์ธํด 8์์ ์ ๊ฑฐ.InnoDB
: ๋ ๋ณด์ ์ธ ์คํ ๋ฆฌ์ง ์์ง. MVCC๋ฅผ ์ง์ํ์ฌ ๋์ ๋์์ฑ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํจ.MVCC
: Multi Version Concurrency Control. ๋ฒํผ ํ, ์ธ๋ ๋ก๊ทธ๋ฅผ ์ด์ฉํด ๊ฒฉ๋ฆฌ ์์ค์ ๋ฐ๋ฅธ ์ฝ๊ธฐ ๊ธฐ๋ฅ ์ ๊ณต. ์ด์ ๋ฐ๋ผ No-Locking Consistent Read๊ฐ ๊ฐ๋ฅ.๋ฒํผ ํ
: InnoDB ์คํ ๋ฆฌ์ง ์์ง ์ค ๊ฐ์ฅ ํต์ฌ์ ์ธ ๋ถ๋ถ. ์ฐ๊ธฐ ์์ ์ ์ง์ฐํ๊ณ ์ผ๊ด ์ฒ๋ฆฌํด ๋์คํฌ ์์ ํ์๋ฅผ ์ค์ธ๋ค.์ธ๋ ๋ก๊ทธ
: UPDATE ์คํ ์, ์ด์ ๋ฒ์ ์ ์ธ๋ ๋ก๊ทธ์ ๊ธฐ๋ก๋๊ณ , ์ ์์ฒญ์ ๋ฒํผ ํ์ ์ ์ฅ๋๋ค. ํธ๋์ญ์ ์๋ฃ ์ ์ธ๋ ๋ก๊ทธ ๋ด ๋ด์ฉ์ ์ ๊ฑฐ๋๋ค. ํธ๋์ญ์ ๋กค๋ฐฑ์ด ์ํ๋ ๊ฒฝ์ฐ, ์ธ๋ ๋ก๊ทธ์ ์๋ ๊ฐ์ ์ด์ฉํด ๋ณต๊ตฌํ๋ค. ์ธ๋ ๋ก๊ทธ๊ฐ ์ฅ์๊ฐ ์ ์ง๋๋ ๊ฒฝ์ฐ ์ฑ๋ฅ์ ์ข์ง ์์ ๊ธ์ฆ ์ฌ๋ถ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ๊ฒ์ด ์ข๋ค.READ_UNCOMMITTED
: ์์ง ๋ฐ์๋์ง ์์ ์์ ๋ณธ์ ๋ณด์ฌ์ค. ์ฆ, ๋ฒํผ ํ์๋ง ์๊ณ ๋์คํฌ์๋ ๋ฐ์๋์ง ์์, ์ปค๋ฐ๋์ง ์์ ๋ณ๊ฒฝ๋ถ์ด ๋ฐํ๋๋ค.READ_COMMITTED
: ์ต์ข ์ปค๋ฐ๋ณธ์ ๋ณด์ฌ์ค. ์ฆ, UPDATE ์์ฒญ์ด ์ฒ๋ฆฌ์ค์ด๊ณ ์์ง ์ปค๋ฐ๋์ง ์์์ ๊ฒฝ์ฐ, ์ธ๋ ๋ก๊ทธ์ ์๋ ๋ง์ง๋ง ์ปค๋ฐ ๋ฒ์ ์ ๋ฐํํ๋ค.No-Locking Consistent Read
: ๋ณ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ธ ๋ฒํผ ํ๊ณผ ์ธ๋ ๋ก๊ทธ๋ฅผ ์ด์ฉํ๊ธฐ ๋๋ฌธ์ ํธ๋์ญ์ ์ด ์งํ์ค์ด๋๋ผ๋ ์ํ๋ ๋ฒ์ ์ ๋ํ ์ฝ๊ธฐ๊ฐ ๊ฐ๋ฅํ๋ค.ํ ์ด๋ธ ์คํ์ด์ค
: ์ธ๋ ๋ก๊ทธ๊ฐ ์ ์ฅ๋๋ ๊ณณ ์ด๋ฅด๋ ๋ง์ด๋ค. ์ปค๋ฐ์ด ๋ฐ์๋๋ฉด ์ฌ๊ธฐ์ ์ ์ฅ๋์๋ ์์ ๊ฐ์ด ๋ถํ์ํด์ง๊ณ , ์ด๋ฅผ ํผ์ง ์ค๋ ๋(Purge Thread)๊ฐ ์ญ์ ํ๋ค.ํผ์ง ์ค๋ ๋
: ํธ๋์ญ์ ์ด ์ปค๋ฐ๋์ด ๋ถํ์ํด์ง ์ธ๋ ํ ์ด๋ธ ์คํ์ด์ค๋ฅผ ์ ๊ฑฐํ๋ ์ค๋ ๋. ์ฃผ๊ธฐ์ ์ผ๋ก ์ํ๋๋ฉฐ ์ด ์์ ์ ์ธ๋ ํผ์ง(Undo Purge) ๋ผ๊ณ ์ด๋ฅธ๋ค.๋ฆฌ๋ ๋ก๊ทธ
: ํธ๋์ญ์ ์ํ ๋์ค ์์คํ ์ ๋น์ ์ ์ข ๋ฃ๊ฐ ์ผ์ด๋ฌ์ ๋ ์ด๋ฅผ ๋ณต๊ตฌํ๊ธฐ ์ํด, ์์ฒญ ์์ ์ ์์ฒญ ๋ด์ฉ์ ๊ธฐ๋กํ๋ ๊ณต๊ฐ์ด๋ค. MySQL ์๋ฒ๊ฐ ์๋ก ๊ธฐ๋๋ ๋ ๋ฆฌ๋ ๋ก๊ทธ๋ฅผ ํ์ธํด์ ๋ฐ์๋์ง ์์ ๋ฐ์ดํฐ๊ฐ ์๋์ง ๊ฒ์ฌํ๋ค.[10๋ถ ํ ์ฝํก] ๐ซ ์ฐ๊ธฐ์ MySQL แแ กแแ ตแแ ฆแจแแ ฅ ์ค ์บก์ณ
๊ด๋ จ ํ์ด์ง
4์ฅ ์ํคํ ์ฒ ์ ๋ฐ