Home
>
DB
>
๐พ[Database] Secondary Index(๋ณด์กฐ ์ธ๋ฑ์ค)๋ ๋ฌด์์ผ๊น์?
Database
Database Optimization
๐พ[Database] Secondary Index(๋ณด์กฐ ์ธ๋ฑ์ค)๋ ๋ฌด์์ผ๊น์?
๐ Intro.
- โ๏ธ Secondary Index (๋ณด์กฐ ์ธ๋ฑ์ค)๋ ํ
์ด๋ธ์ ๊ธฐ๋ณธ ํค(Primary Key)๋ ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค(Clustered Index) ์ธ์ ๋ค๋ฅธ ์ปฌ๋ผ(Column)์ ์ถ๊ฐ๋ก ์์ฑ๋๋ ์ธ๋ฑ์ค์.
- โ๏ธ ์ฃผ๋ก ๊ฒ์ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ฑฐ๋ ํน์ ์ด(Column)์์์ ์กฐํ๋ฅผ ์ต์ ํํ๊ธฐ ์ํด ์ฌ์ฉ๋จ.
โ
1๏ธโฃ Secondary Index์ ํต์ฌ ๊ฐ๋
.
1๏ธโฃ ๊ธฐ๋ณธ ํค(Primary Key)์์ ์ฐจ์ด.
- โ๏ธ Primary Key : ํ
์ด๋ธ์ ์ฃผ๋ ์ธ๋ฑ์ค๋ก, ๋ฐ์ดํฐ๊ฐ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ๋ ฌ๋จ.
- โ๏ธ Secondary Index : ๊ธฐ๋ณธ ํค(Primary Key)๊ฐ ์๋ ๋ค๋ฅธ ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ์์ฑ๋๋ฉฐ, ๋ฐ์ดํฐ๋ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ๋ ฌ๋์ง ์์.
2๏ธโฃ ํฌ์ธํฐ ๊ตฌ์กฐ.
- โ๏ธ Secondary Index๋ ํด๋น ์ปฌ๋ผ์ ๊ฐ์ ์ ๋ ฌํ ํ, ๊ธฐ๋ณธ ํค(Primary Key)๋ ๋ฌผ๋ฆฌ์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ฅผ ํฌํจํจ.
- โ๏ธ ์ด๋ฅผ ํตํด ํด๋น ์ปฌ๋ผ ๊ฐ์ผ๋ก ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ณ , ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ค์ ๋ก ์กฐํํ ์ ์์.
3๏ธโฃ ๋ค์ค ์์ฑ ๊ฐ๋ฅ.
- โ๏ธ ํ๋์ ํ
์ด๋ธ์๋ ์ฌ๋ฌ ๊ฐ์ Secondary Index๋ฅผ ์์ฑํ ์ ์์.
- โ๏ธ ์๋ฅผ ๋ค์ด, name๊ณผ email ์ปฌ๋ผ์ ๊ฐ๊ฐ Secondary Index๋ฅผ ์์ฑํ ์ ์์.
4๏ธโฃ ์ฝ๊ธฐ/์ฐ๊ธฐ ์ฑ๋ฅ ํธ๋ ์ด๋์คํ.
- โ๏ธ Secondary Index๋ ์ฝ๊ธฐ ์ฑ๋ฅ์ ํฅ์์ํค์ง๋ง, ์ฐ๊ธฐ ์ฑ๋ฅ(INSERT, UPDATE, DELETE)์ ์ ํ๋ ์ ์์.
- โ๏ธ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ธ๋ฑ์ค๋ฅผ ์
๋ฐ์ดํธํด์ผ ํ๊ธฐ ๋๋ฌธ์.
โ
2๏ธโฃ Secondary Index์ ์ฅ๋จ์ .
๐ ์ฅ์ .
1๏ธโฃ ๊ฒ์ ์๋ ํฅ์.
- ํน์ ์ปฌ๋ผ์ ๋ํด ๋น ๋ฅด๊ฒ ๊ฒ์ ๊ฐ๋ฅ.
2๏ธโฃ ์ฌ๋ฌ ํ๋์ ์ธ๋ฑ์ค ์์ฑ ๊ฐ๋ฅ.
- ํ๋์ ํ
์ด๋ธ์ ์ฌ๋ฌ Secondary Index๋ฅผ ์์ฑํ ์ ์์.
3๏ธโฃ ๋ค์ํ ์ฟผ๋ฆฌ ์ต์ ํ.
- ์์ฃผ ์ฌ์ฉํ๋ WHERE, JOIN, ORDER BY ์ ์ ํ์ฉ ๊ฐ๋ฅ.
๐ ๋จ์ .
1๏ธโฃ ์ฐ๊ธฐ ์ฑ๋ฅ ์ ํ.
- ๋ฐ์ดํฐ ์ฝ์
, ์
๋ฐ์ดํธ, ์ญ์ ์ Secondary Index๋ ํจ๊ป ์
๋ฐ์ดํธ๋์ด์ผ ํ๋ฏ๋ก ์ฐ๊ธฐ ์ฑ๋ฅ์ด ์ ํ๋จ.
2๏ธโฃ ์ถ๊ฐ์ ์ธ ์ ์ฅ ๊ณต๊ฐ ํ์.
- Secondary Index๋ ๋ณ๋์ ์ ์ฅ ๊ณต๊ฐ์ ์ฐจ์งํจ.
3๏ธโฃ ๋ณต์กํ ์ ์ง ๊ด๋ฆฌ.
- ๋๋ฌด ๋ง์ ์ธ๋ฑ์ค๋ ์ฟผ๋ฆฌ ์ต์ ํ๋ ์ธ๋ฑ์ค ์ฌ๊ตฌ์ฑ์ ๋ถํ๋ฅผ ์ค ์ ์์.
โ
3๏ธโฃ Secondary Index vs Clusterd Index
๊ตฌ๋ถ |
Clustered Index |
Secondary Index |
๊ธฐ์ค(Column) |
Primary Key (์ฃผ๋ก) |
์ผ๋ฐ ์ปฌ๋ผ (๊ธฐ๋ณธ ํค ์ธ) |
๋ฌผ๋ฆฌ์ ์ ๋ ฌ |
๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋จ |
๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋์ง ์์ |
์ธ๋ฑ์ค ๊ฐ์ |
ํ๋๋ง ์์ฑ ๊ฐ๋ฅ |
์ฌ๋ฌ ๊ฐ ์์ฑ ๊ฐ๋ฅ |
๋ฐ์ดํฐ ์ ๊ทผ ๋ฐฉ์ |
์ง์ ๋ฐ์ดํฐ ์ ๊ทผ |
ํฌ์ธํฐ๋ฅผ ํตํด ๋ฐ์ดํฐ ์ ๊ทผ |
์ฝ๊ธฐ ์ฑ๋ฅ |
๋น ๋ฆ |
๋น ๋ฆ (ํ์ง๋ง ํฌ์ธํฐ ๋จ๊ณ ํ์) |
์ฐ๊ธฐ ์ฑ๋ฅ |
๋น๊ต์ ์์ ์ |
์ฐ๊ธฐ ์ฑ๋ฅ ์ ํ ๊ฐ๋ฅ |
์ ์ฅ ๊ณต๊ฐ |
๋น๊ต์ ์ ์ |
์ถ๊ฐ ์ ์ฅ ๊ณต๊ฐ ํ์ |
โ
4๏ธโฃ ์ธ์ Secondary Index๋ฅผ ์ฌ์ฉํด์ผ ํ ๊น?
1๏ธโฃ ์์ฃผ ๊ฒ์ํ๋ ์ปฌ๋ผ.
- ํน์ ์ปฌ๋ผ์ ์์ฃผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋.
2๏ธโฃ WHERE ์ ์ฌ์ฉ ๋น๋๊ฐ ๋์ ์ปฌ๋ผ.
- ํน์ ์กฐ๊ฑด์ผ๋ก ์์ฃผ ํํฐ๋งํ ๋.
3๏ธโฃ JOIN ์ฐ์ฐ ์ต์ ํ.
- ๋ค๋ฅธ ํ
์ด๋ธ๊ณผ JOINํ ๋ ํค๋ก ์์ฃผ ์ฌ์ฉ๋๋ ์ปฌ๋ผ.
๐ ์ ๋ฆฌ.
- Secondary Index(๋ณด์กฐ ์ธ๋ฑ์ค)๋ ๊ธฐ๋ณธ ํค๋ Clustered Index(ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค) ์ธ์ ๋ค๋ฅธ ์ปฌ๋ผ์ ๋ํด ์ถ๊ฐ๋ก ์์ฑ๋๋ ์ธ๋ฑ์ค.
-
์ฃผ๋ก ์์ฃผ ์กฐํ๋๋ ํน์ ์ปฌ๋ผ์ ๋ํ ๊ฒ์ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ธฐ ์ํด ์ฌ์ฉ.
- ํ์ง๋ง ๋๋ฌด ๋ง์ Secondary Index๋ฅผ ์์ฑํ๋ฉด ์ฐ๊ธฐ ์ฑ๋ฅ ์ ํ ๋ฐ ์ ์ฅ ๊ณต๊ฐ ๋ญ๋น๊ฐ ๋ฐ์ํ ์ ์์
๐ ํต์ฌ ํฌ์ธํธ.
- ์ฝ๊ธฐ ์ฑ๋ฅ ์ต์ ํ.
- ๋ค์ค ์์ฑ ๊ฐ๋ฅ.
-
์ฐ๊ธฐ ์ฑ๋ฅ ์ ํ ์ฃผ์.
๐ Secondary Index๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ ์ ์กฐํ ํจํด๊ณผ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ๋น๋๋ฅผ ๊ณ ๋ คํ์ฌ ์ ์คํ๊ฒ ์ ํํด์ผ ํจ.