type
status
date
slug
summary
tags
category
icon
password

์ •์˜

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ
ย 
๋‹จ๊ฑด ์กฐํšŒ๋กœ ์•„๋ž˜์˜ ์ฟผ๋ฆฌ๋ฌธ์„ ์ž‘์„ฑํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž
id
name
address
category
1
Restaurant A
Address A
Category A
2
Restaurant B
Address B
Category B
3
Restaurant C
Address C
Category C
4
Restaurant D
Address D
Category D
5
Restaurant E
Address E
Category E
6
Restaurant F
Address F
Category F
7
Restaurant G
Address G
Category G
8
Restaurant H
Address H
Category H
9
Restaurant I
Address I
Category I
10
Restaurant J
Address J
Category J
ํ•ด๋‹น๋˜๋Š” ์ฟผ๋ฆฌ๊ฐ€ N ๋ฒˆ์งธ ์กด์žฌํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์„ฑ๋Šฅ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
ย 

Hash Table - INNODB ์—”์ง„์—๋Š” ์—†์Œ

key-value ๋ฅผ ํ•œ ์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ตฌ์กฐ
ย 
๋ถ€๊ฐ€์ ์ธ ์ •๋ณด ์ž‘์„ฑํ•˜๊ฒ ์Œ.
ย 
ย 

B-tree

  • ํ•˜๋‚˜์˜ ๋…ธ๋“œ์— ์—ฌ๋Ÿฌ ์ •๋ณด ์ €์žฅ ๊ฐ€๋Šฅ
  • ๋‘๊ฐœ ์ด์ƒ์˜ ์ž์‹์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ
  • leaf ๋…ธ๋“œ์—๋งŒ ๋ฐ์ดํ„ฐ ์ €์žฅ, ๋‚˜๋จธ์ง€ ๋…ธ๋“œ๋Š” ์ž์‹ํฌ์ธํ„ฐ๋งŒ ์ €์žฅ
  • ์“ฐ๊ธฐ ๋Š๋ฆผ(์‚ฝ์ž…, ์ˆ˜์ •), ๊ฒ€์ƒ‰ ๋น ๋ฆ„
ย 
ย 
ย 
์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ ‡๊ฒŒ ๋นจ๋ผ์ง
notion image
ย 

์ข…๋ฅ˜

Clustered index

์‹ค์ œ ๋ฐ์ดํ„ฐ์™€ ๊ตฐ์ง‘(๊ฐ•ํ•œ ์—ฐ๊ด€์„ ์ด๋ฃจ๋Š” ์ธ๋ฑ์Šค)
๋ฐ์ดํ„ฐ๊ฐ€ ํ…Œ์ด๋ธ”์— ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ €์žฅ๋˜๋Š” ์ˆœ์„œ๋ฅผ ์ •์˜
PK๋กœ ์„ค์ •ํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ƒ์„ฑ
๋˜๋Š” Unique and Not null ์ œ์•ฝ ์กฐ๊ฑด์„ ์ƒ์„ฑํ•จ
ย 
ํŠน์ง•
  • ํ•ด๋‹น ํ‚ค ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ…Œ์ด๋ธ”์ด๋‚˜ ๋ทฐ์˜ ๋ฐ์ดํ„ฐ ํ–‰์„ ์ •๋ ฌํ•˜๊ณ  ์ €์žฅํ•จ
  • Index์˜ ๋ฆฌํ”„ ํŽ˜์ด์ง€๊ฐ€ ์‹ค์ œ ๋ฐ์ดํ„ฐ
  • ํ…Œ์ด๋ธ” ๋‹น 1๊ฐœ๋งŒ ์กด์žฌ
notion image
notion image
notion image
ย 

Non-clustered Index

Index ์ƒ์„ฑ SQL โ†’ CREATE INDEX name_idx ON restaurant(name) ๋˜๋Š” Unique ์ œ์•ฝ ์กฐ๊ฑด์„ ์ƒ์„ฑ
notion image
notion image
ย 
ํŠน์ง•
  • ์ธ๋ฑ์Šค์™€ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๊ฐ€ ๋”ฐ๋กœ ์กด์žฌ
  • ๋ฆฌํ”„ํŽ˜์ด์ง€์—์„œ๋Š” ๋ฐ์ดํ„ฐ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง
  • ๋ฐ์ดํ„ฐํŽ˜์ด์ง€๊ฐ€ ์ •๋ ฌ๋˜์ง€ ์•Š์•„๋„ ๋จ
  • ํ•œ ํ…Œ์ด๋ธ”์— ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Œ
  • ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์ž‘์—…(์‚ฝ์ž…, ์‚ญ์ œ, ์ˆ˜์ •)์‹œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ
ย 

Clustered, Non-clustered ๋™์‹œ์— ์กด์žฌํ•˜๋ฉด?

PK ์นผ๋Ÿผ์„ ์„ค์ •ํ•˜์—ฌ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•œ ๋’ค(clustered index),
์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ์กฐํšŒ column์— ๋Œ€ํ•ด index๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค๋ฉด(Non-clustered index)
์–ด๋–ป๊ฒŒ ๋™์ž‘ํ• ๊นŒ?
ย 
notion image

์–ด๋–ค ๊ฒฝ์šฐ์— ์“ฐ๋ฉด ์ข‹์„๊นŒ?

ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค
  1. ํ‚ค ๊ฐ’์˜ ๋ฒ”์œ„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๊ฒ€์ƒ‰์ด๋‚˜ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ
ย 
๋…ผ ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค
  1. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์นผ๋Ÿผ์„ ์ž์ฃผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒฝ์šฐ
ย 

์–ด๋–ป๊ฒŒ ์ธ๋ฑ์Šค๋ฅผ ์“ฐ๋ฉด ์ข‹์„๊นŒ?

  1. where, join ์กฐ๊ฑด์— ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ์นผ๋Ÿผ๋“ค
  1. INSERT, UPDATE, DELETE ์ ๊ฒŒ ๋ฐœ์ƒํ•˜๋Š” ์นผ๋Ÿผ
  1. ์ค‘๋ณต๋„๊ฐ€ ๋‚ฎ์€ ์นผ๋Ÿผ
  1. ๋ฒ”์œ„ ๊ฒ€์ƒ‰์ด ์ ์€ ์นผ๋Ÿผ
  1. ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์€ ํ…Œ์ด๋ธ”
ย 
ย 
๋” ์•Œ๋ฉด ์ข‹์€ ๊ฒƒ๋“ค
  • covering index
  • cardinality
  • ๋‹ค์–‘ํ•œ index scan ๋ฐฉ์‹
  • page/block ๋ฐ ๋ฒ„ํผ
  • ๋ฉ”๋ชจ๋ฆฌ, ๋””์Šคํฌ I/O ์ ‘๊ทผ ๋ฐฉ์‹
  • B-tree
ย 
notion image
  • ์ €์ž:Laigasus
  • URL:https://laigasus.vercel.app/article/20
  • ์ €์ž‘๊ถŒ:์ด ๋ธ”๋กœ๊ทธ์˜ ๋ชจ๋“  ๊ธ€์€ ํŠน๋ณ„ํ•œ ์–ธ๊ธ‰์ด ์—†๋Š” ํ•œ BY-NC-SA ๊ณ„์•ฝ์„ ์ฑ„ํƒํ•ฉ๋‹ˆ๋‹ค. ์ถœ์ฒ˜๋ฅผ ํ‘œ์‹œํ•ด์ฃผ์„ธ์š”!
์ธ์ฆ, ์ธ๊ฐ€RESTful API
Loading...