Home > DB > ๐Ÿ’พ[Database] Secondary Index(๋ณด์กฐ ์ธ๋ฑ์Šค)๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?

๐Ÿ’พ[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๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„ ์‹œ ์กฐํšŒ ํŒจํ„ด๊ณผ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ๋นˆ๋„๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์‹ ์ค‘ํ•˜๊ฒŒ ์„ ํƒํ•ด์•ผ ํ•จ.