์ด๋ฒ ๊ธ๊ณผ ๋ค์ ๊ธ์ ํตํด์ B-Tree ์ธ๋ฑ์ค์ ๋ํด์ ์์ธํ ์์๋ณด์.
๐ 1. ์ธ๋ฑ์ค ๊ฐ๋
๐งฐ 1. ์ฑ ๊ณผ ์ธ๋ฑ์ค
์ธ๋ฑ์ค๋ ์ฑ ์ ๋งจ ๋์ ์๋ ์ฐพ์๋ณด๊ธฐ(= ์์ธ)์ ๋น์ ํ ์ ์๋ค. '์ฐพ์๋ณด๊ธฐ'๋ฅผ ์ธ๋ฑ์ค๋ผ๊ณ ํ๋ค๋ฉด, '์ฑ ์ ๋ด์ฉ'์ ๋ฐ์ดํฐ ํ์ผ์ ํด๋นํ๊ณ , 'ํ์ด์ง ๋ฒํธ'๋ ๋ฐ์ดํฐ ํ์ผ์ ์ ์ฅ๋ ๋ ์ฝ๋์ ์ฃผ์๋ผ๊ณ ํ ์ ์๋ค.
DBMS์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํด์ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค. ๊ทธ๋์ ์นผ๋ผ(๋๋ ์นผ๋ผ๋ค)์ ๊ฐ๊ณผ ํด๋น ๋ ์ฝ๋๊ฐ ์ ์ฅ๋ ์ฃผ์๋ฅผ ํค์ ๊ฐ์ ์(key-value)์ผ๋ก ์ผ์ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค์ด ๋๋ ๊ฒ์ด๋ค.
์ฑ ์ '์ฐพ์๋ณด๊ธฐ'์ DBMS์ ์ธ๋ฑ์ค์ ์ค์ํ ๊ณตํต์ ์ '์ ๋ ฌ'์ด๋ค. '์ฐพ์๋ณด๊ธฐ'๋ 'ใฑ, ใด, ใท, ใน,...'๊ณผ ๊ฐ์ ์์๋ก ์ ๋ ฌ๋์ด ์๋๋ฐ, DBMS์ ์ธ๋ฑ์ค๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์นผ๋ผ์ ๊ฐ์ ์ฃผ์ด์ง ์๋๋ก ๋ฏธ๋ฆฌ ์ ๋ ฌํด์ ๋ณด๊ดํ๋ค.
๐งฐ 2. ์๋ฃ๊ตฌ์กฐ์ ์ธ๋ฑ์ค
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ๋ฉด ์ธ๋ฑ์ค์ ๋ฐ์ดํฐ ํ์ผ์ ํน์ฑ์ ์ดํดํด ๋ณด์. ํ์ํ ์๋ฃ ๊ตฌ์กฐ ์ง์์ ์๋์ ๊ฐ๋ค.
SortedList๋ ์ ์ฅ๋๋ ๊ฐ์ ํญ์ ์ ๋ ฌ๋ ์ํ๋ก ์ ์งํ๋ ์๋ฃ ๊ตฌ์กฐ์ด๋ฉฐ, ArrayList๋ ๊ฐ์ ์ ์ฅ๋๋ ์์ ๊ทธ๋๋ก ์ ์งํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
SortedList๋ DBMS์ ์ธ๋ฑ์ค์ ๊ฐ์ ์๋ฃ ๊ตฌ์กฐ์ด๋ฉฐ, ArrayList๋ ๋ฐ์ดํฐ ํ์ผ๊ณผ ๊ฐ์ ์๋ฃ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ค.
๊ทธ๋์ DBMS์ ์ธ๋ฑ์ค๋ SortedList์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ์ฅ๋๋ ์นผ๋ผ์ ๊ฐ์ ์ด์ฉํด ํญ์ ์ ๋ ฌ๋ ์ํ๋ฅผ ์ ์งํ๋ค. ๋ฐ์ดํฐ ํ์ผ์ ArrayList์ ๊ฐ์ด ์ ์ฅ๋ ์์๋๋ก ๋ณ๋์ ์ ๋ ฌ ์์ด ๊ทธ๋๋ก ์ ์ฅํด ๋๋ค.
DBMS์์ ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ์ ์ ์ฅ(INSERT, UPDATE, DELETE) ์ฑ๋ฅ์ ํฌ์ํ๊ณ ๊ทธ ๋์ ๋ฐ์ดํฐ์ ์ฝ๊ธฐ ์๋๋ฅผ ๋์ด๋ ๊ธฐ๋ฅ์ด๋ค.
๊ทธ ์ด์ ๋ SortedList ์๋ฃ ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ๋๋ง๋ค ํญ์ ๊ฐ์ ์ ๋ ฌํด์ผ ํ๋ฏ๋ก ์ ์ฅํ๋ ๊ณผ์ ์ด ๋ณต์กํ๊ณ ๋๋ฆฌ์ง๋ง, ์ด๋ฏธ ์ ๋ ฌ๋ผ ์์ด์ ์์ฃผ ๋นจ๋ฆฌ ์ํ๋ ๊ฐ์ ์ฐพ์์ฌ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
DBMS์ ์ธ๋ฑ์ค๋ ์ธ๋ฑ์ค๊ฐ ๋ง์ ํ ์ด๋ธ์ ๋น์ฐํ INSERT๋ UPDATE, DELETE ๋ฌธ์ฅ์ ์ฒ๋ฆฌ๊ฐ ๋๋ ค์ง๋ค. ํ์ง๋ง, ์ด๋ฏธ ์ ๋ ฌ๋ '์ฐพ์๋ณด๊ธฐ'์ฉ ํ(์ธ๋ฑ์ค)๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ SELECT ๋ฌธ์ฅ์ ๋งค์ฐ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค.
๐ 2. B-Tree์ ๊ตฌ์กฐ ๋ฐ ํน์ฑ
B-Tree๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ธ๋ฑ์ฑ ์๊ณ ๋ฆฌ์ฆ ๊ฐ์ด๋ฐ ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๊ณ , ๊ฐ์ฅ ๋จผ์ ๋์ ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์์ง๊น์ง ๊ฐ์ฅ ๋ฒ์ฉ์ ์ธ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ธ๋ฑ์ค ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
B-Tree๋ ์นผ๋ผ์ ์๋ ๊ฐ์ ๋ณํ์ํค์ง ์๊ณ ์ธ๋ฑ์ค ๊ตฌ์กฐ์ฒด ๋ด์์๋ ํญ์ ์ ๋ ฌ๋ ์ํ๋ก ์ ์งํ๋ค. ์ ๋ฌธ ๊ฒ์๊ณผ ๊ฐ์ ํน์ํ ์๊ฑด์ด ์๋ ๊ฒฝ์ฐ, ๋๋ถ๋ถ ์ธ๋ฑ์ค๋ ๊ฑฐ์ B-Tree๋ฅผ ์ฌ์ฉํ ์ ๋๋ก ์ผ๋ฐ์ ์ธ ์ฉ๋์ ์ ํฉํ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
B-Tree๋ ํธ๋ฆฌ ๊ตฌ์กฐ์ ์ต์์์ ํ๋์ '๋ฃจํธ ๋ ธ๋(Root node)'๊ฐ ์กด์ฌํ๊ณ ๊ทธ ํ์์ ์์ ๋ ธ๋๊ฐ ๋ถ์ด ์๋ ํํ๋ค. ํธ๋ฆฌ ๊ตฌ์กฐ์ ๊ฐ์ฅ ํ์์ ์๋ ๋ ธ๋๋ฅผ '๋ฆฌํ ๋ ธ๋(Leaf node)'๋ผ ํ๊ณ , ํธ๋ฆฌ ๊ตฌ์กฐ์์ ๋ฃจํธ ๋ ธ๋๋ ์๋๊ณ ๋ฆฌํ ๋ ธ๋๋ ์๋ ์ค๊ฐ์ ๋ ธ๋๋ฅผ '๋ธ๋์น ๋ ธ๋(Branch node)'๋ผ๊ณ ํ๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ธ๋ฑ์ค์ ์ค์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ๋ฐ๋ก ๊ด๋ฆฌ๋๋๋ฐ, ์ธ๋ฑ์ค์ ๋ฆฌํ ๋ ธ๋๋ ํญ์ ์ค์ ๋ฐ์ดํฐ ๋ ์ฝ๋๋ฅผ ์ฐพ์๊ฐ๊ธฐ ์ํ ์ฃผ์๊ฐ์ ๊ฐ์ง๊ณ ์๋ค.
์ธ๋ฑ์ค์ ๊ฐ๋ ์ ์ค๋ช ํ๋ ๋ถ๋ถ์์ ์ดํด๋ดค๋ฏ์ด ๋๋ถ๋ถ RDBMS์ ๋ฐ์ดํฐ ํ์ผ์์ ๋ ์ฝ๋๋ ํน์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋์ง ์๊ณ ์์์ ์์๋ก ์ ์ฅ๋๋ค. ํ์ง๋ง, InnoDB ํ ์ด๋ธ์์ ๋ ์ฝ๋๋ ํด๋ฌ์คํฐ ๋์ด ๋์คํฌ์ ์ ์ฅ๋๋ฏ๋ก ๊ธฐ๋ณธ์ ์ผ๋ก PK ์์๋ก ์ ๋ ฌ๋์ด ์ ์ฅ๋๋ค.
์์ ๊ทธ๋ฆผ์ MyISAM ์คํ ๋ฆฌ์ง ์์ง๊ณผ InnoDB ์คํ ๋ฆฌ์ง ์์ง์์์ 'B-Tree์ ๋ฆฌํ ๋ ธ๋์ ํ ์ด๋ธ ๋ฐ์ดํฐ ๋ ์ฝ๋์ ๊ด๊ณ'๋ฅผ ๋ณด์ฌ์ค๋ค.
๋ ์คํ ๋ฆฌ์ง ์์ง์ ์ธ๋ฑ์ค์์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ ์ธ์ปจ๋๋ฆฌ ์ธ๋ฑ์ค๋ฅผ ํตํด ๋ฐ์ดํฐ ํ์ผ์ ๋ ์ฝ๋๋ฅผ ์ฐพ์๊ฐ๋ ๋ฐฉ๋ฒ์ ์๋ค. MyISAM ํ ์ด๋ธ์ ์ธ์ปจ๋๋ฆฌ ์ธ๋ฑ์ค๊ฐ ๋ฌผ๋ฆฌ์ ์ธ ์ฃผ์๋ฅผ ๊ฐ์ง๋ ๋ฐ๋ฉด InnoDB ํ ์ด๋ธ์ ํ๋ผ์ด๋จธ๋ฆฌ ํค๋ฅผ ์ฃผ์์ฒ๋ผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ ผ๋ฆฌ์ ์ธ ์ฃผ์๋ฅผ ๊ฐ์ง๋ค๊ณ ๋ณผ ์ ์๋ค.
๊ทธ๋์ InnoDB ํ ์ด๋ธ์์ ์ธ๋ฑ์ค๋ฅผ ํตํด ๋ ์ฝ๋๋ฅผ ์ฝ์ ๋๋ MyISAM์ ์ด์ฉํ ๊ฒ์ฒ๋ผ ๋ฐ์ดํฐ ํ์ผ์ ๋ฐ๋ก ์ฐพ์๊ฐ์ง ๋ชปํ๋ค. InnoDB ์คํ ๋ฆฌ์ง ์์ง์์๋ ๋ชจ๋ ์ธ์ปจ๋๋ฆฌ ์ธ๋ฑ์ค ๊ฒ์์์ ๋ฐ์ดํฐ ๋ ์ฝ๋๋ฅผ ์ฝ๊ธฐ ์ํด์๋ ๋ฐ๋์ PK๋ฅผ ์ ์ฅํ๊ณ ์๋ B-Tree๋ฅผ ๋ค์ ํ๋ฒ ๊ฒ์ํด์ผ ํ๋ค.
๐ 3. B-Tree ์ธ๋ฑ์ค ํค ์ถ๊ฐ, ์ญ์ , ๋ณ๊ฒฝ, ๊ฒ์
๐งฐ 1. ์ธ๋ฑ์ค ํค ์ถ๊ฐ
์๋ก์ด ํค ๊ฐ์ด B-Tree์ ์ ์ฅ๋ ๋๋ ์ ์ฅ๋ ํค ๊ฐ์ ์ด์ฉํด B-Tree ์์ ์ ์ ํ ์์น๋ฅผ ๊ฒ์ํด์ผ ํ๋ค. ์ ์ฅ๋ ์์น๊ฐ ๊ฒฐ์ ๋๋ฉด ๋ ์ฝ๋์ ํค ๊ฐ๊ณผ ๋์ ๋ ์ฝ๋์ ์ฃผ์ ์ ๋ณด๋ฅผ B-Tree์ ๋ฆฌํ ๋ ธ๋์ ์ ์ฅํ๋ค.
๋ฆฌํ ๋ ธ๋๊ฐ ๊ฝ ์ฐจ์ ๋๋ ์ ์ฅํ ์ ์์ ๋๋ ๋ฆฌํ ๋ ธ๋๊ฐ ๋ถ๋ฆฌ(Split)๋์ด์ผ ํ๋๋ฐ, ์ด๋ ์์ ๋ธ๋์น ๋ ธ๋๊น์ง ์ฒ๋ฆฌ์ ๋ฒ์๊ฐ ๋์ด์ง๋ค. ์ด๋ฌํ ์์ ํ์ B-Tree๋ ์๋์ ์ผ๋ก ์ฐ๊ธฐ ์์ (์๋ก์ด ํค๋ฅผ ์ถ๊ฐํ๋ ์์ )์ ๋น์ฉ์ด ๋ง์ด ๋๋ ๊ฒ์ผ๋ก ์๋ ค์ก๋ค.
ํ ์ด๋ธ์ ์คํ ๋ฆฌ์ง ์์ง์ ๋ฐ๋ผ ์๋ก์ด ํค ๊ฐ์ด ์ฆ์ ์ธ๋ฑ์ค์ ์ ์ฅ๋ ์๋ ์๊ณ ๊ทธ๋ ์ง ์์ ์๋ ์๋ค.
MyISAM์ด๋ MEMORY ์คํ ๋ฆฌ์ง ์์ง์ ์ฌ์ฉํ๋ ํ ์ด๋ธ์์๋ INSERT ๋ฌธ์ฅ์ด ์คํ๋๋ฉด ์ฆ์ ์๋ก์ด ํค ๊ฐ์ B-Tree ์ธ๋ฑ์ค์ ๋ณ๊ฒฝํ๋ค. ํ์ง๋ง, InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ์ด ์์ ์ ์กฐ๊ธ ๋ ์ง๋ฅ์ ์ผ๋ก ์ฒ๋ฆฌํ๋๋ฐ, ํ์ํ๋ค๋ฉด ์ธ๋ฑ์ค ํค ์ถ๊ฐ ์์ ์ ์ง์ฐ์์ผ ๋์ค์ ์ฒ๋ฆฌํ ์ ์๋ค.
๊ทธ๋ฌ๋ PK๋ ์ ๋ํฌ ์ธ๋ฑ์ค์ ๊ฒฝ์ฐ ์ค๋ณต ์ฒดํฌ๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ์ฆ์ B-Tree์ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ๋ค.
๐งฐ 2. ์ธ๋ฑ์ค ํค ์ญ์
B-Tree์ ํค ๊ฐ์ด ์ญ์ ๋๋ ๊ฒฝ์ฐ๋ ์๋นํ ๊ฐ๋จํ๋ค.
ํด๋น ํค ๊ฐ์ด ์ ์ฅ๋ B-Tree์ ๋ฆฌํ ๋ ธ๋๋ฅผ ์ฐพ์์ ๊ทธ๋ฅ ์ญ์ ๋งํฌ๋ง ํ๋ฉด ์์ ์ด ์๋ฃ๋๋ค. ์ด๋ ๊ฒ ์ญ์ ๋งํน๋ ์ธ๋ฑ์ค ํค ๊ณต๊ฐ์ ๊ณ์ ๊ทธ๋๋ก ๋ฐฉ์นํ๊ฑฐ๋ ์ฌํ์ฉํ ์ ์๋ค.
InnoDB ์คํ ๋ฆฌ์ง ์์ง์์๋ ์ด ์์ ๋ํ ๋ฒํผ๋ง ๋์ด ์ง์ฐ ์ฒ๋ฆฌ๋ ์๋ ์๋ค.
๐งฐ 3. ์ธ๋ฑ์ค ํค ๋ณ๊ฒฝ
์ธ๋ฑ์ค์ ํค ๊ฐ์ ๊ทธ ๊ฐ์ ๋ฐ๋ผ ์ ์ฅ๋ ๋ฆฌํ ๋ ธ๋์ ์์น๊ฐ ๊ฒฐ์ ๋๋ฏ๋ก B-Tree์ ํค ๊ฐ์ด ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ์๋ ๋จ์ํ ์ธ๋ฑ์ค์์ ํค ๊ฐ๋ง ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค.
B-Tree์ ํค ๊ฐ ๋ณ๊ฒฝ ์์ ์ ๋จผ์ ํค ๊ฐ์ ์ญ์ ํ ํ, ๋ค์ ์๋ก์ด ํค ๊ฐ์ ์ถ๊ฐํ๋ ํํ๋ก ์ฒ๋ฆฌ๋๋ค. InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ์ฌ์ฉํ๋ ํ ์ด๋ธ์ ๋ํด์๋ ์ด ์์ ๋ชจ๋ ์ฒด์ธ์ง ๋ฒํผ๋ฅผ ํ์ฉํด ์ง์ฐ ์ฒ๋ฆฌ ๋ ์ ์๋ค.
๐งฐ 4. ์ธ๋ฑ์ค ํค ๊ฒ์
์ธ๋ฑ์ค๋ฅผ ๊ฒ์ํ๋ ์์ ์ B-Tree์ ๋ฃจํธ ๋ ธ๋๋ถํฐ ์์ํด ๋ธ๋์น ๋ ธ๋๋ฅผ ๊ฑฐ์ณ ์ต์ข ๋ฆฌํ ๋ ธ๋๊น์ง ์ด๋ํ๋ฉด์ ๋น๊ต ์์ ์ ์ํํ๋ค. ์ด ๊ณผ์ ์ 'ํธ๋ฆฌ ํ์'์ด๋ผ๊ณ ํ๋ค.
B-Tree ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํ ๊ฒ์์ 100% ์ผ์น ๋๋ ๊ฐ์ ์๋ถ๋ถ(Left-most part)๋ง ์ผ์นํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ ์ ์๋ค. ๋ถ๋ฑํธ(<, >)๋น๊ต ์กฐ๊ฑด์์๋ ์ธ๋ฑ์ค๋ฅผ ํ์ฉํ ์ ์์ง๋ง, ์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ฑํ๋ ํค ๊ฐ์ ๋ท๋ถ๋ถ๋ง ๊ฒ์ํ๋ ์ฉ๋๋ก๋ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
๋ํ, ์ธ๋ฑ์ค์ ํค ๊ฐ์ ๋ณํ์ด ๊ฐํด์ง ํ ๋น๊ต๋๋ ๊ฒฝ์ฐ์๋ ์ ๋ B-Tree์ ๋น ๋ฅธ ๊ฒ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค. ์ด๋ฏธ ๋ณํ๋ ๊ฐ์ B-Tree ์ธ๋ฑ์ค์ ์กด์ฌํ๋ ๊ฐ์ด ์๋๋ค.
๋ฐ๋ผ์ ํจ์๋ ์ฐ์ฐ์ ์ํํ ๊ฒฐ๊ณผ๋ก ์ ๋ ฌํ๋ค๊ฑฐ๋ ๊ฒ์ํ๋ ์์ ์ B-Tree์ ์ฅ์ ์ ์ด์ฉํ ์ ์์ผ๋ฏ๋ก ์ฃผ์ํด์ผ ํ๋ค.
๐ 4. B-Tree ์ธ๋ฑ์ค ์ฌ์ฉ์ ์ํฅ์ ๋ฏธ์น๋ ์์
๐งฐ 1. ์ธ๋ฑ์ค ํค ๊ฐ์ ํฌ๊ธฐ
InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ๋์คํฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ ๋จ์๋ฅผ ํ์ด์ง(Page) ๋๋ ๋ธ๋ก(Block)์ด๋ผ๊ณ ํ๋ฉฐ, ๋์คํฌ์ ๋ชจ๋ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์์ ์ ์ต์ ์์ ๋จ์๊ฐ ๋๋ค.
๋ํ ํ์ด์ง๋ InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ๋ฒํผ ํ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฒํผ๋ง ํ๋ ๊ธฐ๋ณธ ๋จ์์ด๊ธฐ๋ ํ๋ค. ์ธ๋ฑ์ค๋ ๊ฒฐ๊ตญ์ ํ์ด์ง ๋จ์๋ก ๊ด๋ฆฌ๋๋ฉฐ, '๋ฃจํธ ๋ ธ๋, ๋ธ๋์น ๋ ธ๋, ๋ฆฌํ ๋ ธ๋'๋ฅผ ๊ตฌ๋ถํ ๊ธฐ์ค์ด ๋ฐ๋ก ํ์ด์ง ๋จ์๋ค.
B-Tree์ ์์ ๋ ธ๋ ๊ฐ์๋ ์ธ๋ฑ์ค์ ํ์ด์ง ํฌ๊ธฐ์ ํค ๊ฐ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ค. InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ํ์ด์ง ํฌ๊ธฐ์ ๊ฐ์ ์กฐ์ ํ ์ ์์ง๋ง ๊ธฐ๋ณธ๊ฐ์ 16KB์ด๋ค.
ํ์ด์ง ํฌ๊ธฐ์ ๊ธฐ๋ณธ๊ฐ(16KB), ์ธ๋ฑ์ค์ ํค(16๋ฐ์ดํธ), ์์ ๋ ธ๋ ์ฃผ์ ์์ญ(12๋ฐ์ดํธ)์ด ์๋ค๊ณ ํ์. ๊ทธ๋ฌ๋ฉด ํ๋์ ์ธ๋ฑ์ค ํ์ด์ง์๋ 585๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง ์ ์๋ค.
( ํ๋์ ์ธ๋ฑ์ค ํ์ด์ง / {(์ธ๋ฑ์ค ํค) + (์์ ๋ ธ๋ ์ฃผ์ ์์ญ)} = 585 )
(16 x 1024 / (16 + 12) = 585)
ํค ๊ฐ์ ํฌ๊ธฐ๊ฐ ์ปค์ง๊ฒ ๋๋ฉด ๋น์ฐํ ํ๋์ ์ธ๋ฑ์ค ํ์ด์ง์ ์ ์ฅํ ์ ์๋ ์์ ๋ ธ๋์ ๊ฐ์๊ฐ ์ค์ด๋ ๋ค. ๊ฒฐ๊ตญ ์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ฑํ๋ ํค ๊ฐ์ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ฉด ๋์คํฌ๋ก๋ถํฐ ์ฝ์ดํ ํ๋ ํ์๊ฐ ๋์ด๋๊ณ , ๊ทธ๋งํผ ๋๋ ค์ง๊ฒ ๋๋ค.
๋ํ, ์ธ๋ฑ์ค์ ํค ๊ฐ์ ๊ธธ์ด๊ฐ ๊ธธ์ด์ง๋ค๋ ๊ฒ์ ์ ์ฒด์ ์ธ ์ธ๋ฑ์ค์ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ธ๋ฑ์ค๋ฅผ ์บ์ํด ๋๋ InnoDB์ ๋ฒํผ ํ์ด๋ MyISAM์ ํค ์บ์ ์์ญ์ ํฌ๊ธฐ๊ฐ ์ ํ์ ์ด๊ธฐ ๋๋ฌธ์, ์ธ๋ฑ์ค์ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ฉด ๋ฉ๋ชจ๋ฆฌ์ ์บ์ ํด๋ ์ ์๋ ๋ ์ฝ๋ ์๊ฐ ์ค์ด๋ค๊ณ , ๊ทธ๋ ๊ฒ ๋๋ฉด ์์ฐํ ๋ฉ๋ชจ๋ฆฌ์ ํจ์จ์ด ๋จ์ด์ง๊ฒ ๋๋ค.
๐งฐ 2. B-Tree์ ๊น์ด
B-Tree ์ธ๋ฑ์ค์ ๊น์ด(Depth)๋ ์๋นํ ์ค์ํ์ง๋ง ์ง์ ์ ์ดํ ๋ฐฉ๋ฒ์ ์๋ค. ์ธ๋ฑ์ค์ ํค ๊ฐ์ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ฉด ํ๋์ ์ธ๋ฑ์ค ํ์ด์ง๊ฐ ๋ด์ ์ ์๋ ์ธ๋ฑ์ค ํค ๊ฐ์ ๊ฐ์๊ฐ ์ ์ด์ง๋ค. ๊ทธ๋์ ๊ฐ์ ๋ ์ฝ๋ ๊ฑด์๋ผ ํ๋๋ผ๋ B-Tree์ ๊น์ด๊ฐ ๊น์ด์ ธ์ ๋์คํฌ ์ฝ๊ธฐ๊ฐ ๋ ๋ง์ด ํ์ํ๊ฒ ๋๋ค.
(ํ๋์ ํ์ด์ง์ 585๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง ์ ์๋ ๊ฒฝ์ฐ, B-Tree์ ๊น์ด๊ฐ 3์ด๋ฉด '585 x 585 x 585 = ์ต๋ 2์ต'๊ฐ์ ํค ๊ฐ์ ๊ฐ์ง ์ ์๋ค.
๋ฐ๋ฉด์, ํ๋์ ํ์ด์ง์ 372๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง ์ ์๋ ๊ฒฝ์ฐ, B-Tree์ ๊น์ด๊ฐ 3์ด๋ฉด '372 x 372 x 372 = ์ต๋ 5์ฒ'๊ฐ์ ํค ๊ฐ๋ง ๊ฐ์ง ์ ์๋ค.)
๐งฐ 3. ์ ํ๋(๊ธฐ์์ฑ)
์ธ๋ฑ์ค์์ ์ ํ๋(Selectivity) ๋๋ ๊ธฐ์์ฑ(Cardinality)์ ๊ฑฐ์ ๊ฐ์ ์๋ฏธ๋ก ์ฌ์ฉ๋๋ฉฐ, ๋ชจ๋ ์ธ๋ฑ์ค ํค ๊ฐ ๊ฐ์ด๋ฐ ์ ๋ํฌํ ๊ฐ์ ์๋ฅผ ์๋ฏธํ๋ค. ์ ์ฒด ์ธ๋ฑ์ค ํค ๊ฐ์ 100์ธ๋ฐ, ๊ทธ์ค์์ ์ ๋ํฌํ ๊ฐ์ ์๊ฐ 10๊ฐ๋ผ๋ฉด ๊ธฐ์์ฑ์ 10์ด๋ค.
์ธ๋ฑ์ค ํค ๊ฐ ๊ฐ์ด๋ฐ ์ค๋ณต๋ ๊ฐ์ด ๋ง์์ง๋ฉด ๋ง์์ง์๋ก ๊ธฐ์์ฑ์ ๋ฎ์์ง๊ณ ๋์์ ์ ํ๋ ๋ํ ๋จ์ด์ง๋ค. ์ธ๋ฑ์ค๋ ์ ํ๋๊ฐ ๋์์๋ก ๊ฒ์ ๋์์ด ์ค์ด๋ค๊ธฐ ๋๋ฌธ์ ๊ทธ๋งํผ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ๋๋ค.
๐งฐ 4. ์ฝ์ด์ผ ํ๋ ๋ ์ฝ๋์ ๊ฑด์
์ธ๋ฑ์ค๋ฅผ ํตํด ํ ์ด๋ธ์ ๋ ์ฝ๋๋ฅผ ์ฝ๋ ๊ฒ์ ์ธ๋ฑ์ค๋ฅผ ๊ฑฐ์น์ง ์๊ณ ๋ฐ๋ก ํ ์ด๋ธ์ ๋ ์ฝ๋๋ฅผ ์ฝ๋ ๊ฒ๋ณด๋ค ๋์ ๋น์ฉ์ด ๋๋ ์์ ์ด๋ค. ์ผ๋ฐ์ ์ธ DBMS์ ์ตํฐ๋ง์ด์ ์์๋ ์ธ๋ฑ์ค๋ฅผ ํตํด ๋ ์ฝ๋ 1๊ฑด์ ์ฝ๋ ๊ฒ์ด ํ ์ด๋ธ์์ ์ง์ ๋ ์ฝ๋ 1๊ฑด์ ์ฝ๋ ๊ฒ๋ณด๋ค 4~5๋ฐฐ ์ ๋ ๋น์ฉ์ด ๋ ๋ง์ด ๋๋ ์์ ์ธ ๊ฒ์ผ๋ก ์์ธกํ๋ค.
๊ทธ๋์ ์ธ๋ฑ์ค๋ฅผ ํตํด ์ฝ์ด์ผ ํ ๋ ์ฝ๋์ ๊ฑด์๊ฐ ์ ์ฒด ํ ์ด๋ธ ๋ ์ฝ๋์ 20~25%๋ฅผ ๋์ด์๋ฉด ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํ์ง ์๊ณ ํ ์ด๋ธ์ ๋ชจ๋ ์ง์ ์ฝ์ด์ ํ์ํ ๋ ์ฝ๋๋ง ๊ฐ๋ ค๋ด๋(ํํฐ๋ง) ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ด ํจ์จ์ ์ด๋ค.
ํด๋น ๊ธ์ ๋ฐฑ์๋น, ์ด์ฑ์ฑ ๋์ 'Real MySQL 8.0'์ ์ฐธ๊ณ ํ์์ต๋๋ค.
'๐ ๋ฐ์ดํฐ๋ฒ ์ด์ค > ๊ฐ๋ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
MySQL์ ์ ์ฒด ๊ตฌ์กฐ & ์ฟผ๋ฆฌ ์คํ ๊ตฌ์กฐ (0) | 2023.06.18 |
---|---|
ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ ์์ค (Transaction Isolation Level) (1) | 2023.06.18 |
ํธ๋์ญ์ (Transaction) (0) | 2023.06.17 |
[DB] ๋ฐ์ดํฐ๋ฒ ์ด์ค ํค(Key) ๊ฐ๋ & ํค(Key) ์ข ๋ฅ (0) | 2023.06.13 |
์๋ธ์ฟผ๋ฆฌ(Subquery) (0) | 2023.04.18 |