๐Ÿ“ŠDB ์ธ๋ฑ์Šค ํฌ๊ธฐ ์˜ˆ์ธก๊ธฐ

๋ ˆ์ฝ”๋“œ ์ˆ˜์™€ ํ•„๋“œ๋‹น ์˜ˆ์ƒ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ธ๋ฑ์Šค์˜ ๋ฌผ๋ฆฌ์  ์šฉ๋Ÿ‰์„ ์ถ”์ •ํ•˜์„ธ์š”.

* BIGINT: 8, UUID: 16, VARCHAR: ์‹ค์ œ ๊ธ€์ž์ˆ˜ ๊ธฐ๋ฐ˜
* B-Tree ํŽ˜์ด์ง€์˜ ์—ฌ์œ  ๊ณต๊ฐ„ ๋น„์œจ (๊ธฐ๋ณธ 70~90% ๊ถŒ์žฅ)

์˜ˆ์ƒ ์ธ๋ฑ์Šค ํฌ๊ธฐ

10.9 MB
๊ตฌ๋ถ„์˜ˆ์ƒ ์ˆ˜์น˜
์ˆœ์ˆ˜ ๋ฐ์ดํ„ฐ ์šฉ๋Ÿ‰7.6 MB
์˜ค๋ฒ„ํ—ค๋“œ ํฌํ•จ (B-Tree)10.9 MB

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ์˜ ์—ด์‡ , ์ธ๋ฑ์Šค ์šฉ๋Ÿ‰ ๊ด€๋ฆฌ

์ธ๋ฑ์Šค(Index)๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐํšŒ ์„ฑ๋Šฅ์„ ํš๊ธฐ์ ์œผ๋กœ ๋†’์—ฌ์ฃผ์ง€๋งŒ, ๊ณต์งœ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋งˆ๋‹ค ์ถ”๊ฐ€์ ์ธ ๋””์Šคํฌ ๊ณต๊ฐ„์ด ์†Œ๋ชจ๋˜๋ฉฐ, ๋ฐ์ดํ„ฐ ์‚ฝ์ž…(`INSERT`)์ด๋‚˜ ์ˆ˜์ •(`UPDATE`) ์‹œ๋งˆ๋‹ค ์ธ๋ฑ์Šค ๊ตฌ์กฐ๋ฅผ ์žฌ์ •๋ ฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์“ฐ๊ธฐ ์„ฑ๋Šฅ์—๋„ ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค. ํŠนํžˆ ๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ ๋งŽ์€ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋ฐฐ๋ณด๋‹ค ๋ฐฐ๊ผฝ์ด ๋” ์ปค์ ธ ์ธ๋ฑ์Šค ์šฉ๋Ÿ‰์ด ์‹ค์ œ ๋ฐ์ดํ„ฐ ์šฉ๋Ÿ‰์„ ๋„˜์–ด์„œ๋Š” ํ˜„์ƒ๊นŒ์ง€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ณ„์‚ฐ๊ธฐ๋Š” B-Tree ๊ตฌ์กฐ์˜ ์ผ๋ฐ˜์ ์ธ ํŠน์„ฑ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ธ๋ฑ์Šค ํฌ๊ธฐ๋ฅผ ์ถ”์ •ํ•ฉ๋‹ˆ๋‹ค. ํ•ต์‹ฌ ํฌ์ธํŠธ๋Š” **Fill Factor(์ถฉ์ „์œจ)**์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํ–ฅํ›„ ๋ฐ์ดํ„ฐ ์‚ฝ์ž…์„ ๋Œ€๋น„ํ•ด ์ธ๋ฑ์Šค ํŽ˜์ด์ง€์— ์ผ์ • ์ˆ˜์ค€์˜ ๋นˆ ๊ณต๊ฐ„์„ ๋‚จ๊ฒจ๋‘ก๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ถฉ์ „์œจ์„ 70%๋กœ ์„ค์ •ํ–ˆ๋‹ค๋ฉด, ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ณด๋‹ค ์•ฝ 1.4๋ฐฐ ๋” ๋งŽ์€ ๋ฌผ๋ฆฌ์  ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ๋นˆ ๊ณต๊ฐ„ ๊ด€๋ฆฌ๊ฐ€ ์ œ๋Œ€๋กœ ๋˜์ง€ ์•Š์œผ๋ฉด ์ธ๋ฑ์Šค ์กฐ๊ฐํ™”(Fragmentation)๊ฐ€ ์‹ฌํ•ด์ ธ ์„ฑ๋Šฅ ์ €ํ•˜์˜ ์›์ธ์ด ๋ฉ๋‹ˆ๋‹ค.

ํšจ์œจ์ ์ธ DB ์šด์˜์„ ์œ„ํ•ด์„œ๋Š” ์ธ๋ฑ์Šค ๋Œ€์ƒ ์ปฌ๋Ÿผ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์‹ ์ค‘ํžˆ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ˆ˜์–ต ๊ฑด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ํ…Œ์ด๋ธ”์—์„œ 8๋ฐ”์ดํŠธ `BIGINT` ๋Œ€์‹  16๋ฐ”์ดํŠธ `UUID`๋ฅผ ์ธ๋ฑ์Šค๋กœ ์“ฐ๋ฉด ์ €์žฅ ๊ณต๊ฐ„์€ ๋‘ ๋ฐฐ๋กœ ๋Š˜์–ด๋‚˜๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ ์ ์ค‘๋ฅ ์€ ๋–จ์–ด์ง‘๋‹ˆ๋‹ค. ๋ณธ ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ์ธ๋ฑ์Šค ์ถ”๊ฐ€ ์ „ ์˜ˆ์ƒ ์šฉ๋Ÿ‰์„ ๋ฏธ๋ฆฌ ์‚ฐ์ถœํ•ด ๋ณด๊ณ , ์ธํ”„๋ผ ๋น„์šฉ๊ณผ ์„ฑ๋Šฅ ์‚ฌ์ด์˜ ์ตœ์ ์˜ ํ•ฉ์˜์ ์„ ์ฐพ์•„๋ณด์„ธ์š”.

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ (FAQ)

Q: MySQL๊ณผ PostgreSQL์˜ ํฌ๊ธฐ ์ฐจ์ด๊ฐ€ ์žˆ๋‚˜์š”?

A: ๊ธฐ๋ณธ์ ์ธ B-Tree ๊ตฌ์กฐ๋Š” ์œ ์‚ฌํ•˜์ง€๋งŒ, ๋‚ด๋ถ€์ ์ธ ํฌ์ธํ„ฐ ํฌ๊ธฐ๋‚˜ ํŽ˜์ด์ง€ ํ—ค๋” ์˜ค๋ฒ„ํ—ค๋“œ์— ๋”ฐ๋ผ ์ˆ˜ MB ์ •๋„์˜ ๋ฏธ์„ธํ•œ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Q: ๋ณตํ•ฉ ์ธ๋ฑ์Šค๋Š” ์–ด๋–ป๊ฒŒ ๊ณ„์‚ฐํ•˜๋‚˜์š”?

A: ์ธ๋ฑ์Šค์— ํฌํ•จ๋œ ๋ชจ๋“  ์ปฌ๋Ÿผ์˜ ๋ฐ”์ดํŠธ ํ•ฉ๊ณ„๋ฅผ 'ํ‰๊ท  ํฌ๊ธฐ' ์นธ์— ์ž…๋ ฅํ•˜์—ฌ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Q: ์ธ๋ฑ์Šค ํฌ๊ธฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ํฌ๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?

A: ์ธ๋ฑ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ(Buffer Pool)์— ๋‹ค ์˜ฌ๋ผ๊ฐ€์ง€ ๋ชปํ•˜๋ฉด ๋นˆ๋ฒˆํ•œ ๋””์Šคํฌ ์Šค์™‘์ด ๋ฐœ์ƒํ•˜์—ฌ ์กฐํšŒ ์„ฑ๋Šฅ์ด ๊ธ‰๊ฒฉํžˆ ๋–จ์–ด์ง‘๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค๋Š” ๊ฐ€๊ธ‰์  ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์—์„œ ์†Œํ™” ๊ฐ€๋Šฅํ•œ ํฌ๊ธฐ๋กœ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.