๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

TIL, WIL/TIL๐Ÿ“˜

03.28 TIL

728x90

๋ฐ์ผ๋ฆฌ ๊ณผ์ œ

1. DI์— ๋Œ€ํ•œ ์„ค๋ช…๊ณผ ํ•ด๋‹น ๊ธฐ์ˆ ์˜ ์žฅ์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

-> DI๋Š” ํด๋ž˜์Šค ๊ฐ„ ์˜์กด์„ฑ์„ ๋ถ€์—ฌํ•ด ์•ฝํ•œ ๊ฒฐํ•ฉ์„ ์‹คํ–‰์‹œ์ผœ ์ฝ”๋“œ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ๋ณด๋‹ค ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ณ  ๋‚˜์•„๊ฐ€ ํ™•์žฅํ•  ๋•Œ์—๋„ ํšจ์œจ์ ์œผ๋กœ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ์—๋„ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถฐ ๋ฌธ์ œ ๋ฐœ์ƒ ์ง€์ ์„ ๋”์šฑ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํด๋ž˜์Šค์—์„œ ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋ฅผ ํ˜ธ์ถœํ•ด ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

2. DB์—์„œ ์ธ๋ฑ์Šค๋ฅผ ์ž˜ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋–ค ์žฅ์ ์ด ์žˆ์„๊นŒ์š”?

-> ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์žˆ๋Š” ํ•˜๋‚˜ ์ด์ƒ์— ์ปฌ๋Ÿผ์— ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๊ฒ€์ƒ‰ํ•  ๋•Œ ์ „์ฒด ํ…Œ์ด๋ธ”์„ ๊ฒ€์ƒ‰ํ•˜์ง€ ์•Š๊ณ ๋„ ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•ด ํ•ด๋‹นํ•˜๋Š” ์ธ๋ฑ์Šค๋กœ๋งŒ ์ ‘๊ทผํ•˜๊ธฐ ๋–„๋ฌธ์— ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”์— ์—ฌ๋Ÿฌ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ๋™์ผํ•œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด ์ ‘๊ทผ์„ฑ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ธฐ๋ณธ ํ‚ค ๋ฐ ๊ณ ์œ  ์ œ์•ฝ์กฐ๊ฑด ๋“ฑ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณต๋ถ€ํ•œ ๊ฐ•์˜

https://www.youtube.com/watch?v=edpYzFgHbqs 

1. ์ธ๋ฑ์Šค๋ž€?

-> ์›ํ•˜๋Š” ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์ƒ‰์ธ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ค€. ๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ • ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๋ฉด ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ณ  where ์ ˆ ๋“ฑ์„ ํ†ตํ•ด ํ™œ์šฉ๋œ๋‹ค.

1) ์ธ๋ฑ์Šค๋Š” ํ•ญ์ƒ ์ตœ์‹ ์˜ ์ •๋ ฌ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•œ๋‹ค

2) ์ธ๋ฑ์Šค๋„ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด์ด๋‹ค.

3) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํฌ๊ธฐ์˜ ์•ฝ 10% ์ •๋„์˜ ์ €์žฅ๊ณต๊ฐ„์„ ํ•„์š”๋กœ ํ•œ๋‹ค.

 

2. ์ธ๋ฑ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜

ํŽ˜์ด์ง€ : ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๋‹จ์œ„

full table scan :

์ˆœ์ฐจ์ ์œผ๋กœ ์ ‘๊ทผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ ‘๊ทผ ๋น„์šฉ์„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์ ์šฉ ๊ฐ€๋Šฅํ•œ ์ธ๋ฑ์Šค๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ, ์ธ๋ฑ์Šค ์ฒ˜๋ฆฌ ๋ฒ”์œ„๊ฐ€ ๋„“์€ ๊ฒฝ์šฐ

ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ํ…Œ์ด๋ธ”์— ์—‘์„ธ์Šคํ•˜๋Š” ๊ฒฝ์šฐ

 

B-tree(์ด์ง„ํƒ์ƒ‰ํŠธ๋ฆฌ)

์ด์ง„ ํƒ์ƒ‰๊ณผ ๋งํฌ๋“œ๋ฆฌ์ŠคํŠธ์˜ ์žฅ์ ์„ ํ•ฉ์ณ ๋งŒ๋“ค์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ

๊ท ํ˜•์žˆ๋Š” ์ด์ง„ํƒ์ƒ‰ํŠธ๋ฆฌ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(log n)์ด์ง€๋งŒ, ๊ท ํ˜•์ด ์—†๋Š” ๊ฒฝ์šฐ O(n)์ด๋‹ค. -> ๊ท ํ˜• B-tree๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๋ฃจํŠธ ํŽ˜์ด์ง€, ๋ธŒ๋žœ์น˜ ํŽ˜์ด์ง€ : ์ž์‹ ํŽ˜์ด์ง€์˜ ์ •๋ณด

๋ฆฌํ”„ ํŽ˜์ด์ง€ : ์‹ค์ œ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€(ํด๋Ÿฌ์Šคํ„ฐ๋ง ์ธ๋ฑ์Šค), ์‹ค์ œ ๋ฐ์ดํ„ฐ์˜ ์ฃผ์†Œ ํŽ˜์ด์ง€(๋…ผ-ํด๋Ÿฌ์Šคํ„ฐ๋ง ์ธ๋ฑ์Šค)

Insert๋ฌธ์˜ ๊ฒฝ์šฐ

ํŽ˜์ด์ง€์˜ ํฌ๊ธฐ๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ์‚ฝ์ž…์˜ ๊ฒฝ์šฐ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•ด ๋ถ„ํ• ํ•œ๋‹ค.

- DB๊ฐ€ ๋Š๋ ค์ง€๊ณ  ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ค€๋‹ค.

delete๋ฌธ : ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ๋กœ ์ง€์šฐ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ธฐ์กด ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉ์•ˆํ•จ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ

update๋ฌธ : ๊ธฐ์กด ์ธ๋ฑ์Šค๋ฅผ delete ์ฒ˜๋ฆฌ ํ›„ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์„ insert

์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ธ๋ฑ์Šค์™€ where์ ˆ์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋Ÿ‰์ด ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์ฆ๊ฐ€ํ•œ๋‹ค

-> insert, update, delete๋ฌธ์€ ์ธ๋ฑ์Šค์˜ ์กฐ๊ฐํ™”๊ฐ€ ์‹ฌํ•ด์ ธ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋œ๋‹ค.

 

3. ์ธ๋ฑ์Šค ์ข…๋ฅ˜

1) ํด๋Ÿฌ์Šคํ„ฐ๋ง ์ธ๋ฑ์Šค

ํด๋Ÿฌ์Šคํ„ฐ : ๋ฌด๋ฆฌ, ๊ตฐ์ง‘

ํด๋Ÿฌ์Šคํ„ฐ๋ง : ์‹ค์ œ ๋ฐ์ดํ„ฐ์™€ ๋ฌด๋ฆฌ๋ฅผ ์ด๋ฃธ ~ ํด๋Ÿฌ์Šคํ„ฐ๋ง ์ธ๋ฑ์Šค๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ์™€ ๊ฐ™์€ ๋ฌด๋ฆฌ์˜ ์ธ๋ฑ์Šค

์ธ๋ฑ์Šค ~ Primary key, unique๋„ ์ธ๋ฑ์Šค -> primary key๋Š” ํด๋Ÿฌ์Šคํ„ฐ๋ง, unique๋Š” ๋…ผํด๋Ÿฌ์Šคํ„ฐ๋ง

๊ฐ ํ…Œ์ด๋ธ”์˜ PK๋ฅผ ์š”์†Œ๋กœ ํ•˜๋Š” ํ…Œ์ด๋ธ” : ๋ฃจํŠธ ํŽ˜์ด์ง€, ๋ฆฌํ”„ ์ฒด์ด์ง€๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค.

ex) ์‚ฌ์ „

ํŠน์ง•

- ์‹ค์ œ ๋ฐ์ดํ„ฐ ์ž์ฒด๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค

- ์ธ๋ฑ์Šค๊ฐ€ ํ…Œ์ด๋ธ” ๋‹น ํ•œ ๊ฐœ๋งŒ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค

- ๋ฆฌํ”„ ํŽ˜์ด์ง€๊ฐ€ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€

- Primary key (์šฐ์„ ์ˆœ์œ„) ๋˜๋Š” Unique + not null ์ œ์•ฝ์กฐ๊ฑด ์‹œ ์ž๋™ ์ƒ์„ฑ๋œ๋‹ค

 

2) ๋…ผ ํด๋Ÿฌ์Šคํ„ฐ๋ง ์ธ๋ฑ์Šค(๋ณด์กฐ ์ธ๋ฑ์Šค, ์„ธ์ปจ๋”๋ฆฌ ์ธ๋ฑ์Šค)

ex)๋ณ„๋„์˜ ์ฐพ์•„๋ณด๊ธฐ ํŽ˜์ด์ง€

์ƒ์„ฑ๋ฐฉ๋ฒ•

- Unique ์ œ์•ฝ์กฐ๊ฑด

- Unique Index ์ƒ์„ฑ, ์ค‘๋ณต ๋ถˆ๊ฐ€

- INDEX ์ƒ์„ฑ ~ CREATE INDEX idx_name ON member (name); ์ค‘๋ณต ํ—ˆ์šฉ

 

ํŠน์ง•

- ์‹ค์ œ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๋Š” ๊ทธ๋Œ€๋กœ

- ๋ณ„๋„์˜ ์ธ๋ฑ์Šค ํŽ˜์ด์ง€๊ฐ€ ์กด์žฌํ•˜๋ฏ€๋กœ ์ถ”๊ฐ€ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค

- ํ…Œ์ด๋ธ” ๋‹น ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค

- ๋ฆฌํ”„ ํŽ˜์ด์ง€์— ์‹ค์ œ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€์˜ ์ฃผ์†Œ๊ฐ€ ์žˆ๋‹ค -> ํด๋Ÿฌ์Šคํ„ฐ๋ง ์ธ๋ฑ์Šค๊ฐ€ ์ ์šฉ๋œ ์ปฌ๋Ÿผ์˜ ์‹ค์ œ ๊ฐ’

- Unique ์ œ์•ฝ์กฐ๊ฑด ์ ์šฉ ์‹œ ์ž๋™ ์ƒ์„ฑ๋œ๋‹ค

- ์ง์ ‘ index ์ƒ์„ฑ ์‹œ ๋…ผ ํด๋Ÿฌ์Šคํ„ฐ๋ง ์ธ๋ฑ์Šค ์ƒ์„ฑ

 

4. ์ธ๋ฑ์Šค ์ ์šฉ๊ธฐ์ค€

1) ์นด๋””๋„๋ฆฌํ‹ฐ : ๊ทธ๋ฃน ๋‚ด ์š”์†Œ์˜ ๊ฐœ์ˆ˜

~ ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋†’์€ ๊ฒƒ์„ ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค ~ ์š”์†Œ๊ฐ€ ๊ฐ€์žฅ ๋‹ค์–‘ํ•œ ์ปฌ๋Ÿผ์ด ๊ธฐ์ค€์ด๋‹ค, ์ค‘๋ณต๋„๊ฐ€ ๋‚ฎ์€ ์ปฌ

2) Where, Join, Order By ์ ˆ์— ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ปฌ๋Ÿผ

- ์ธ๋ฑ์Šค๋Š” ์ถ”๊ฐ€ ๊ณต๊ฐ„์„ ํ•„์š”๋กœ ํ•œ๋‹ค

- ์กฐ๊ฑด ์ ˆ์ด ์—†๋‹ค๋ฉด ์ธ๋ฑ์Šค๊ฐ€ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค

3) INSERT/ UPDATE/ DELETE๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ์ปฌ๋Ÿผ

4) ๊ทœ๋ชจ๊ฐ€ ํฐ ํ…Œ์ด๋ธ” ~ ์ผ์ • ๊ทœ๋ชจ ์ด์ƒ์ด ๋˜์–ด์•ผ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋” ํšจ์œจ์ ์ด๋‹ค

 

5. ์ธ๋ฑ์Šค ์‚ฌ์šฉ์‹œ ์ฃผ์˜์‚ฌํ•ญ

1) ์ž˜ ํ™œ์šฉ๋˜์ง€ ์•Š๋Š” ์ธ๋ฑ์Šค๋Š” ์‚ญ์ œ

2) ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋‚ฎ์€ ์ปฌ๋Ÿผ์€ ์ธ๋ฑ์Šค ํšจ๊ณผ๊ฐ€ ์ ๋‹ค

3) ์ž์ฃผ ์‚ฌ์šฉ๋˜๋”๋ผ๋„ ๋ฐ์ดํ„ฐ ์ˆ˜์ • ์ฟผ๋ฆฌ๊ฐ€ ์ž์ฃผ ์ผ์–ด๋‚œ๋‹ค๋ฉด ์ธ๋ฑ์Šค ์‚ฌ์šฉ์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค

-> ์ผ๋ฐ˜์ ์ธ ์›น ์„œ๋น„์Šค์™€ ๊ฐ™์€ ์˜จ๋ผ์ธ ํŠธ๋žœ์žญ์…˜ ํ™˜๊ฒฝ์—์„œ ์“ฐ๊ธฐ์™€ ์ฝ๊ธฐ ๋น„์œจ์€ 2:8 ๋˜๋Š” 1:9์ด๋‹ค

-> ์กฐ๊ธˆ ๋Š๋ฆฐ ์“ฐ๊ธฐ๋ฅผ ๊ฐ์ˆ˜ํ•˜๊ณ  ๋น ๋ฅธ ์ฝ๊ธฐ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ๋„ ํ•˜๋‚˜์˜ ๋ฐฉ๋ฒ•์ด๋‹ค

 

+ ์ถ”๊ฐ€๋กœ ๊ณต๋ถ€ํ•˜๋ฉด ์ข‹์€ ์—ฐ๊ด€์ง€์‹

-> B+Tree, ์‹คํ–‰๊ณ„ํš, ๋‹ค์ค‘์ปฌ๋Ÿผ ์ธ๋ฑ์Šค, SQL ์ตœ์ ํ™”, ANALYZE TABLE, ์˜ตํ‹ฐ๋งˆ์ด์ €

๋ฉ˜ํ† ๋‹˜ ๊ฐ•์˜

- ๋ชฉํ‘œ ์„ธ์šฐ๊ธฐ : ์ทจ์ค€ ๋งˆ์ง€๋…ธ์„ ๊ณผ ์›ํ•˜๋Š” ํšŒ์‚ฌ์˜ ๋ฒ”์œ„๋ฅผ ์žก์ž

- ์ง€์›์˜ ๊ธฐ๋ณธ์„ ๊ฐ–์ถ”์ž

: ์ž๊ธฐ์†Œ๊ฐœ, ๊ฐœ๋ฐœ์ง๊ตฐ์œผ๋กœ์„œ์˜ ์ง€์›๋™๊ธฐ๊ฐ€ ์ค€๋น„๋˜์–ด ์žˆ๋Š”๊ฐ€?

~ ๊ธฐ์ˆ  ํ‘œํ˜„์— ๋Œ€ํ•ด ๋ถˆํ•„์š”ํ•œ ๋‚ด์šฉ์„ ๋ฐฐ์ œํ•˜๊ณ  ๊ธฐ๊ฐ„ ๋‚ด ์‚ฌ์šฉํ•œ ๊ธฐ์ˆ ์„ ์ ์ ˆํ•˜๊ฒŒ ๋‹ด์ž. ๊ทธ๋ฆฌ๊ณ  ์Šค์Šค๋กœ๊ฐ€ ์‚ฌ์šฉํ•œ ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ์ž์‹ ์žˆ๊ฒŒ ์“ธ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

์ „๊ณต์— ์—ฐ๊ด€์ด ์žˆ๋Š”, ๋น„์ „๊ณต ๊ฒฝํ—˜๊ณผ ์—ฐ๊ด€์ด ์žˆ๋Š” ๊ฒฝ์šฐ ~ ๊ทธ ๊ฒฝํ—˜์„ ๋…น์—ฌ๋ณด์ž

๋ถ€์กฑํ•ด๋„, ์ผ๋‹จ ์ง€์›ํ•˜๋ฉด์„œ ์‹œ์žฅ์˜ ํ‰๊ฐ€๋ฅผ ๋ฐ›์•„๋ณด์ž

* ํ”„๋กœ์ ํŠธ์—์„œ ๋‹ด๋‹นํ•˜์ง€ ์•Š์•˜๋˜ ๋ถ€๋ถ„์— ๋Œ€ํ•ด : ๋Œ€๋žต์ ์ธ ์ดํ•ด๋ฅผ ํ•  ์ˆ˜ ์žˆ๋„๋ก

 

 

728x90

'TIL, WIL > TIL๐Ÿ“˜' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

03. 30 TIL  (0) 2023.03.30
03. 29 TIL  (0) 2023.03.29
03. 27 TIL  (0) 2023.03.27
03. 24 TIL  (0) 2023.03.24
03. 23 TIL  (0) 2023.03.23