์ถ์ฒ: https://www.youtube.com/watch?v=NkZ6r6z2pBg

๐ ์ธ๋ฑ์ค(INDEX)๋ ๋ฌด์์ด๋ฉฐ, ์ ํ์ํ๊ฐ?
์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ์์ค๊ณ , ๋ฐ์ดํฐ๊ฐ ๋ง์์ง์๋ก ๋๋ ค์ง๋ ์กฐํ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
๐ก ์ธ๋ฑ์ค์ ์ฃผ์ ์ข
๋ฅ์ ํน์ง์ ๋ฌด์์ธ๊ฐ?
| ์ข
๋ฅ | ํน์ง | ์ฅ์ | ๋จ์ |
|---|
| ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค | ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋์ด ์ธ๋ฑ์ค์ ํจ๊ป ์ ์ฅ๋จ | ๋ฒ์ ๊ฒ์์ ๊ฐ๋ ฅ | ๋ฐ์ดํฐ ์ฝ์
/์ญ์ ์ ์ ๋ ฌ ๋น์ฉ ํผ |
| ๋
ผํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค | ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ์ฐธ์กฐํ๋ฉฐ ๋ณ๋๋ก ์ ์ฅ๋จ | ์ฝ์
/์ญ์ ๋น์ฉ ์ ์ | ์ถ๊ฐ ์ ์ฅ ๊ณต๊ฐ ํ์, ๋ฐ์ดํฐ ๊ฒ์ ์ ํ ๋จ๊ณ ๋ ๊ฑฐ์นจ |
๋ฐฐ๊ฒฝ์ง์: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ค๋ฅผ ์ดํดํ๊ธฐ ์ํ ๊ธฐ์ด ๊ฐ๋
์ด ์๋ฃ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ๋ฅ์ ์ข์ฐํ๋ ํต์ฌ ๊ฐ๋
์ธ ์ธ๋ฑ์ค์ ๋ํด ์ค๋ช
ํ๊ณ ์์ต๋๋ค. ํนํ ์ธ๋ฑ์ค์ ์ข
๋ฅ(ํด๋ฌ์คํฐ๋, ๋
ผํด๋ฌ์คํฐ๋)์ ์ด๋ก ์ธํด ๋ฐ์ํ๋ ์ฑ๋ฅ์์ ํน์ง์ ๊น์ด ์๊ฒ ๋ค๋ฃจ์ฃ . ์๋ฃ๋ฅผ 100% ์ดํดํ๊ธฐ ์ํด, ๋ฐํ์ ๋ฐฐ๊ฒฝ์ด ๋๋ ๋งฅ๋ฝ๊ณผ ํจ๊ป ํต์ฌ์ ์ธ ์ฉ์ด ๋ฐ ๊ฐ๋
์ ๋ฏธ๋ฆฌ ์ดํด๋ด
์๋ค.
1. MySQL๊ณผ InnoDB์ ์ค์์ฑ
- ์ด ๋ฐํ์ ๋ด์ฉ์ ๋จ์ํ '์ธ๋ฑ์ค' ์ผ๋ฐ๋ก ์ด ์๋๋ผ, ํ์ฌ ๊ฐ์ฅ ๋๋ฆฌ ์ฐ์ด๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ธ MySQL์ InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ๊ธฐ์ค์ผ๋ก ์ค๋ช
ํ๊ณ ์์ต๋๋ค .
- ์ธ๋ฑ์ค์ ์๋ ๋ฐฉ์, ํนํ ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค์ ๊ตฌํ ๋ฐฉ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ข
๋ฅ(์: MySQL, PostgreSQL, MSSQL)์ ์คํ ๋ฆฌ์ง ์์ง(์: InnoDB, MyISAM)์ ๋ฐ๋ผ ์กฐ๊ธ์ฉ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
- ๋ฐ๋ผ์ ์๋ฃ์์ ๋์ค๋ 'ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค๋ PK์ ๊ฐ๋ค'๋ ์ค๋ช
์ InnoDB ํ๊ฒฝ์์ ๋งค์ฐ ์ค์ํ๊ฒ ์ ์ฉ๋๋ ํน์ง์์ ์๊ณ ๋ค์ผ๋ฉด ์ดํด๊ฐ ํจ์ฌ ์ฌ์์ง๋๋ค.
2. ์ธ๋ฑ์ค ๊ตฌํ์ ํต์ฌ ๊ฐ๋
: B-Tree ๊ตฌ์กฐ
์๋ฃ์์ ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ๊ฐ ์์๋๋ก ์ ๋ ฌ๋์ด ์๋ค๊ณ ์ค๋ช
ํฉ๋๋ค. ๋ฐ์ดํฐ๊ฐ ์ฝ์
/์ญ์ ๋์ด๋ ์ด ์ ๋ ฌ ์ํ๋ฅผ ์ ์งํ๊ณ ๋น ๋ฅด๊ฒ ๊ฒ์ํ ์ ์๊ฒ ํด์ฃผ๋ ๋ง๋ฒ ๊ฐ์ ๊ตฌ์กฐ๊ฐ ๋ฐ๋ก B-Tree(๋นํธ๋ฆฌ)์
๋๋ค.

- B-Tree๋ ๋ฌด์์ธ๊ฐ์?
- B-Tree๋ "Balanced Search Tree(๊ท ํ ๊ฒ์ ํธ๋ฆฌ)"์ ํ ์ข
๋ฅ์
๋๋ค. ์ผ๋ฐ์ ์ธ ํธ๋ฆฌ ๊ตฌ์กฐ์ ๋ฌ๋ฆฌ, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ์ผ ์์คํ
๊ณผ ๊ฐ์ด ๋์คํฌ I/O๊ฐ ์ฆ์ ํ๊ฒฝ์์ ์ต๊ณ ์ ์ฑ๋ฅ์ ๋ด๊ธฐ ์ํด ์ค๊ณ๋์์ต๋๋ค .
- ํต์ฌ ํน์ง:
- ๊ท ํ ์กํ ๊ตฌ์กฐ (Balanced): ํธ๋ฆฌ์ ๋ชจ๋ '์ ๋
ธ๋(๋ฐ์ดํฐ๋ฅผ ๋ด๋ ๊ฐ์ฅ ์๋์ธต)'๋ ๋ฃจํธ ๋
ธ๋(๊ฐ์ฅ ์์ธต)์์๋ถํฐ ๊ฐ์ ๊ฑฐ๋ฆฌ์ ์์ต๋๋ค. ์ด๋ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ํญ์ ์ผ์ ํ ์๊ฐ(O(log n))์ด ๊ฑธ๋ฆฌ๋๋ก ๋ณด์ฅํฉ๋๋ค .
- ๋๊ณ ๋ฎ์: B-Tree๋ ํ ๋
ธ๋์ ๋ง์ ์์ ํค(Key)๋ฅผ ์ ์ฅํ ์ ์์ด, ํธ๋ฆฌ์ ๋์ด๊ฐ ๋งค์ฐ ๋ฎ์ต๋๋ค. ๋์คํฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋, ํธ๋ฆฌ์ ๋์ด๊ฐ ๋ฎ๋ค๋ ๊ฒ์ ๋์คํฌ๋ฅผ ์ฝ๋ ํ์๊ฐ ์ ๋ค๋ ๋ป์ด๋ฉฐ, ์ด๋ ๊ณง ์๋ ํฅ์์ผ๋ก ์ด์ด์ง๋๋ค.
- ์์ฐจ์ ์ ๊ทผ ์ฉ์ด: B-Tree์ ์ ๋
ธ๋๋ ๋ณดํต ์์๋๋ก ์ฐ๊ฒฐ๋์ด ์์ด, ํน์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ํ ๋ฒ์ ๊ฒ์์ ํ ๋ ์ด์ด์ง ๋
ธ๋๋ฅผ ๋ฐ๋ผ ์ฝ๊ฒ ์ด๋ํ ์ ์์ต๋๋ค.
- ์๋ฃ์์ ์ฐ๊ฒฐ์ :
- ์๋ฃ์์ "ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค๋ ์์๋๋ก ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋์ด ์์ด์ ๋ฒ์ ๊ฒ์์ ์์ฃผ ๊ฐ๋ ฅํฉ๋๋ค" ๋ผ๊ณ ์ค๋ช
ํ๋ ๊ทผ๋ณธ์ ์ธ ์ด์ ๊ฐ ๋ฐ๋ก ์ด B-Tree์ ์ ๋ ฌ ๋ฐ ์์ฐจ ์ ๊ทผ ํน์ง ๋๋ฌธ์
๋๋ค.
3. ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค ์ฑ๋ฅ์ ๋น๋ฐ: ๊ณต๊ฐ ์ง์ญ์ฑ
ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค๊ฐ ์ ๋ฒ์ ๊ฒ์์ ๊ฐ๋ ฅํ์ง ์ค๋ช
ํ ๋, ์๋ฃ๋ ๊ณต๊ฐ ์ง์ญ์ฑ์ด๋ผ๋ ๊ฐ๋
์ ์ธ๊ธํ๋ฉฐ ์บ์ ์ ๋ต๊ณผ ์ฐ๊ฒฐ ์ง์ต๋๋ค .
- ๊ณต๊ฐ ์ง์ญ์ฑ (Spatial Locality) ์ด๋?
- ์ปดํจํฐ ์์คํ
์์ ํน์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ๋ฉด, ๊ทธ ๋ฐ์ดํฐ ์ฃผ๋ณ์ ์๋ ๋ฐ์ดํฐ๋ ๊ณง ์ ๊ทผ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๋ ์๋ฆฌ์
๋๋ค.
- ์ด ์๋ฆฌ๋ CPU ์บ์ ๋ฉ๋ชจ๋ฆฌ์์ ๋งค์ฐ ์ค์ํฉ๋๋ค. CPU๋ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ(RAM)๋ณด๋ค ํจ์ฌ ๋น ๋ฅธ ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋๋ฐ, ๋์คํฌ๋ ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๋ ๋จ ํ๋์ ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ค๋ ๊ฒ์ด ์๋๋ผ, '์บ์ ๋ผ์ธ(Cache Line)' ๋๋ 'ํ์ด์ง(Page)' ๋จ์๋ก ์ฃผ๋ณ ๋ฐ์ดํฐ๊น์ง ํ ๋ฒ์ ๊ฐ์ ธ์ ์บ์์ ์ ์ฅํฉ๋๋ค.
- ๋น์ : ์ฐฝ๊ณ ์์ ๋ฌผ๊ฑด์ ์ฐพ์ ๋, ํ์ํ ๋ฌผ๊ฑด ํ๋๋ง ๊บผ๋ด์ง ์๊ณ ๊ทธ ๋ฌผ๊ฑด์ด ์๋ ์์ ์ ์ฒด๋ฅผ ์์
๋๋ก ์ฎ๊ฒจ ๋๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ์์ ์์ ๋ค๋ฅธ ํ์ํ ๋ฌผ๊ฑด๋ค์ด ๋ค์ด ์์ ๊ฐ๋ฅ์ฑ์ด ๋๊ธฐ ๋๋ฌธ์ด์ฃ .

- ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค์์ ๊ด๊ณ:
- ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ ์์ฒด๋ฅผ ์ธ๋ฑ์ค ์์์ ๋ง๊ฒ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ๋ ฌํฉ๋๋ค .
- ๋ง์ฝ ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํด 1๋ฒ๋ถํฐ 10๋ฒ๊น์ง์ ๋ ์ฝ๋๋ฅผ ๊ฒ์ํ ๋, ์ด ๋ฐ์ดํฐ๋ค์ ๋์คํฌ ์์์ ๊ฐ๊น์ด ์์น์ ์ ์ฅ๋์ด ์์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
- ๋ฐ๋ผ์ ์ฒซ ๋ฒ์งธ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋ ์ฃผ๋ณ ๋ฐ์ดํฐ๊น์ง ๋ฉ๋ชจ๋ฆฌ(๋ฒํผ ํ)์ ํ ๋ฒ์ ์ฌ๋ผ์ค๊ฒ ๋์ด, ์ดํ ๋ฐ์ดํฐ ์ ๊ทผ ์ ๋์คํฌ I/O๊ฐ ํ์ ์์ด์ ธ ์์ฒญ๋ ์๋ ํฅ์์ ์ป์ต๋๋ค . ์ด๊ฒ์ด ๋ฒ์ ๊ฒ์์ด ๊ฐ๋ ฅํ ์ด์ ์
๋๋ค.
4. ์ฑ๋ฅ ํ๋์ ํต์ฌ ์ฉ์ด
์๋ฃ์ ๋ง์ง๋ง ๋ถ๋ถ์์๋ ์ธ๋ฑ์ค ์ ๋ต์ ๋ณด์ํ๊ณ ์ฑ๋ฅ์ ๊ทน๋ํํ๊ธฐ ์ํ ์ค์ํ ์ค์ ๊ฐ๊ณผ ์ฉ์ด๋ค์ ์ธ๊ธํฉ๋๋ค.
4.1. Primary Key (PK)์ Auto Increment
- Primary Key (PK): ํ
์ด๋ธ์ ๊ฐ ํ์ ์ ์ผํ๊ฒ ์๋ณํ ์ ์๋ ๊ฐ์
๋๋ค. ์๋ฃ์์ ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค๋ PK๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ํ๋ฉฐ, ํ
์ด๋ธ๋น ํ๋๋ง ์กด์ฌํด์ผ ํ๋ค๊ณ ๊ฐ์กฐํฉ๋๋ค .
- Auto Increment (์๋ ์ฆ๊ฐ): PK ํ๋์ ์ ๋ ์ฝ๋๊ฐ ์ฝ์
๋ ๋๋ง๋ค ์๋์ผ๋ก ์์ฐจ์ ์ผ๋ก 1์ฉ ์ฆ๊ฐํ๋ ๊ณ ์ ๋ฒํธ๋ฅผ ์์ฑํ๋๋ก ์ค์ ํ๋ ์ต์
์
๋๋ค .
- ์ฑ๋ฅ ์ด์์ ํด๊ฒฐ:
- ์๋ฃ๋ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ PK๋ก ์ค์ ํ์ ๋ ์๊ธฐ๋ ์ฌ๊ฐํ ์ฑ๋ฅ ์ ํ ๋ฌธ์ ๋ฅผ ์๋ก ๋ญ๋๋ค .
- ์ด๋ฉ์ผ(๋ฌธ์์ด)์ ์์ฐจ์ ์ด์ง ์๊ธฐ ๋๋ฌธ์, ์๋ก์ด ์ด๋ฉ์ผ์ด ๋ค์ด์ฌ ๋๋ง๋ค ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค(๋ฐ์ดํฐ)์ ์ค๊ฐ์ ์ฝ์
๋์ด์ผ ํ๋ฉฐ, ์ด ๊ณผ์ ์์ ์๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ด๋ด๋ ๋นํจ์จ์ ์ธ ์์
(์ฐธ์ฌ)์ด ๋ฐ์ํฉ๋๋ค .
- Auto Increment๋ฅผ ์ฌ์ฉํ๋ฉด ID๊ฐ ํญ์ ๋ง์ง๋ง์ ์ถ๊ฐ๋๋ฏ๋ก, ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ด๋ด๋ ์์
์์ด ๊ฐ์ฅ ๋์๋ง ์ฝ์
๋์ด ์ฝ์
(INSERT) ์ฑ๋ฅ ์ด์๋ฅผ ํด์ํ ์ ์์ต๋๋ค .
4.2. ๋
ผํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค์ ํด์ ํ
์ด๋ธ
- ๋
ผํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค์ ํน์ง: ๋ฐ์ดํฐ ์์ฒด์ ๋ถ๋ฆฌ๋์ด ๊ฐ์ ์ฐธ์กฐ๋ฅผ ํตํด ๋ฐ์ดํฐ์ ์์น(PK ๊ฐ)๋ฅผ ์๋ ค์ฃผ๋ ์ญํ ์ ํฉ๋๋ค . ์์๊ฐ ์ค์ํ์ง ์์ผ๋ฉฐ, ํ ํ
์ด๋ธ์ ์ฌ๋ฌ ๊ฐ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
- ํด์ ํ
์ด๋ธ (Hash Table): ๋
ผํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ตฌ์กฐ ์ค ํ๋์
๋๋ค.
- ํด์ ํ
์ด๋ธ์ Key(๊ฒ์์ด)๋ฅผ ํด์ ํจ์๋ฅผ ํตํด ์ฃผ์(Bucket)๋ก ๋ณํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ฒ์ํฉ๋๋ค .
- ๊ฒ์ ๋์์ ์์น๋ฅผ ๋ฐ๋ก ์ ์ ์์ด ๋งค์ฐ ๋น ๋ฅธ ๊ฒ์ ์๋๋ฅผ ์๋ํฉ๋๋ค. ์๋ฃ์์ ๋
ผํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค๊ฐ "ํด์ ํ
์ด๋ธ ๋ฐฉ์์ ์ฌ์ฉํด์ ๊ต์ฅํ ๊ฒ์ ๋นจ๋ฆฌ ์ฐพ์ ์ ์๊ฒ ์ฃ " ๋ผ๊ณ ์ธ๊ธํ ๋ถ๋ถ์ด ๋ฐ๋ก ์ด ์๋ฆฌ์
๋๋ค.
4.3. InnoDB Buffer Pool Size (๋ฒํผ ํ ํฌ๊ธฐ)

- Buffer Pool์ ์ญํ :InnoDB ์คํ ๋ฆฌ์ง ์์ง์ด ๋์คํฌ I/O๋ฅผ ์ต์ํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ์บ์ ์์ญ์
๋๋ค .
- ์์ฃผ ์ ๊ทผํ๋ ๋ฐ์ดํฐ ๋ ์ฝ๋์ ์ธ๋ฑ์ค ๋ธ๋ก์ ์ด ๋ฒํผ ํ์ ์ ์ฅํด๋ก๋๋ค .
- ์ธ๋ฑ์ค๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ผ๋ ค ํ ๋, ๋์คํฌ ๋์ ๋ฒํผ ํ์ ๋ฐ์ดํฐ๊ฐ ์ด๋ฏธ ์๋ค๋ฉด ์์ฒญ๋ ์๋ ์ฐจ์ด๋ฅผ ๋ง๋ค์ด๋
๋๋ค (๋์คํฌ๋ ๋๋ฆฌ๊ณ ๋ฉ๋ชจ๋ฆฌ๋ ๋น ๋ฅด๋ฏ๋ก).
- ์ฑ๋ฅ ํ๋์ ํต์ฌ:
- ์๋ฃ์์๋ ์ด
innodb_buffer_pool_size ๊ฐ์ 1๊ธฐ๊ฐ, 2๊ธฐ๊ฐ ์ด์์ผ๋ก ์กฐ์ ํ์ฌ ํผํฌ๋จผ์ค๋ฅผ ํ ๋ค๋ฅด๊ฒ ๋ง๋ค ์ ์๋ค๊ณ ์กฐ์ธํฉ๋๋ค .
- ์ด ๊ฐ์ด ํด์๋ก DB๋ ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ฒ๋ผ ๋์ํ๊ฒ ๋์ด ๋์คํฌ ์ ๊ทผ ํ์๋ฅผ ์ค์ฌ ์ ๋ฐ์ ์ธ ์ฟผ๋ฆฌ ์ฑ๋ฅ์ ๋น์ฝ์ ์ผ๋ก ํฅ์์ํฌ ์ ์์ต๋๋ค.
5. ์ธ๋ฑ์ค์ ํจ์จ์ฑ ์ธก์ : ์นด๋๋๋ฆฌํฐ (Cardinality)
์ธ๋ฑ์ค๋ฅผ ๋ง๋ค ์ปฌ๋ผ์ ๊ฒฐ์ ํ ๋, ์๋ฃ์์ ์นด๋๋๋ฆฌํฐ๋ผ๋ ๊ฐ๋
์ ์ฌ์ฉํ๋ค๊ณ ์ธ๊ธํฉ๋๋ค .
1. ์ธ๋ฑ์ค์ ๊ธฐ๋ณธ ์ ์ ๋ฐ ํ์์ฑ

- ์ธ๋ฑ์ค์ ์ ์:
- ์ธ๋ฑ์ค๋ ๊ฒ์์ ์ํด ์์์ ๊ท์น๋๋ก ๋ถ์ฌ๋ ์์์ ๋์์ ๊ฐ๋ฆฌํค๋ ๋ฌด์ธ๊ฐ์ด๋ค .
- ์๋ฐ์์ ๋ฆฌ์คํธ ์์์ ์ ๊ทผํ๊ธฐ ์ํด ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ์ ์ฌํ๋ฉฐ , ์ฐ๋ฆฌ ์ฃผ๋ณ์ ๋ค์ํ ์์๋ค๋ ์ธ๋ฑ์ค๋ก ๋ณผ ์ ์๋ค .
- ์ค์ํ ์ธ๋ฑ์ค ์์:
- '2ํ๋
3๋ฐ 21๋ฒ'์ฒ๋ผ ํน์ ๋์์ ๋ช
ํํ ํน์ ํ ์ ์๋ ๊ฒ .
- '์์ธ์ ์กํ๊ตฌ ์ ์ฒ๋'๊ณผ ๊ฐ์ ์ฃผ์๋ ์ฐํธ๋ฒํธ๋ ์ธ๋ฑ์ค์ ์ผ์ข
์ด๋ค .
- ์ธ๋ฑ์ค๋ ํน์ ๋ฌด์ธ๊ฐ๋ฅผ ๊ผฌ์ง์ด ์ฐพ์๋ด๊ธฐ ์ํ ๋ณด์กฐ ์๋จ์ผ๋ก ์ดํดํ ์ ์๋ค .
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์์์ ์ธ๋ฑ์ค ํ์์ฑ:
- ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ฐพ์์ค๋์ง ์๋ ค์ค ์ ์๋ค .
- ๋ฐ์ดํฐ๊ฐ ๋ง์์ง์๋ก ์กฐํ ์ฑ๋ฅ์ด ๋๋ ค์ง๋ ๋ฌธ์ ๋ฅผ ์ธ๋ฑ์ค๋ฅผ ํตํด ํด๊ฒฐํ ์ ์๋ค (100%๋ ์๋์ง๋ง ๋ง์ ๋ถ๋ถ ํด๊ฒฐ ๊ฐ๋ฅ) .
- ๋๋ฆฐ ์ฟผ๋ฆฌ๋ ์กฐํ ๋ฌธ์ ๋ฐ์ ์ ์ธ๋ฑ์ค๋ฅผ ๋จผ์ ๊ณ ๋ คํด ๋ณด๋ ๊ฒ์ด ์ข๋ค .
2. ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค (Clustered Index)์ ์ดํด

- ์ธ๋ฑ์ค์ ๋ ๊ฐ์ง ์ข
๋ฅ: ์ธ๋ฑ์ค์๋ ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค์ ๋
ผํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค๊ฐ ์๋ค .
- ํด๋ฌ์คํฐ์ ๊ฐ๋
:
- ํด๋ฌ์คํฐ(Cluster)๋ ๊ตฐ์ง์ด๋ผ๋ ๋ป์ด๋ฉฐ, ๋ฐ๋์ฒด ํด๋ฌ์คํฐ, ์์ดํด๋ ์ด์คํฐ ๋ฑ์ ์ฉ์ด์์ ์ฌ์ฉ๋๋ค .
- ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ์ ์ธ๋ฑ์ค๊ฐ ํฉ์ณ์ ธ ๊ตฐ์งํ๋ ์ธ๋ฑ์ค๋ฅผ ์๋ฏธํ๋ค .
- ํน์ง์ ์ธ๋ฑ์ค๊ฐ ๋ฐ์ดํฐ์ ๊ฐ๊น์ด ์์ด ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ๋ ฌ๋์ด ์๋ ํํ์ด๋ค .
- ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค์ ์๋ ๋ฐฉ์ (์์):
- ๋ฐ์ดํฐ ์์ฒด๊ฐ ๋ฑ์(์์)๋๋ก ์ ๋ ฌ๋์ด ์๋ค๊ณ ๊ฐ์ ํ๋ค (์: 41๋ฑ, 42๋ฑ ๋ฑ) .
- 43๋ฑ์ ์๋ก์ด ๋ฐ์ดํฐ (์ ์
)๊ฐ ์ฝ์
๋์ด์ผ ํ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ๋ ์ ๋ ฌ ์์๋ฅผ ์ ์งํด์ผ ํ๋ค .
- ์ฝ์
๊ณผ์ : 43๋ฑ์ด ๋ค์ด๊ฐ ์์น๋ฅผ ํ๋ณดํ๊ธฐ ์ํด ๊ธฐ์กด์ 43๋ฑ ์ดํ์ ๋ฐ์ดํฐ๋ค (43๋ฑ, 44๋ฑ, 45๋ฑ...)์ด ํ ์นธ์ฉ ๋ค๋ก ๋ฐ๋ ค๋๊ฒ ๋๊ณ , ์๋ก์ด 43๋ฑ ๋ฐ์ดํฐ๊ฐ ์ฝ์
๋๋ค .
- ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค์ ์ฅ๋จ์ :
- ์ฅ์ (๋ฒ์ ๊ฒ์์ ๊ฐ๋ ฅ): ๋ฐ์ดํฐ๊ฐ ์ด๋ฏธ ์์๋๋ก ์ ๋ ฌ๋์ด ์์ผ๋ฏ๋ก, 41๋ฑ๋ถํฐ 43๋ฑ๊น์ง์ ๊ฐ์ด ํน์ ๋ฒ์๋ฅผ ๊ฒ์ํ ๋ ๋งค์ฐ ๊ฐ๋ ฅํ๊ณ ์ ๋ฆฌํ๋ค .
- ๋จ์ (์ฝ์
/์ ๋ ฌ ๋น์ฉ ๋ฐ์):
- ์ค๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์ฝ์
๋ ๊ฒฝ์ฐ, ์ ๋ ฌ ์ํ๋ฅผ ์ ์งํ๊ธฐ ์ํด ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ด๋ด๋ (์ฌ์ ๋ ฌํ๋) ๋น์ฉ์ด ๋ฐ์ํ๋ค .
- ๋ฐ์ดํฐ๊ฐ ๋ง์์๋ก (์: 1,000๋ช
์ค 43๋ฑ ์ฝ์
์ 900์ฌ ๋ฒ ๋ฐ์ด๋ด์ผ ํจ) ์ฑ๋ฅ์ ์
์ํฅ์ ๋ฏธ์น๋ค .
3. ๋
ผํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค (Non-Clustered Index)์ ์ดํด
- ๋
ผํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค์ ์ ์:
- ํด๋ฌ์คํฐํ๋์ง ์์ผ๋ฉด์ ๋ฐ์ดํฐ์ ์ง์ ์ฐ๊ฒฐ๋ ๊ฒ์ด ์๋๋ผ ์ด๋ค ์ธ๋ฑ์ค๋ฅผ ํตํด ์ฐ๊ฒฐ๋์ด ์๋ ํํ์ด๋ค .
- ์ด๋ ๊ฐ์ ์ฐธ์กฐ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฐพ์๊ฐ๋ค .
- ๋
ผํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค์ ์๋ ๋ฐฉ์ (์์):
- ์ธ๋ฑ์ค๋ ์์์ ์๊ด์์ด ์ ์ฅ๋์ด ์๋ค (์: 41๋ฑ์ 123๋ฒ์ง, 20๋ฑ์ 231๋ฒ์ง, 1๋ฑ์ 145๋ฒ์ง) .
- ์ธ๋ฑ์ค ์์ฒด๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์ ์๋ ์ฃผ์(123๋ฒ์ง, 231๋ฒ์ง)๋ฅผ ๊ฐ์ง๊ณ ์๋ค .
- ์ธ๋ฑ์ค๋ฅผ ์ฐพ์ ๊ทธ ์ฃผ์์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์ฐพ๊ฒ ๋๋ค (2์ฐจ ๊ฒ์ ํ์) .
- ๋
ผํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค์ ํน์ง:
- ๋ฐ์ดํฐ ์์๋๋ก ์ ์ฅ๋ ํ์๊ฐ ์์ด ๊ตณ์ด ์์๋๋ก ์์ ํ์๊ฐ ์๋ค .
- ๋ณดํต ํด์ ํ
์ด๋ธ(Hash Table) ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑ๋์ด ๋ฐ์ดํฐ๋ฅผ ๋นจ๋ฆฌ ์ฐพ์ ์ ์๋ค .
4. ํด๋ฌ์คํฐ๋ vs ๋
ผํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค ๋น๊ต ๋ฐ PK, ์นด๋๋๋ฆฌํฐ์ ์ค์์ฑ
4.1. ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค(PK)์ ํน์ง ๋ฐ ์ด์

- PK์์ ๊ด๊ณ: ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค๋ ์ผ๋ฐ์ ์ธ ๊ธฐ๋ณธ ํค(PK)์ ์ ์ฌํ๊ฑฐ๋ ๊ฐ๋ค๊ณ ์๊ฐํด๋ ๋ฌด๋ฐฉํ๋ค .
- ์์ ๋ฐ ๊ฐ์ ์ ์ฝ:
- ๋ฐ์ดํฐ๊ฐ ์์๋๋ก ์ ๋ ฌ๋์ด ์์ด์ผ ํ๋ค .
- ํ๋์ ํ
์ด๋ธ์ ์ฌ๋ฌ ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค๊ฐ ์์ ์ ์๋ค (๊ฐ๋๋ค์ ์ ๋ ฌ๊ณผ ๋ฑ์ ์ ๋ ฌ์ ๋์์ ํ ์ ์๊ธฐ ๋๋ฌธ) .
- ๋ฐ๋ผ์ ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค/PK๋ ํ
์ด๋ธ ๋น ํ๋๋ง ์กด์ฌํ ์ ์๋ค .
- ํจ์จ์ฑ: ๋ฒ์ ๊ฒ์์ ๋งค์ฐ ์ข์ผ๋ฉฐ, ์บ์ ์ ๋ต์ ๊ณต๊ฐ ์ง์ญ์ฑ(Spatial Locality)๊ณผ ์ ์ฌํ์ฌ ๋น์ทํ ์์น์ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ๊ฐ์ ธ์ค๊ธฐ ์ ๋ฆฌํ๋ค .
- ์ฝ์
์ ๋ฌธ์ ์ :
- ์ค๊ฐ์ ์๋ก์ด PK ๊ฐ์ด ์ฝ์
๋ ๋ ์ฌ์ ๋ ฌ๋ก ์ธํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉฐ, ๋ง ๊ถ์ด๋ ๋ฐฑ๋ง ๊ถ์ ๋ฐ์ดํฐ์์ ์ค๊ฐ์ ์ฝ์
๋๋ฉด ๊ต์ฅํ ์ค๋ ๊ฑธ๋ฆฌ๋ ์ฐธ์ฌ๊ฐ ๋ฐ์ํ๋ค .
- ์ด ๋ฌธ์ ๋๋ฌธ์ PK๋ฅผ ์คํ ์ธํฌ๋ฆฌ๋จผํธ (Auto Increment, ์๋์ผ๋ก ์ฆ๊ฐ) ์ต์
์ผ๋ก ์ค์ ํ์ฌ ํญ์ ๊ฐ์ฅ ๋ค์ ์ฝ์
๋๋๋ก ํ๋ ๊ฒ์ด ์ฑ๋ฅ์ ์ ๋ฆฌํ๋ค .
4.2. ๋
ผํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค(๋ณด์กฐ ์ธ๋ฑ์ค)์ ํน์ง
- ์ญํ : ์ํ๋ ๊ฐ (์: 45๋ฑ)์ ๊ฒ์ํ์ ๋ ํด๋น ๋ฐ์ดํฐ๊ฐ ๋์ค๋ ๊ฒ์ด ๋
ผํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค์ ์ญํ ์ด๋ค (ํต์์ ์ผ๋ก ์ธ๋ฑ์ค๋ผ๊ณ ๋ถ๋ฆผ) .
- ์์์ ๊ฐ์:
- ๋ฐ์ดํฐ์ ์์์๋ ์๊ด์ด ์๋ค (์๋ฌด๊ฑฐ๋ ๋ฃ์ด๋ ๋จ) .
- ํด์ ํ
์ด๋ธ ๋ฐฉ์์ผ๋ก ๋น ๋ฅด๊ฒ ๋ณด์กฐ ์ธ๋ฑ์ค๋ฅผ ์ฐพ๊ณ , ์ด ์ธ๋ฑ์ค์ ์ ์ฅ๋ PK๋ฅผ ๋ค์ ๊ฒ์ํ์ฌ ์ต์ข
๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ฒ ๋๊ธฐ ๋๋ฌธ์ ์์์ ์๊ด์ด ์๋ค .
- ๋ฐ๋ผ์ ํ ํ
์ด๋ธ์ ์ฌ๋ฌ ๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค ์ ์๋ค (๋ฑ์, ์ด๋ฆ, ํ๋ฒ ๋ฑ ์ฌ๋ฌ ๊ธฐ์ค์ผ๋ก ์ธ๋ฑ์ค ์ค์ ๊ฐ๋ฅ) .
- ์ถ๊ฐ ๋น์ฉ:
- ์ถ๊ฐ ์ ์ฅ ๊ณต๊ฐ์ด ํ์ํ๋ค. ๋ณด์กฐ ์ธ๋ฑ์ค๋ ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค(PK)๋ฅผ ์ฐพ๊ธฐ ์ํ ์ฃผ์๋ฅผ ์ ์ฅํ๊ณ ์์ด ๋ฐ์ดํฐ์ ๋ถ๋ฆฌ๋๊ธฐ ๋๋ฌธ์ ์ ์ฅ ๊ณต๊ฐ์ด ๋ญ๋น๋ ์ ์์ผ๋ฉฐ, ํต์์ ์ผ๋ก ์ฝ 10% ์ ๋์ ์ถ๊ฐ ์ ์ฅ ๊ณต๊ฐ์ด ํ์ํ๋ค๊ณ ์ถ์ ๋๋ค .
- ์ธ์ํธ ์ ๋น์ฉ:
- ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค์ ๋นํด ์์
์ด ์๋ค๊ณ ์๊ฐํ๊ธฐ ์ฝ์ง๋ง, ์๋ก์ด ํ์ด ๋ค์ด์ฌ ๋ ์ด ํ์ ๋ํ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ์ฌ ์ ์ฅํ๋ ์์
์ด ๋ฐ๋์ ์ถ๊ฐ๋๋ค .
4.3. ์นด๋๋๋ฆฌํฐ (Cardinality)์ ์ค์์ฑ
- ์นด๋๋๋ฆฌํฐ์ ์ ์: ์ธ๋ฑ์ค์ ํจ๊ณผ๋ฅผ ํ๊ฐํ ์ ์๋ ํญ๋ชฉ์ด๋ค .
- ์ค์์ฑ: ์ธ๋ฑ์ค๊ฐ ์์ผ๋ฉด ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ์ ๋ฆฌํ์ง๋ง, ์ค๋ณต๋ ๊ฐ๋ค์ด ๋ง์ ๊ฒฝ์ฐ์๋ ํจ๊ณผ๊ฐ ๋ฎ์์ง๋ค .
- ํ๊ฐ ๊ธฐ์ค:
- ์นด๋๋๋ฆฌํฐ๊ฐ ๋ฎ์: ์ค๋ณต๋ ๊ฐ๋ค์ด ๋ง์์๋ก (์: ์ฑ๋ณ - ๋จ์/์ฌ์) ์นด๋๋๋ฆฌํฐ๋ ๋ฎ์์ง๋ค .
- ์นด๋๋๋ฆฌํฐ๊ฐ ๋์: ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ์ฒ๋ผ ์ ์ผํ ๊ฐ์ผ์๋ก ์นด๋๋๋ฆฌํฐ๋ ๋์์ง๋ค .
- ํ์ฉ: ์ด๋ค ์ปฌ๋ผ์ ์ธ๋ฑ์ค๋ฅผ ๋ถ์ฌํ ์ง ํ๋จํ ๋ ์นด๋๋๋ฆฌํฐ ๊ฐ์ ์ฌ์ฉํ๊ฒ ๋๋ฉฐ, ์นด๋๋๋ฆฌํฐ๊ฐ ๋์์๋ก ์ธ๋ฑ์ค ์ฌ์ฉ์ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ข๋ค .
| ํน์ง | ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค (Clustered Index) | ๋
ผํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค (Non-Clustered Index) |
|---|
| ์ ๋ ฌ ๋ฐฉ์ | ๋ฐ์ดํฐ ์์ฒด๊ฐ ์์๋๋ก ์ ๋ ฌ๋จ (๋ญ์ณ ์์) | ๋ฐ์ดํฐ์ ์ธ๋ฑ์ค๊ฐ ๋ถ๋ฆฌ๋์ด ์ธ๋ฑ์ค๊ฐ ๋ฐ์ดํฐ ์์น๋ฅผ '์ฐธ์กฐ'ํจ |
| ๊ฐ์ | ํ
์ด๋ธ๋น ๋จ ํ๋๋ง ์กด์ฌ ๊ฐ๋ฅ (PK์ ์ ์ฌ) | ํ
์ด๋ธ๋น ์ฌ๋ฌ ๊ฐ ์กด์ฌ ๊ฐ๋ฅ |
| ๊ฐ์ | ๋ฒ์ ๊ฒ์ (Range Search)์ ์์ฃผ ๊ฐ๋ ฅํจ | ํน์ ๊ฐ์ ๋นจ๋ฆฌ ์ฐพ๋ ๊ฒ์ ์ ๋ฆฌํจ (ํด์ ํ
์ด๋ธ ๋ฐฉ์) |
| ๋จ์ | ๋ฐ์ดํฐ ์ฝ์
/์์ ์ ๋ฐ์ดํฐ ๋ฐ์ด๋ด๊ธฐ ๋น์ฉ ๋ฐ์ | ์ธ๋ฑ์ค ์ ์ฅ์ ์ํ ์ถ๊ฐ ์ ์ฅ ๊ณต๊ฐ ํ์ (์ฝ 10%) |
5. ์ธ๋ฑ์ค ํ์ฉ ์ฌ๋ก: PK๋ฅผ Auto Increment๋ก ์ฐ๋ ์ด์

- ๋ฌธ์ ์ ๊ธฐ: ์ดํ๋ฆฌ์ผ์ด์
์๋น์ค ๊ฐ๋ฐ ์ค, ์ ์ ๋ก๊ทธ์ธ ์ ์ด๋ฉ์ผ์ ID๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ์ด๋ฉ์ผ์ PK๋ก ๊ฐ์ ธ๊ฐ ๊ฒฝ์ฐ DB ์ฑ๋ฅ ์ด์๊ฐ ๋ฐ์ํ ์ ์๋ค๋ ํผ๋๋ฐฑ์ ๋ฐ์๋ค .
- PK๋ฅผ ์ด๋ฉ์ผ๋ก ์ค์ ํ์ ๋์ ์ฑ๋ฅ ์ด์:
- ์ด๋ฉ์ผ์ ๋ฌธ์์ด ๊ธฐ๋ฐ์ด๋ฉฐ, ์ด๋ฉ์ผ์ด ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค(PK) ์ญํ ์ ํ๋ค๊ณ ๊ฐ์ ํ๋ค .
- ๊ธฐ์กด์ 'Sample'์ด๋ผ๋ ์ด๋ฉ์ผ์ด ๋ง์ง๋ง์ ์์๋ค๊ณ ํ ๋, ์๋ก ๋ค์ด์จ 'AnDol'์ด๋ผ๋ ์ด๋ฉ์ผ์ ์ํ๋ฒณ ์์์ Sample ์์ ์์นํ๋ค .
- ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค์ ํน์ฑ์, 'AnDol'์ด ๋ค์ด๊ฐ๊ธฐ ์ํด ๊ธฐ์กด์ ์๋ ๋ง์ ๋ฐ์ดํฐ๋ค์ ๋ค๋ก ๋ฐ์ด๋ด์ผ ํ๋ค .
- ํ์์ด 100๋ง ๋ช
์ ๋ ๋์์ ๋ ์ด ์ฝ์
์์
์ ๊ต์ฅํ ์ค๋ ๊ฑธ๋ฆฌ๊ฒ ๋๋ฉฐ, ์ด๋ ํ์๊ฐ์
๊ธฐ๋ฅ์ ๋ชป ์ํฌ ์ ๋์ ์ฑ๋ฅ ์ด์๋ฅผ ์ ๋ฐํ ์ ์๋ค .
- ํด๊ฒฐ ๋ฐฉ์:
- ์ด๋ฉ์ผ์ฒ๋ผ ๊ณ ์ ํด์ผ ํ๋ ๊ฐ์ ์ ๋ํฌ ์ ์ฝ์กฐ๊ฑด๋ง ๋ถ์ฌํ๊ณ , ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค(PK)๋ ๋ณ๋์ ์ํ์ค ๊ฐ (์: ์๋ ์ฆ๊ฐํ๋ ์ซ์)์ผ๋ก ์ฃผ๋ ๊ฒ์ด ์ฑ๋ฅ์ ์ ๋ฆฌํ๋ค .
6. ์ธ๋ฑ์ค ๋ฏธ์ ์ฉ ๋ฐ ์ ์ฉ ์ ์ฑ๋ฅ ๋น๊ต
6.1. ์ธ๋ฑ์ค๊ฐ ์์ ๋์ ๋ฌธ์ ์
- PK๋ฅผ ์๊ณ ์๋ ๊ฒฝ์ฐ: ๊ฐ๋ฐ์๋ค์ ์ ์ ID๋ ์ํฐํด ID(PK)๋ฅผ ์๊ณ ๊ฒ์ํ๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค ๊ฐ๋
์์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์ ์๋ค .
- ์ผ๋ฐ ์ฌ์ฉ์์ ๊ฒ์: ์ผ๋ฐ ์ฌ์ฉ์๋ PK๋ฅผ ๋ชจ๋ฅด๋ฉฐ, ํ์ดํ์ด๋ ์ด๋ฉ์ผ ๋ฑ ๋น(้)PK ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ๊ฒ์ํ๋ค .
- ์ฑ๋ฅ ์ธก์ ํ๊ฒฝ ์ค์ :
- ์ ์ ๊ฒ์:
find by email
- ์ํฐํด ๊ฒ์:
find by title
- ํ
์คํธ ๋ฐ์ดํฐ: ์ ์ 10๋ง ๋ช
, ๊ฐ ์ ์ ๊ฐ ์ํฐํด 5๊ฐ์ฉ ์์ฑ (์ด 50๋ง ๊ฐ ์ํฐํด) .
- ์ธ๋ฑ์ค ๋ฏธ์ ์ฉ ์ ๊ฒฐ๊ณผ:
find by email ๊ฒ์ ์: 0.6์ด๊ฐ ์์๋์๋ค .
- ๋ฌธ์ ์ : 0.6์ด๋ ๋ค์ ์์
์ ์ํ ์ค๋น ์๊ฐ์ผ๋ก, ํด๋น ์์
์ดํ์ ๋ชจ๋ ์์
์ 0.6์ด๋ฅผ ๊ธฐ๋ค๋ ค์ผ ํ๋ฉฐ, ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ(Latency) ์ ํ๋ก ์ด์ด์ง๋ค .
- ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ํ์ํ ์์
์์๋ ๋๊ธฐ ์๊ฐ์ด ๊ธธ์ด์ ธ ์๋ฒ๊ฐ ๋ฉ์ถ๊ฑฐ๋ ํ์์์์ด ๊ฑธ๋ฆฌ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค .
find by title ๊ฒ์ ์: 5์ด๊ฐ ์์๋์๋ค .
- ์ด๋ CPU๊ฐ ์ด๋น 4.5GHz ์ ๋๋ก ์ฐ์ฐ์ ์ฒ๋ฆฌํ ์ ์์์๋ ๋ถ๊ตฌํ๊ณ , ์ฐ์ฐ ํ์๊ฐ ์ด๊ณผ๋์ด ๋ฐ์ํ ๋งค์ฐ ์ค๋ ๊ฑธ๋ฆฌ๋ ๊ฒฝ์ฐ์ด๋ค .
6.2. ์ธ๋ฑ์ค ์ ์ฉ ์ ์ฑ๋ฅ ๊ฐ์ ๋ฐ ์ ์์
- ์ธ๋ฑ์ค ์ ์ฉ ํ ๊ฒฐ๊ณผ: 0.001์ด ๋ด๋ก ์๋์ ์ผ๋ก ๋นจ๋ผ์ก๋ค .
- ์ธ๋ฑ์ค ์ฌ์ฉ ์ ์์ :
- ์ธ๋ฑ์ค๋ ๋ฌด์กฐ๊ฑด ์ข๊ฑฐ๋ ๋ชจ๋ ์ปฌ๋ผ์ ๊ฑฐ๋ ๊ฒ์ด ์๋๋ค .
- ๋ชจ๋ ์ปฌ๋ผ์ ์ธ๋ฑ์ค๋ฅผ ๊ฑธ ๊ฒฝ์ฐ, ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ๋๋ง๋ค ์ถ๊ฐ์ ์ธ ๋น์ฉ (๋ฐ์ดํฐ ์ฝ์
์ ์ธ๋ฑ์ค ์์ฑ ์์
)์ด ๋ฐ์ํ์ฌ ์คํ๋ ค ์ฑ๋ฅ ์ด์๊ฐ ์๊ธธ ์ ์๋ค .
- ๋ฐ๋ผ์ ์ด๋ค ์ํฉ์ ์ธ๋ฑ์ค๊ฐ ํ์ํ์ง ๊ทธ ํน์ง์ ์ดํดํ๊ณ ์ ์ฉํด์ผ ํ๋ค .
7. ์ธ๋ฑ์ค ์ฑ๋ฅ ๊ฐ์ ์ ์ํ ์ฌํ ๊ฐ๋
๋ฐ DB ์ค์ ํ

- ์คํ ๊ณํ (EXPLAIN):
- ์ฟผ๋ฆฌ ์คํ ์ MySQL์ด ์ด๋ป๊ฒ ์คํํ ๊ฒ์ธ์ง ์๋ ค์ฃผ๋ ํค์๋ (
EXPLAIN)๋ฅผ ํ์ฉํ์ฌ ๋ถ์ํ ์ ์๋ค .
- ์ด๋ฅผ ๋ถ์ํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ํ๋ํ ์ ์๋ค .
- PK(ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค)๊ฐ ๋ด๋ถ์ ์ผ๋ก B-Tree ๋ฐฉ์์ผ๋ก ๊ตฌํ๋์ด ์๋ค๋ ์ ์ ์ดํดํ๋ฉด ์คํ ๊ณํ ๋ถ์์ ๋์์ด ๋๋ค .
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด๋ถ ๊ฐ๋
:
- DB์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์์ธ ํ์ด์ง(Page) ๋๋ ๋ธ๋ก(Block) ๊ฐ๋
์ ์ด์์ฒด์ ์์ ๋งํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ ํ์ด์ง์ ์ ์ฌํ๋ค .
- ์ด์ธ์๋ ์นด๋๋๋ฆฌํฐ, ๋ณตํฉ ํค(Composite Key) ๋ฑ์ ๊ฐ๋
์ ์ดํดํด์ผ ํ๋ค .
- DB ์ค์ ํ (์ฑ๋ฅ ์ต์ ํ):
innodb_buffer_pool_size ์ค์ ๊ฐ์ ์กฐ์ ํ๋ฉด ํผํฌ๋จผ์ค๊ฐ ๋ฌ๋ผ์ง ์ ์๋ค .
- ๊ธฐ๋ณธ๊ฐ ๋์ 1๊ธฐ๊ฐ, 2๊ธฐ๊ฐ ๋ฑ์ผ๋ก ์ค์ ํ์ฌ ํผํฌ๋จผ์ค๋ฅผ ํฅ์์ํฌ ์ ์๋ค .
- ์ค๋ ๊ฑธ๋ฆฌ๋ ์ฟผ๋ฆฌ๋ฅผ ๋ก๊น
ํ์ฌ ๋ถ์ํ๊ธฐ ์ํด slow query log ์ค์ ์ ํ์ฉํ ์ ์๋ค .