๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[DB] ์ธ๋ฑ์Šค ๊ฐ„๋žต ์ •๋ฆฌ [1]

by GroovyArea 2024. 6. 29.

์ธ๋ฑ์Šค

๋žœ๋ค & ์ˆœ์ฐจ IO

๋””์Šคํฌ ํ—ค๋”๋ฅผ 1๋ฒˆ, ์—ฌ๋Ÿฌ๋ฒˆ ์˜ฎ๊ธฐ๋А๋ƒ? ์ฆ‰, ๋””์Šคํฌ์˜ ์„ฑ๋Šฅ์€ ๋””์Šคํฌ ํ—ค๋” ์œ„์น˜ ์ด๋™ ์—†์ด ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ๊ธฐ๋กํ•˜๋А๋ƒ์— ๋”ฐ๋ผ ๊ฒฐ์ •

Mysql ๋Š” ๊ทธ๋ฃน ์ปค๋ฐ‹, ๋ฐ”์ด๋„ˆ๋ฆฌ ๋กœ๊ทธ ๋ฒ„ํผ, InnoDB ๋กœ๊ทธ ๋ฒ„ํผ ๋“ฑ์˜ ๊ธฐ๋Šฅ์œผ๋กœ ๊ฐœ์„ 

๊ฒฐ๊ตญ ๋žœ๋ค IO ๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด ์ฟผ๋ฆฌ๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ

์ •์˜

ArrayList ์™€ SortedList ์˜ ์ฐจ์ด๋ฅผ ์•„๋Š”๊ฐ€?

์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅ or ์ •๋ ฌํ•˜์—ฌ ์ €์žฅ

๋น ๋ฅด๊ฒŒ ์ ์žฌ or ๋А๋ฆฌ์ง€๋งŒ ์ •๋ ฌํ•˜์—ฌ ์ ์žฌ

์ธ๋ฑ์Šค๋ฅผ ์ ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์“ฐ๊ธฐ ์„ฑ๋Šฅ์„ ์–ด๋А ์ •๋„ ํฌ๊ธฐํ•˜๊ณ , ์ฝ๊ธฐ ์„ฑ๋Šฅ์„ ํƒํ•˜๊ฒ ๋‹ค.

B-Tree ์—์„œ ์ธ๋ฑ์Šค ํ‚ค ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ ์‹œ

๋ณดํ†ต์˜ ๊ฒฝ์šฐ, ๋ ˆ์ฝ”๋“œ ์ถ”๊ฐ€ ๋น„์šฉ 1 ๊ฐ€์ • ์‹œ ์ธ๋ฑ์Šค ์ถ”๊ฐ€ ๋น„์šฉ์„ 1.5 ๋กœ ์˜ˆ์ธกํ•˜๋Š” ํŽธ.

์ธ๋ฑ์Šค ํ‚ค ์‚ญ์ œ์™€ ๋ณ€๊ฒฝ์˜ ๊ฒฝ์šฐ, InnoDB ์—”์ง„์— ๋ฒ„ํผ ๋˜์–ด, ์ง€์—ฐ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ‚ค ๊ฐ’ ๋ณ€๊ฒฝ์€ ํ‚ค ๊ฐ’ ์‚ญ์ œ → ์ƒˆ๋กœ์šด ํ‚ค ์ถ”๊ฐ€ ์ˆœ์„œ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค. → ์—ญ์‹œ InnoDB ์ฒด์ธ์ง€ ๋ฒ„ํผ๋กœ ์ง€์—ฐ ์ฒ˜๋ฆฌ

์ธ๋ฑ์Šค ํ‚ค ๊ฐ’์˜ ํฌ๊ธฐ

์ธ๋ฑ์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ํ‚ค ๊ฐ’์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง€๋ฉด, ๋””์Šคํฌ IO ํšŸ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚˜๊ณ , ๋А๋ ค์ง„๋‹ค.

→ ์ „์ฒด์ ์ธ ์ธ๋ฑ์Šค์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง„๋‹ค

→ InnoDB ์˜ ๋ฒ„ํผ ํ’€์€ ํฌ๊ธฐ๊ฐ€ ์ œํ•œ์ ์ด๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์บ์‹œ ๊ฐ€๋Šฅํ•œ ๋ ˆ์ฝ”๋“œ ์ˆ˜๊ฐ€ ์ค„์–ด๋“ ๋‹ค.

→ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์ด ๋–จ์–ด์ง.

์ฝ๊ธฐ

์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ์ฝ์„ ๋ ˆ์ฝ”๋“œ์˜ ๊ฑด์ˆ˜๊ฐ€ ์ „์ฒด ํ…Œ์ด๋ธ” ๋ ˆ์ฝ”๋“œ์˜ 20~25% ๋ฅผ ๋„˜์„ ๊ฒฝ์šฐ, ํ…Œ์ด๋ธ”์„ ์ง์ ‘ ๋ชจ๋‘ ์ฝ๋Š” ๊ฒƒ์ด ํšจ์œจ์ 

→ ์ผ๋ฐ˜์ ์ธ DBMS ์˜ ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด 1๊ฑด์„ ์ฝ๋Š” ๊ฒƒ์ด ์ง์ ‘ ๋ ˆ์ฝ”๋“œ 1๊ฑด์„ ์ฝ๋Š” ๊ฒƒ๋ณด๋‹ค 4~5๋ฐฐ ๋น„์šฉ์ด ๋งŽ์ด๋“œ๋Š” ์ž‘์—…

๋‹ค์ค‘ ์นผ๋Ÿผ ์ธ๋ฑ์Šค

๋ณตํ•ฉ ์ธ๋ฑ์Šค์—์„œ 2๋ฒˆ ์งธ ์นผ๋Ÿผ์€ 1๋ฒˆ ์งธ ์นผ๋Ÿผ์— ์˜์กดํ•˜์—ฌ ์ •๋ ฌ

๋ณตํ•ฉ ์ธ๋ฑ์Šค๋Š” ์ธ๋ฑ์Šค ๋‚ด ๊ฐ ์นผ๋Ÿผ์˜ ์œ„์น˜(์ˆœ์„œ) ๊ฐ€ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค.

๋ฐ˜์‘ํ˜•