RealMySQL 8.0 ์ ์ฝ๊ณ ์ ๋ฆฌํ์ต๋๋ค.
4.1.1 ์ ์ฒด ๊ตฌ์กฐ
MySQL ์๋ฒ = ์ฌ๋์ ๋จธ๋ฆฌ ์ญํ ์ ๋ด๋นํ๋ MySQL ์์ง + ์๋ฐ ์ญํ ์ ๋ด๋นํ๋ ์คํ ๋ฆฌ์ง ์์ง
MySQL ์์ง
- ์ปค๋ฅ์ ํธ๋ค๋ฌ : ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์ปค๋ฅ์ ๋ฐ ์ฟผ๋ฆฌ ์์ฒญ์ ์ฒ๋ฆฌ
- SQL ์ธํฐํ์ด์ค : DML, DDL, Procedure, View ๋ฑ SQL ์ธํฐํ์ด์ค ์ ๊ณต
- SQL ํ์ : SQL ๋ฌธ๋ฒ ์ค๋ฅ ํ์ง ๋ฐ SQL ์ฟผ๋ฆฌ ๋ฌธ์ฅ์ MySQL์ด ์ฒ๋ฆฌํ๊ธฐ ์ข์ ํ ํฐ ๋จ์๋ก ๋๋ ์ ํธ๋ฆฌ ํํ๋ก ํ์ฑํ๋ ์์ ๋ด๋น
- SQL ์ตํฐ๋ง์ด์ : ์ฟผ๋ฆฌ์ ์ต์ ํ๋ ์คํ์ ๋ด๋น
- ์บ์ & ๋ฒํผ : ์ฑ๋ฅ ํฅ์์ ์ํ ๋ณด์กฐ ์ ์ฅ์ ๊ธฐ๋ฅ ๋ด๋น
์คํ ๋ฆฌ์ง ์์ง
- ํธ๋ค๋ฌ API๋ฅผ ๋ง์กฑํ๋ฉด ๋๊ตฌ๋ ์ง ์คํ ๋ฆฌ์ง ์์ง์ ๊ตฌํํ์ฌ MySQL์ ์ถ๊ฐํ์ฌ ์ฌ์ฉํ ์ ์์
- ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ ์คํ ๋ฆฌ์ง์ ์ ์ฅํ๊ฑฐ๋ ๋์คํฌ ์คํ ๋ฆฌ์ง๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ ๋ถ๋ถ
๐ก MySQL ์์ง์ ํ๋์ง๋ง ์คํ ๋ฆฌ์ง ์์ง์ ์ฌ๋ฌ ๊ฐ๋ฅผ ๋์์ ์ฌ์ฉํ ์ ์์
๋ค์ ์์ ์ ๊ฐ์ด ํ ์ด๋ธ์ด ์ฌ์ฉํ ์คํ ๋ฆฌ์ง ์์ง์ ์ง์ ํ๋ฉด ์ดํ ํ ์ด๋ธ์ ๋ชจ๋ ์ฝ๊ธฐ ์์ ์ด๋ ๋ณ๊ฒฝ ์์ ์ ์ ์๋ ์คํ ๋ฆฌ์ง ์์ง์ด ์ฒ๋ฆฌํ๋ค.
mysql > CREATE TABLE test_table (fd1 IT, fd2 INT) ENGINE = INNODB;
ํธ๋ค๋ฌ API
MySQL ์์ง์ ์ฟผ๋ฆฌ ์คํ๊ธฐ์์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฑฐ๋ ์ฝ์ด์ผ ํ ๋๋ ๊ฐ ์คํ ๋ฆฌ์ง ์์ง์๊ฒ ์ฐ๊ธฐ ๋๋ ์ฝ๊ธฐ๋ฅผ ์์ฒญํ๋๋ฐ, ์ด๋ฌํ ์์ฒญ์ ํธ๋ค๋ฌ(Handler) ์์ฒญ์ด๋ผ๊ณ ํ๊ณ , ์ฌ๊ธฐ์ ์ฌ์ฉ๋๋ API๋ฅผ ํธ๋ค๋ฌ API๋ผ๊ณ ํ๋ค.
4.1.2 MySQL ์ค๋ ๋ฉ ๊ตฌ์กฐ
MySQL์ ํ๋ก์ธ์ค ๊ธฐ๋ฐ์ด ์๋๋ผ ์ค๋ ๋ ๊ธฐ๋ฐ์ผ๋ก ์๋ํ๋ฉฐ, ํฌ๊ฒ ํฌ๊ทธ๋ผ์ด๋ ์ค๋ ๋ + ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋
ํฌ๊ทธ๋ผ์ด๋ ์ค๋ ๋(ํด๋ผ์ด์ธํธ ์ค๋ ๋)
- MySQL ์๋ฒ์ ์ ์๋ ํด๋ผ์ด์ธํธ์ ์๋งํผ ์กด์ฌ
- ์ฃผ๋ก ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ๋ ์ฟผ๋ฆฌ ๋ฌธ์ฅ์ ์ฒ๋ฆฌ(๊ณ ๊ฐ ์ฐฝ๊ตฌ ์ญํ )
- ์ฌ์ฉ์๊ฐ ์์
์ ๋ง์น๊ณ ์ปค๋ฅ์
์ ์ข
๋ฃํ๋ฉด, ํด๋น ์ปค๋ฅ์
์ ๋ด๋นํ๋ ์ค๋ ๋๋ ๋ค์ ์ค๋ ๋ ์บ์(Thread pool)๋ก ๋๋์๊ฐ๋ค.
- ์ด๋ฏธ ์ค๋ ๋ ์บ์์ ์ผ์ ๊ฐ์ ์ด์์ ๋๊ธฐ ์ค์ธ ์ค๋ ๋๊ฐ ์์ผ๋ฉด ์ค๋ ๋ ์บ์์ ๋ฃ์ง ์๊ณ ์ค๋ ๋๋ฅผ ์ข ๋ฃ์์ผ ์ผ์ ๊ฐ์์ ์ค๋ ๋๋ง ์ค๋ ๋ ์บ์์ ์กด์ฌํ๊ฒ ํ๋ค.
- ์ค๋ ๋์ ๊ฐ์๋ฅผ ์ผ์ ํ๊ฒ ์ ์งํ๊ฒ ๋ง๋ค์ด์ฃผ๋ ํ๋ผ๋ฏธํฐ = thread_cache_size
๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋
- Insert buffer ๋ฅผ ๋ณํฉํ๋ ์ค๋ ๋
- ๋ก๊ทธ๋ฅผ ๋์คํฌ๋ก ๊ธฐ๋กํ๋ ์ค๋ ๋
- InnoDB ๋ฒํผ ํ์ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ๊ธฐ๋กํ๋ ์ค๋ ๋
- ๋ฐ์ดํฐ๋ฅผ ๋ฒํผ๋ก ์ฝ์ด๋ค์ด๋ ์ค๋ ๋
- ๊ทธ๋ฆฌ๊ณ ๊ธฐํ ์ฌ๋ฌ ๊ฐ์ง ์ ๊ธ์ด๋ ๋ฐ๋๋ฝ์ ๋ชจ๋ํฐ๋ง ํ๋ ์ค๋ ๋
- ๋ชจ๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋๋ฅผ ๊ด๋ฆฌํ๋ ๋ฉ์ธ ์ค๋ ๋
๊ฐ์ฅ ์ค์ํ ๊ฒ์ **๋ก๊ทธ ์ค๋ ๋(Log thread)**์ ๋ฒํผ์ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ๋ก ๋ด๋ ค์ฐ๋ ์์ ์ ์ฒ๋ฆฌํ๋ ์ฐ๊ธฐ ์ฐ๋ ๋
์ฝ๊ธฐ / ์ฐ๊ธฐ ์ฐ๋ ๋์ ๊ฐ์๋ฅผ ์ง์ ํ๋ ํ๋ผ๋ฏธํฐ = innodb_write_io_threads / nodb_read_io_threads
4.1.3 ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐ ์ฌ์ฉ๊ตฌ์กฐ
๊ธ๋ก๋ฒ ๋ฉ๋ชจ๋ฆฌ ์์ญ
- MySQL ์๋ฒ๊ฐ ์์๋๋ฉด์ ์ด์์ฒด์ ๋ก๋ถํฐ ํ ๋น๋๋ค.
- ํ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ๋ง ํ ๋น๋๋ค. ๋ชจ๋ ์ค๋ ๋์ ์ํด ๊ณต์ ๋๋ค.
๋ก์ปฌ(์ธ์ ) ๋ฉ๋ชจ๋ฆฌ ์์ญ
- MySQL ์๋ฒ ์์ ์กด์ฌํ๋ ํด๋ผ์ด์ธํธ ์ค๋ ๋๊ฐ ์ฟผ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ, ์๋ฒ์์ ์ปค๋ฅ์ ์ ์ธ์ ์ด๋ผ๊ณ ํ๊ธฐ ๋๋ฌธ์ ์ธ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ ์ด๋ผ๊ณ ๋ ํ๋ค.
- ๊ฐ ํด๋ผ์ด์ธํธ ์ค๋ ๋ ๋ณ๋ก ๋ ๋ฆฝ์ ์ผ๋ก ํ ๋น๋๋ฉฐ ์ ๋ ๊ณต์ ๋์ง ์๋๋ค.
4.1.4 ํ๋ฌ๊ทธ์ธ ์คํ ๋ฆฌ์ง ์์ง ๋ชจ๋ธ
MySQL์ ๋ ํนํ ๊ตฌ์กฐ ์ค ๋ํ์ ์ธ ๊ฒ์ด ๋ฐ๋ก ํ๋ฌ๊ทธ์ธ ๋ชจ๋ธ์ด๋ค!
- ์ฌ์ฉ์ ์ธ์ฆ ๋ฐฉ์, ๊ฒ์ ์์ง, ์คํ ๋ฆฌ์ง ์์ง ๋ฑ์ ํ๋ฌ๊ทธ์ธ ํํ๋ก ๊ฐ๋ฐํด์ ์ฌ์ฉํ ์ ์๋ค.
- ํธ๋ค๋ฌ API MySQL ์์ง์ ์ฟผ๋ฆฌ ์คํ๊ธฐ๋ ์คํ ๋ฆฌ์ง ์์ง์ด ์ ๊ณตํ๋ API๋ฅผ ์ด์ฉํ์ฌ ์คํ ๋ฆฌ์ง ์์ง์๊ฒ CRUD ์์ ์ ์์ํ๋ค. → ์ด ๋, ์คํ ๋ฆฌ์ง ์์ง์ด ์ ๊ณตํ๋ API = ํธ๋ค๋ฌ API
- ํ๋ฌ๊ทธ์ธ ๋ชจ๋ธ ํธ๋ค๋ฌ API ๊ท์น์ ๋ง์กฑํ๋๋ก ๊ตฌํํ๋ฉด ๋๊ตฌ๋ ์ง ์คํ ๋ฆฌ์ง ์์ง์ ๋ง๋ค์ด์ MySQL ์๋ฒ์ ์ถ๊ฐํด์ ์ฌ์ฉํ ์ ์๋ค.
- ๋๋ถ๋ถ์ ์์
์ ์์ง์์ ์ฒ๋ฆฌ๊ฐ ๋๋ฉฐ, ๋ง์ง๋ง์ธ “์ฝ๊ธฐ/์ฐ๊ธฐ” ๋ง์ด ์คํ ๋ฆฌ์ง ์์ง์์ ์ฒ๋ฆฌํ๊ฒ ๋๋ค.
- GROUP BY, ORDER BY ๋ฑ ๋ณต์กํ ์ฟผ๋ฆฌ๋ MySQL ์์ง์์ ์ฒ๋ฆฌํ๋ฏ๋ก ์ค์ ๋ก ๋ฐ์ดํฐ ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ธฐ๋ฅ์ ์์๋ณด์ด๊ฒ ์ง๋ง, ์ฒ๋ฆฌ ๋ฐฉ์์ด ์ผ๋ง๋ ๋ง์ด ๋ฌ๋ผ์ง ์ ์๋์ง ์ ์ ์๊ฒ ๋ ๊ฒ์ด๋ค.
- ์ฟผ๋ฆฌ ์์ ์ ์ฌ๋ฌ ํ์ ์์ ์ผ๋ก ๋๋๋๋ฐ, ์ด ์์ ์์ MySQL ์์ง ์์ญ๊ณผ ์คํ ๋ฆฌ์ง ์์ง ์์ญ์ ์ฐจ์ด๋ฅผ ์๋ ๊ฒ์ด ์ค์ํ๋ค.
4.1.5 ์ปดํฌ๋ํธ
- MySQL 8.0 ์ ๊ธฐ์กด ํ๋ฌ๊ทธ์ธ ์ํคํ ์ฒ๋ฅผ ๋์ฒดํ๊ธฐ ์ํจ
- ํ๋ฌ๊ทธ์ธ์ ๋จ์ ์ ๋ณด์ํด์ ๊ตฌํ๋จ
- INSTALL COMPONENT ๋ฅผ ํตํด์ ์ปดํฌ๋ํธ๋ฅผ ์ค์นํ๊ณ ๊ด๋ จ ์๋ก์ด ์์คํ ๋ณ์๋ฅผ ์ค์นํ๋ฉด ๋๋ค.
- MySQL ์๋ฒ ํ๋ฌ๊ทธ์ธ์ ๋จ์
- ์ค์ง MySQL ์๋ฒ์ ์ธํฐํ์ด์ค ํ ์ ์๊ณ , ํ๋ฌ๊ทธ์ธ๋ผ๋ฆฌ ํต์ ํ ์ ์๋ค.
- MySQL ์๋ฒ์ ๋ณ์๋ ํจ์๋ฅผ ์ง์ ํธ์ถํ๊ธฐ ๋๋ฌธ์ ์์ ํ์ง ์๋ค. (์บก์ํ ์ ํจ)
- ํ๋ฌ๊ทธ์ธ์ ์ํธ ์์กด ๊ด๊ณ๋ฅผ ์ค์ ํ ์ ์์ด์ ์ด๊ธฐํ๊ฐ ์ด๋ ต๋ค.
4.1.6 ์ฟผ๋ฆฌ ์คํ ๊ตฌ์กฐ
- ์ฟผ๋ฆฌ ํ์(Parser) : ์ฟผ๋ฆฌ ๋ฌธ์ฅ์ ๋ํด์ ๋ฌธ๋ฒ(Syntax) ํ์ธ์ ํ๊ณ ์ฟผ๋ฆฌ ๋ฌธ์ฅ์ ์ ์ ํ ๋จ์๋ก ๋ถํ ํ์ฌ ํ์ ํธ๋ฆฌ(parser tree)๋ฅผ ๋ง๋ ๋ค.
- ์ ์ฒ๋ฆฌ๊ธฐ(Pre-processor) : ์์์ ๋ง๋ค์ด์ง ํ์ ํธ๋ฆฌ๋ฅผ ๋ณด๊ณ ๊ตฌ์กฐ์ ์ผ๋ก ๋ฌธ์ ๊ฐ ์๋์ง ํ์ธํ๋ค. (์๋ฅผ ๋ค๋ฉด, ์กด์ฌํ์ง ์๋ ํ ์ด๋ธ์ด๋ ์ปฌ๋ผ ๋ฑ์ ์ ๊ทผํ๋ค๊ฑฐ๋ ์ ๊ทผํ๋ ค๊ณ ๋ณด๋ ๊ถํ์ด ์๋ค๊ฑฐ๋ ํ๋ ๋ฑ)
- ์ตํฐ๋ง์ด์ (Optimizer) : ์์ฒญ๋ฐ์ ์ฟผ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ํ๋ฉด ๊ฐ์ฅ ์ ์ ๋น์ฉ์ผ๋ก ๋น ๋ฅด๊ฒ → ์ฆ, ์ต์ ์ผ๋ก ์ฒ๋ฆฌํ ์ง ๊ฒฐ์ ํ๋ค.
- ์์ผ๋ก ๊ฐ๋ฐ์๊ฐ ํด์ผํ ์ผ์ ์ด ์ตํฐ๋ง์ด์ ๊ฐ ๋ ๋์ ๊ฒฐ์ ์ ํ ์ ์๋๋ก ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ ๊ฒ = ์คํ ๊ณํ ์์ฑ
- ์คํ ์์ง : ์ตํฐ๋ง์ด์ ์ ์ํด ๊ฒฐ์ ๋ ์คํ ๊ณํ๋๋ก ํธ๋ค๋ฌ์๊ฒ ์ง์ํ๋ค.
- ex) ์์ ํ ์ด๋ธ ๋ง๋ค์ด → where ์กฐ๊ฑด๋๋ก ๋ ์ฝ๋ ์ฝ์ด์ → ์ฝ์ ๋ ์ฝ๋๋ฅผ ์์ ํ ์ด๋ธ์ ์จ๋ผ → …
- ํธ๋ค๋ฌ(์คํ ๋ฆฌ์ง ์์ง) : MySQL ์๋ฒ์ ๊ฐ์ฅ ๋ฐ๋จ์์ ์คํ ์์ง์ด ๋ด๋ฆฐ ์ง์๋๋ก ์์ ์ ์ํํ๋ค.
4.1.7 ๋ณต์
- ๋ณต์ (Replication) = 2๋ ์ด์์ MySQL ์๋ฒ๊ฐ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๋ด๋๋ก ์ค์๊ฐ ๋๊ธฐํํ๋ ๊ธฐ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๊ฐ ๊ฐ์๋ก ๋์ฉ๋ํ ๋์ด ๊ฐ๋ ๊ฒ์ ์๊ฐํ๋ฉด ํ์ฅ์ฑ(Scalability)๋ DBMS์์ ์์ฃผ ์ค์ํ ์์
- MySQL์ ๋ณต์ ๋ ๊ฑฐ์ 2000๋ ๋๋ถํฐ ์ ๊ณต๋๊ธฐ ๋๋ฌธ์ ํ DBMS์ ๋ณต์ ๋ณด๋ค ํจ์ฌ ์ด์ ๋ถํฐ ์ ๊ณต๋ ๊ธฐ๋ฅ์ด๋ฉฐ ๋ํ ๊ทธ๋งํผ ์์ ์
- ๋ง์คํฐ ์๋ฒ(INSERT/UPDATE ์ด์ฉ, Primary) + ์ฌ๋ ์ด๋ธ ์๋ฒ(SELECT๋ง ๊ฐ๋ฅ, Secondary)
- ๋ง์คํฐ๋ ๋ฐ๋์ 1๊ฐ, ์ฌ๋ ์ด๋ธ๋ 1๊ฐ ์ด์์ด์ง๋ง ์๋ฒ ํ๋๋ก ๋ง์คํฐ์ด๋ฉด์ ์ฌ๋ ์ด๋ธ๋ ์ํํ๋๋ก ์ค์ ํ๋ ๊ฒ๋ ๊ฐ๋ฅ
- ๋จ์ง ์๋ฒ์ ์ญํ ๋ชจ๋ธ์ ์ง์นญํ๋ ๊ฒ์ผ๋ฟ!
- ๋ง์คํฐ์ ์ฐ์ธ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ ์ด๋ธ์ “๋ณต์ "ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํํ๋ค.
- ๋ง์คํฐ ์๋ฒ๋ ๋ณต์ ๋ฅผ ์ํด์ MySQL ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ๋ฅผ ํ์ฑํํด์ ๋จ๊ฒจ์ผ ํ๋ค.
- ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ์๋ DML(๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋ ๋ฌธ์ฅ)๊ณผ DDL(์คํค๋ง๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฌธ์ฅ)์ด ๊ธฐ๋ก๋จ
- ์ฌ๋ ์ด๋ธ ์๋ฒ๋ **๋ง์คํฐ ์๋ฒ์ ์ ์ํ ์ ๋ณด(IP, Port, ๊ณ์ )**๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉด ๋๋ค.
- ๋ง์คํฐ ์๋ฒ๋ก ๋๊ธฐํ ์์ฒญ์ ํ๊ณ ๋ฐ์์จ ๋ด์ญ์ ๋ฆด๋ ์ด ๋ก๊ทธ์ ๊ธฐ๋กํ๋ค.
- ์ฐธ๊ณ ๋ก ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ์ ๋ฆด๋ ์ด ๋ก๊ทธ๋ ๋ด์ฉ์ด ๋์ผํ๋ค.
- ๐จ ๋ณต์ ์ ์ฃผ์์ฌํญ
- ์ฌ๋ ์ด๋ธ๋ ํ๋์ ๋ง์คํฐ๋ง ์ค์ ๊ฐ๋ฅ
- ์ฌ๋ ์ด๋ธ๋ ํญ์ ์ฝ๊ธฐ ์ ์ฉ
- ๋ง์คํฐ ์ฅ๋น์ ์ฌ๋ ์ด๋ธ ์ฅ๋น ์ฌ์์ ๋์ผํ ๊ฒ์ผ๋ก ์ฌ์ฉ
- ๋ณต์ ๊ฐ ๋ถํ์ํ ๊ฒฝ์ฐ ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ ์ค์ง(๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ ์์ฑ์ ๋น์ฉ์ด ๊ต์ฅํ ํฐ ์์ )
- ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ์ ํธ๋์ญ์
๊ฒฉ๋ฆฌ ์์ค(isolation level)
- ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ ํ์ผ์ ์ด๋ค ๋ด์ฉ์ด ๊ธฐ๋ก๋๋๋์ ๋ฐ๋ผ STATEMENT ํฌ๋งท ๋ฐฉ์๊ณผ ROW ํฌ๋งท ๋ฐฉ์
- STATEMENT ํฌ๋งท : ๋ง์คํฐ์์ ์คํ๋๋ ์ฟผ๋ฆฌ ๋ฌธ์ฅ ๊ธฐ๋ก
- ROW ํฌ๋งท : ๋ง์คํฐ์์ ์คํ๋ ์ฟผ๋ฆฌ์ ์ํด ๋ณ๊ฒฝ๋ ๋ ์ฝ๋ ๊ฐ์ ๊ธฐ๋ก
4.1.8 ์ฟผ๋ฆฌ ์บ์
- ์ฟผ๋ฆฌ(SQL)๋ฅผ ์บ์ํ์ง ์๊ณ , ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์บ์ํ๋ค.
- ์ฟผ๋ฆฌ ์บ์๋ key, value ์์ ๋งต(Map) ๊ฐ์ ์๋ฃ๊ตฌ์กฐ๋ก ๋์ด์๋ค.
- MySQL์๋ง ์๋ ๊ธฐ๋ฅ์ด๋ฉฐ, ์๊ฐ๋ณด๋ค ํจ์จ์ ์ด์ง ์์ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
- ๐ฝ ์ฟผ๋ฆฌ ์บ์ ํ์ธ ์ ์ฐจ
- ์์ฒญ์ผ๋ก ๋ค์ด์จ ๋ฌธ์ฅ์ด ์ฟผ๋ฆฌ ์บ์์ ์กด์ฌํ๋๊ฐ? (๊ณต๋ฐฑ, ๋์๋ฌธ์ ๋ฑ ์๋ฒฝํ๊ฒ ์ผ์นํด์ผ)
- ์ฌ์ฉ์์ ๊ถํ์ ์ถฉ๋ถํ๊ฐ?
- ํธ๋์ญ์
๋ด์์ ์คํ๋ ์ฟผ๋ฆฌ๋ฉด, ๊ฒฐ๊ณผ๋ ๊ฐ์ ๊ฐ์ ๋ฒ์ ๋ด์ ํธ๋์ญ์
์์ ๋ง๋ค์ด์ง ๊ฒฐ๊ณผ์ธ๊ฐ?
- ๊ฐ์ ๋ฒ์ : ์์ ์ ํธ๋์ญ์ ์์ด๋๋ณด๋ค ์์ ๊ฒ(์์ ์ ํธ๋์ญ์ ๋ณด๋ค ์ด์ ์ ์คํ๋ ํธ๋์ญ์ )๋ง ํ์ธ ๊ฐ๋ฅํ ์กฐ๊ฑด
- ์ฟผ๋ฆฌ์ ์ฌ์ฉ๋ ๊ธฐ๋ฅ์ด ์บ์๋ผ๋ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฅํ ์ ์๋๊ฐ?
- → CURRENT_DATE, SYSDATE, RAND ๊ฐ์ด ํธ์ถ ์์ ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ ์์๊ฐ ์๋์ง?, ๋ณ์๊ฐ ๊ฒฐ๊ณผ์ ์ํฅ์ ๋ฏธ์น๋์ง?
- ์บ์ ์์ฑ ํ ํด๋น ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ด ์์๋์ง?
- ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ๋๋ฌด ํฐ ๋ฐ์ดํฐ๋ ์๋์ง?
- ์ฟผ๋ฆฌ ์บ์๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๊ฒ ํ๋ ์์๊ฐ ์๋์ง?
- ์บ์ํ ์ ์๋ ์์
- ์์ ํ ์ด๋ธ์ ๋ํ ์ฟผ๋ฆฌ
- ์ฌ์ฉ์ ๋ณ์ ์ฌ์ฉํ ์ฟผ๋ฆฌ
- ์ปฌ๋ผ(column)๊ธฐ๋ฐ ๊ถํ ์ค์
- LOCK IN SHARE MODE ํํธ
- FOR UPDATE ํํธ
- User Defined Function ์ฌ์ฉ
- ๋ ๋ฆฝ์ ์ธ SELECT ๋ฌธ์ด ์๋ ์ผ๋ถ๋ถ์ ์๋ธ ์ฟผ๋ฆฌ
- Stored Procedure, Function, Trigger์์ ์ฌ์ฉํ ์ฟผ๋ฆฌ
- SQL_NO_CACHE ํํธ
๐ง ๋ณต์กํ ์ฟผ๋ฆฌ ์บ์ ํ์ธ ์ ์ฐจ(์ด ๋ฐ์๋ ๋ ์์)๊ฐ ์๊ธฐ์ ์บ์ ์ ์ค๋ฅ ์ด ๋จ์ด์ง ์ ์๊ณ , ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ๋๋ฌด ํฌ๋ฉด ์บ์๋ฅผ ๋น์ฐ๋๋ฐ๋ ์ค๋ฒํค๋๊ฐ ๊ฑธ๋ฆฌ๋ฏ๋ก ์ ์ฒด์ ์ผ๋ก ๋ณด์์ ๋ ๊ณผ์ฐ ํจ์จ์ ์ธ๊ฐ์ ๋ํด์๋ ์ฌ์ฉ ํ๊ฒฝ์ ์ ๋ฐ์ ธ๋ด์ผ ํ ํ์๊ฐ ์๋ค…
4.1.9 ์ค๋ ๋ ํ
์ผ์ ๋์ ์ค๋ ๋๋ฅผ ๋ฏธ๋ฆฌ ์์ฑํด๋๊ณ , ์ค๋ ๋๊ฐ ํ์ํ ๋ ๋ฏธ๋ฆฌ ์์ฑ๋ ์ค๋ ๋๋ฅผ ์ ๊ณตํ๋ ๋ฐฉ์ → why? ์์ฒญ๋ง๋ค ์ค๋ ๋๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ ์ค๋ฒํค๋๊ฐ ๋ง์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ค์ด๊ณ ์!
- ๋ฐ์ํ๋ ์ค๋ฒํค๋
- ์ค๋ ๋ ์์ฑ, ์ ๊ฑฐ
- context switching
- ์ค๋ ๋ ์ค์ผ์ค๋ง
- Enterprise ๋ฒ์ : ์ค๋ ๋ ํ ์ ๊ณต Community ๋ฒ์ : ์ ๊ณต X → Percona Server ์ฌ์ฉํ๋ฉด ๋จ..
4.1.10 ํธ๋์ญ์ ์ง์ ๋ฉํ๋ฐ์ดํฐ
- ๋ฉํ๋ฐ์ดํฐ : DB ์๋ฒ์์ ํ ์ด๋ธ์ ๊ตฌ์กฐ ์ ๋ณด, ์คํ ์ด๋ ํ๋ก๊ทธ๋จ ๋ฑ์ ์ ๋ณด
- ๋ฉํ๋ฐ์ดํฐ๋ค์ InnoDB์ ์ ์ฅ