๐
๋๋ค I/O์ ์์ฐจ I/O
๋ ์ ์ฅ ์ฅ์น์ ๊ด์ ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ๋ถ์ฐ์์ ์ผ๋ก ์์ด ๋์คํฌ ํค๋๋ฅผ ์ด๋ ์ํค๊ณ ๋ค์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด ์ค๋ ๊ฒ์ ๋๋ค I/O๋ผ๊ณ ํ๊ณ , ๋ฐ์ดํฐ๊ฐ ์ฐ์์ ์ผ๋ก ์์ด ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ์ฝ๊ธฐ๋ง ํ๋ ๊ฒฝ์ฐ๋ฅผ ์์ฐจ I/O๋ผ๊ณ ํฉ๋๋ค. ๋ I/O๋ฅผ ๋น๊ตํ์ ๋ ์์ฐจ I/O๊ฐ ์๋๊ฐ ๋ ๋นจ๋ผ ์ด์์ ์ผ๋ก๋ ๋๋ค I/O๋ฅผ ์์ฐจ I/O๋ก ๋ฐ๊พธ๋ ๋ฐฉ์์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ํ๋ํด์ผ ํ์ง๋ง ๊ทธ๋ฌํ ๋ฐฉ๋ฒ์ด ๋ง์ง ์๊ธฐ ๋๋ฌธ์ ์ฟผ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ ๊ผญ ํ์ํ ๋ฐ์ดํฐ๋ง ์ฝ๋๋ก ์ฟผ๋ฆฌ๋ฅผ ๊ฐ์ ํ๋ ๊ฒ์ ๋ชฉํ๋กํ๊ณ ๊ทธ๊ฒ์ด ๋ํ ๋๋ค I/O๋ฅผ ์ค์ด๋ ๊ฒ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.
๐ The way to convert Random to Sequential I/O
๐ ์ถ๊ฐ ์ค๋ช
1. ๋ง์ฝ์ ๋์ฉ๋์ ๋ฐ์ดํฐ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ํ ๊ฒฝ์ฐ ์์ฐจ I/O๊ฐ ๋น ๋ฅด๊ธดํ์ง๋ง ๋๊ธฐํ๋ฅผ ์ฌ๋ฌ๋ฒ ํด์ผํ๋ ์ํฉ์ด ์จ๋ค๋ฉด ์ด ๋ํ ๋นํจ์จ์ ์ผ๋ก ์ด๋ค ์ง ์ ์๋๋ฐ ์ด๋ RAID ์ปจํธ๋กค๋ฌ์์บ์ ๋ฉ๋ชจ๋ฆฌ
๋ฅผ ์ด์ฉํ์ฌ ๋๊ธฐํ ์์ ์ ์ค์ฌ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๊ฒ ๋ง๋ญ๋๋ค.
ํ์ฌ ์ธ์์๋ ๋ค์ํ ์ข
๋ฅ์ ๋๋ผ์ด๋ธ๊ฐ ๋ฐ๋ช
์ด ๋๊ณ , ์๋๋ ์ ์ ํฅ์๋๊ณ ์์ง๋ง ์ฌ์ ํ ์ปดํจํฐ์์ ๊ฐ์ฅ ๋๋ฆฐ ๋ถ๋ถ์ด๋ผ๋ ์ฌ์ค์๋ ๋ณํจ์ด ์๋ค. ์ด๋ฌํ ์๋๊ฐ ๋๋ฆฐ ์ฅ์น๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด ๋์คํฌ I/O
๋ฅผ ์ด๋ป๊ฒ ์ค์ด๋๋๊ฐ ๊ด๊ฑด ์ผ ๋๊ฐ ๋ง๋ค.
๐ก ์งง๊ฒ ๋งํ ์ ์๋ SSD์ HDD์ ์ฐจ์ด
HDD๋ ๋ฐ์ดํฐ ์ ์ฅ์ฉ ํ๋ ํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง, SSD๋ ์ด๋ฅผ ์ ๊ฑฐํ๊ณ ํ๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฅ์ฐฉํ๊ณ ์๋ค.(ํ๋์ฌ ๋ฉ๋ชจ๋ฆฌ๋ ์ ์์ด ๊ณต๊ธ๋์ง ์์๋ ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋์ง ์๋๋ค.) ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ํ๋์ฌ ๋ฉ๋ชจ๋ฆฌ๋ D-RAM๋ณด๋ค๋ ๋๋ฆฌ์ง๋ง, HDD๋ณด๋ค๋ ํจ์ฌ ๋น ๋ฅธ ์๋๋ฅผ ๋ณด์ธ๋ค. ๊ทธ๋์ DBMS์ฉ์ผ๋ก SSD๋ฅผ ๋ง์ด ์ฑํํ๊ณ ์๋ค.
SEQUENTAIL I/O
๋ํ ๊ฐ๋ค. ๊ทธ๋ผ์๋ ์ด ๋์ ๋ถ๋ฅํ๋ ๊ธฐ์ค์ ๋์คํฌ ํค๋์ ์์น์ ์ด๋ ์์ด ์ผ๋ง๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ๊ธฐ๋กํ๋๋
์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ค. DBMS์ ์ด๋ฌํ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๋ ์์
์ MySQL ์๋ฒ์๋ ๊ทธ๋ฃน ์ปค๋ฐ์ด๋ ๋ฐ์ด๋๋ฆฌ ๊ณ ๋ฅด ๋ฒํผ ๋๋ InnoDB ๋ก๊ทธ ๋ฒํผ ๋ฑ์ ๊ธฐ๋ฅ์ด ๋ด์ฅ๋ผ ์๋ค.๐ InnoDB ๋ก๊ทธ ๋ฒํผ๋?
MySQL์์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์ ์ค์ ๋ฐ์ํ๋ ํธ๋์ญ์ ๋ก๊ทธ๋ฅผ ์ผ์์ ์ผ๋ก ์ ์ฅํ๋ ๊ณต๊ฐ์ด๋ค. ์ด ๋ก๊ทธ๋ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์์ ์ด ๋ฐ์ํ ๋๋ง๋ค ๊ธฐ๋ก๋๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ผ๊ด์ฑ๊ณผ ๋ด๊ตฌ์ฑ์ ๋ณด์ฅํ๋๋ฐ ์ค์ํ ์ญํ ์ ํ๋ค.
1. ํธ๋์ญ์ ๋ก๊ทธ ๊ธฐ๋ก (INSERT , UPDATE, DELETE)
2. ์ฌ์คํ ๋ฐ ๋กค๋ฐฑ ์ง์ : ํธ๋์ญ์ ๋์ค์ ์์คํ ์ด ์ค๋จ๋๋ ๊ฒฝ์ฐ ๋ฒํผ์ ์ ์ฅ๋ ํธ๋์ญ์ ์ ๋ก๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ DB๋ฅผ ๋ณต๊ตฌ ํ ์ ์๋ค.
3. ์ฐ๊ธฐ ์ฑ๋ฅ ํฅ์ : InnoDB ๋ก๊ทธ ๋ฒํผ๋ ๋ฉ๋ชจ๋ฆฌ์ ์์นํ๋ฏ๋ก ๋์คํฌ I/O๋ฅผ ์ค์ผ ์ ์๋ค. ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋ก๊ทธ ๋ฒํผ์ ๊ธฐ๋ก๋๊ณ ๋์ค์ ์ค์ ๋ฐ์์ด ๋๊ธฐ์ ํจ์จ์ ์ธ ์ฐ๊ธฐ ์์ ์ด ๊ฐ๋ฅํ๋ค.
4. InnoDB ๋ก๊ทธ ๋ฒํผ๋ฅผ ํตํ์ฌ ์ฑ๋ฅ ํ๋์ ํ ์ ์์ผ๋, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ ์ ํ๊ฒ ์กฐ์ ํ๋ฉฐ ์ฌ์ฉ์ ํด์ผํ๋ค.
์ ์ฌ์ง์์ ํ์ธ์ ํด๋ณด๋ฉด ์์ฐจ I/O๋ ๋๋ค I/O ๋ณด๋ค 3๋ฐฐ๋ ๋น ๋ฅธ ์์ ์ ํ๋ค๊ณ ๋ณผ ์ ์๋ค. ๊ทธ๋์ ์ฌ๋ฌ ๋ฒ ์ฐ๊ธฐ ๋๋ ์ฝ๊ธฐ ์์ฒญ์ ํ๋ ๋๋ค I/O๊ฐ ํจ์ฌ ๋ถํ๊ฐ ํฌ๋ค. ์ด๋ฌํ ์ ์์ ๋ณผ ๋ SSD์์๋ ์ ์ฉ์ด ์๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ ์ ์์ง๋ง ์ ํ ์๋๋ค.
๐ก SSD์์์ Sequential & Random I/O๋
Random I/O
๋Sequential I/O
์ ์ค๋ฃจํ(ํต์ ์์ ๋คํธ์ํฌ ์์ ์ด๋ค ๋ ธ๋๋ ํฐ๋ฏธ๋๋ก๋ถํฐ ๋ ๋ค๋ฅธ ํฐ๋ฏธ๋๋ก ์ ๋ฌ๋๋ ๋จ์ ์๊ฐ๋น ๋์งํธ ๋ฐ์ดํฐ ์ ์ก์ผ๋ก ์ฒ๋ฆฌํ๋ ์, ์ ์ฒด ์ฒ๋ฆฌ์จ)์ด ๋จ์ด์ง๋ค. ๊ทธ๋์ SSD์์๋ ๋์ ์ฑ๋ฅ ๋น๊ต๋ฅผ ๊ตฌ๋ถํด์ ๋ช ์ํ๋ค.
๐
INDEX
๋ ์ฑ ์ ์ฐพ์๋ณด๊ธฐ("์์ธ")์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ Spread Sheet์ ๋ ์ฝ๋์ ์ฃผ์์ ๋น์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ , ์ธ๋ฑ์ค๋ ๋น ๋ฅธ ์กฐํ๋ฅผ ์ํด์ ํญ์ ์ ๋ ฌ๋์ด ์๋ค๋ ํน์ง์ ์ํด DBMS์์ ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ์ ์ ์ฅ ์ฑ๋ฅ์ ํฌ์ํ๊ณ ๋์ ๋ฐ์ดํฐ์ ์ฝ๊ธฐ ์๋๋ฅผ ๋์ด๋ ๊ธฐ๋ฅ์ ํ๊ณ ์์ต๋๋ค. โก๏ธ DB์์ ํ ์ด๋ธ์ ๋ํ ๊ฒ์ ์๋๋ฅผ ํฅ์ ์์ผ์ฃผ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ์ด๋ฌํ ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ธฐ๋ณธํค๋ฅผ ์ฐพ๊ณ ๊ทธ ๊ธฐ๋ณธ ํค๋ฅผ ์ด์ฉํ์ฌ ํด๋น ๋ ์ฝ๋๋ฅผ ์ฐพ์ ์ ์๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค๊ฐ ํ์ํฉ๋๋ค.
์ด๋ ๊ฒ ๋ชจ๋ ๊ฒ์ ์ ์ฅํ์ง ์๊ณ
SELECT
/WHERE
์กฐ๊ฑด์ ์ ์ฌ์ฉํ์ฌ ์ํ๋ Column์ ๋ํ์ฌ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ค๊ณ ํ์ฌ๋ ํฐ ํ์ ์ ํ๊ณ ์์ฑํ์ง ์์ผ๋ฉด ๋ฐ์ดํฐ ์ ์ฅ ์ฑ๋ฅ์ด ๋จ์ด์ง๊ณ ํฌ๊ธฐ๊ฐ ๋น๋ํด์ ธ ์ญํจ๊ณผ๊ฐ ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ C,R,U,D๊ฐ ์ฆ์ ์ปฌ๋ผ์ ๋ํด์๋ ์ธ๋ฑ์ค ๋ํ ์์ ๋์ด์ผ ํ๊ณ ์ธ๋ฑ์ค๋ ์ ๊ฑฐ๋๋ ๊ฒ์ด ์๋ ๋นํ์ฑํ ์ํ๋ก ๋จ๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค๊ฐ ๊ณผ๋ํ๊ฒ ์ปค์ง ์ํ์ด ์์ต๋๋ค. ๊ทธ๋์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ์๋๋ฅผ ๋์ด๊ธฐ ์ํด์ ์๊ณ ๋ฆฌ์ฆ๊ณผ ์ค๋ณต ๊ฐ์ ํ์ฉ ์ฌ๋ถ ๋ฑ์ ๋ฐ๋ผ ์ฌ์ฉ์๊ฐ ์์๋ก ์ฌ๋ฌ ๋ถ๋ฅ๋ก ๋๋ ๊ฒ์ ๋๋ค. ์ด๋ ๊ฒ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒฝ์ฐ ๋ํ์ ์ผ๋กB-Tree Index
,Hash Index
,Fractal-Tree Index
,Merge-Tree Index
๋ฅผ ๋ ์ ์์ต๋๋ค.
๐ Index ์์ฑ ๋ฐฉ๋ฒ
CREATE INDEX idx_age ON users(age);
์์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ ๋ ฌ์ด ๋์ด์๋ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๊ณ ์ ์ ์๋ ์ธ๋ฑ์ค์ ํน์ง์, SELECT-FROM-WHERE
์ ์ค WHERE
์ ์์ ์ฌ์ฉํ ์ปฌ๋ผ์ ๋ํ ํจ์จํ๋ผ๊ณ ํ ์ ์์ต๋๋ค. ์ฆ, WHERE์ ์ ์ฌ์ฉํ์ง ์๊ณ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง ์ปฌ๋ผ์ ์กฐํํ๋ ๊ฒ์ ์ฑ๋ฅ ํฅ์์ ์๋ฌด๋ฐ ์ํฅ์ ์ฃผ์ง ๋ชปํ๋ค๋ ์๋ฏธ์
๋๋ค.
WHERE
์ ์ ์ธ๋ฑ์ค๊ฐ ์๋ ์นผ๋ผ์ ์กฐํ๋ฅผ ํ์ฌ ํจ์จ์ฑ์ ๊ทน๋ํํ๋ ค๊ณ ํด๋ ์ธ๋ฑ์ค๋ ๋จ์ผ ์ธ๋ฑ์ค๋ง์ด ์๋ ์ฌ๋ฌ๊ฐ์ ์ปฌ๋ผ์ ๋ฌถ์ด์ ๋ณตํฉ ์ธ๋ฑ์ค๋ฅผ ํ์ฑํ๋ ๊ฒฝ์ฐ๋ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ ์ข์ ์ฌ์ฉ ์์์ ๋ง๊ฒ ์ธ๋ฑ์ค๋ฅผ ์ค์ ํ๋ ๊ฒ์ด ์ค์ํ๋ค! ๊ทธ๋ ์ง ์์ผ๋ฉด DML(๋ฐ์ดํฐ ์กฐ์์ด, SELECT
,INSERT
, DELETE
, UPDATE
)์ ํจ์จ์ฑ์ ์คํ๋ ค ์ ํ์ํค๋ ์์ธ์ด ๋ ์ ์๋ค.
๐ More comphrehension on Index
์ธ๋ฑ์ค๋ฅผ ๋ ์์ธํ๊ฒ ์๋ ค๋ฉด, Hash ํ ์ด๋ธ๊ณผ B+ ํ ์ด๋ธ์ ๋ํด์ ์์์ผ ํฉ๋๋ค.
ํ์ด์ง๋ ๋์คํฌ์ ๋ฉ๋ชจ๋ฆฌ(๋ฒํผํ)์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๋ ์ต์ ์์
๋จ์
์ด๋ค. ์ธ๋ฑ์ค๋ฅผ ํฌํจํด ๊ธฐ๋ณธํค(ํด๋ฌ์คํฐ ์ธ๋ฑ์ค)์ ํ
์ด๋ธ ๋ฑ์ ๋ชจ๋ ํ์ด์ง ๋จ์๋ก ๊ด๋ฆฌ ๋ฉ๋๋ค. ์ฆ, ๋ฐ์ดํฐ๋ฅผ ๋
ผ๋ฆฌ์ ์ผ๋ก ํน์ ๋ฌผ๋ฆฌ์ ์ ๊ตฌ์ฑํ๋ ์ต์ ์์
๋จ์๋ผ๊ณ ์ดํดํ ์ ์๋ค.
๐ก Clustered-indexing
ํด๋ฌ์คํฐ ์ธ๋ฑ์ค๋ ์ธ๋ฑ์ฑ์ ๊ธฐ๋ณธ ํ์ ์ ํ ์ด๋ธ์ ๊ฒฐ์ ์์ ๊ธฐ๋ณธํค์ ์ํด์ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋๋ ์ธ๋ฑ์ฑ ํ์ ์ ๋๋ค.
Key์ Value๋ฅผ ํ ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ์ธ๋ฑ์ค ๊ฐ์ด ๋ฐ์ดํฐ ๊ฐ์ ๋ํ ํค๋ก ๋์ํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๋น ๋ฅธ ๋ฐ์ดํฐ ์ฝ๊ธฐ๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ์ฆ, ํด์ ํ
์ด๋ธ์ Key-Value ์์ ์ ์ฅํ์ง๋ง Key๋ ํด์ฑ ํจ์๋ฅผ ํตํด ์์ฑ๋ฉ๋๋ค.(์ค๋ณต์ด ์์ด ์์ฑํ์ฌใ
ก ๊ฐ ํค๋ฅผ ๊ณ ์ ํ ํด์ ๊ฐ์ผ๋ก ๋งคํํ์ฌ ๋น ๋ฅด๊ฒ ์ฐพ๊ธฐ ์ํจ์ด๋ค.)
ํด์ฑ์ ๊ฐ๋
์ ๋ฒํท ๋ฐฐ์ด์ ํค-๊ฐ์ ์์ ๋ฐฐํฌํ๋ ๊ฒ์
๋๋ค. ํด์ ํ
์ด๋ธ์ ์๊ฐ ๋ณต์ก๋๋ O(1)์ด๋ฉฐ ๋งค์ฐ ๋น ๋ฅธ ๊ฒ์์ ์ง์ํฉ๋๋ค. ํ์ง๋ง, ํด์๊ฐ ๋ฑํธ ์ฐ์ฐ(=)์๋ง ํนํ๋์ด ์๊ธฐ ๋๋ฌธ์, DB์์๋ ๋ง์ด ์ฌ์ฉ๋์ง ์์ต๋๋ค.
โ ์ปค๋ฒ๋ง ์ธ๋ฑ์ค & ๋ค์ค ์ปฌ๋ผ ์ธ๋ฑ์ค
์ปค๋ฒ๋ง ์ธ๋ฑ์ค๋ผ๋ ๊ฒ์ ์ฟผ๋ฆฌ๋ฅผ ์ถฉ์กฑ์ํค๋๋ฐ ์์ด ํ์ํ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณ ์๋ ์ธ๋ฑ์ค๋ฅผ ๋งํ๊ณ , ๋ค์ค ์ปฌ๋ผ ์ธ๋ฑ์ค๋
๋ฉด์ ์ ์ํ ๋ต
๐ B-Tree ์ B+Tree๋ ์ธ๋ฑ์ค๋ฅผ ๊ตฌํํ๋ ํธ๋ฆฌ ๊ตฌ์กฐ์ ๋๋ค. B+Tree๋ B-Tree์ ๋ณํ์ผ๋ก, ๋ฆฌํ ๋ ธ๋์๋ง ๊ฐ์ ๋ด์ ๋๊ณ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ์ฐ๊ฒฐ๋์ด ์์ด ๋ฒ์ ๊ฒ์์ด๋ ์ ๋ ฌ๋ ๊ฒฐ๊ณผ ๋ฐํ์ ํจ๊ณผ์ ์ด๋ผ๋ ํน์ง์ด ์์ต๋๋ค.
๐ ๊ณต๋ถํ ๋ด์ฉ
๐ก B-Tree
๋ DB์ ์ธ๋ฑ์ฑ ์๊ณ ๋ฆฌ์ฆ ๊ฐ์ด๋ฐ ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๊ณ , ๊ฐ์ฅ ๋จผ์ ๋์
๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ํ์ง๋ง ์์ง๋ ๊ฐ์ฅ ๋ฒ์ฉ์ ์ธ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ค. B-Tree๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ค์ํ๊ฒ ๋ณํ๋์ด ์ฌ์ฉ๋๋๋ฐ ๊ทธ๋ ๊ฒ InnoDB๋ฅผ ์ด๋ฃจ๋ B+Tree ๋ฑ์ด ํ์ํ๊ฒ ๋์๋.
Root Node
๊ฐ ์๊ณ ๊ทธ ํ์์ ์์ ๋
ธ๋๊ฐ ๋ถ์ด ์์ผ๋ฉฐ ์ตํ์์๋ Leaf Node
๊ฐ ์์์ ์ ์ ์๋ค. ์ค๊ฐ์ node๋ค์ Branch Node
๋ผ๊ณ ๋ถ๋ฅธ๋ค.INSERT
ํ ์์๋๋ก ์ ์ฅ๋๋ ๊ฒ์ด ์๋๋ค. ์ค๊ฐ์ ์ด๋ค ๋ ์ฝ๋๊ฐ ์ญ์ ๋์ด ๊ณต๊ฐ์ด ์๊ธฐ๋ฉด ๊ทธ ๊ณต๊ฐ์ ๊ณ์ ์ฌํ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค.๋
๋ฆฝ์ ์ธ ์ ์ฅ ๊ณต๊ฐ
์ด๋ฏ๋ก ์ธ๋ฑ์ค๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ค๋ฉด ๋จผ์ Primary Key๋ฅผ ์ฐพ์์ผ ํ๋ค. ๊ธฐ๋ณธํค๋ก ๋ ์ฝ๋๋ฅผ ์ฐพ์ ๋๋ ๊ธฐ๋ณธํค๊ฐ ์ด๋ ํ์ด์ง์ ์ ์ฅ ๋์ด ์๋์ง ์ ์ ์์ผ๋ฏ๋ก ๋๋ค I/O๊ฐ ๋ฐ์ํ๊ณ ์ดํ์๋ ๊ธฐ๋ณธํค๋ฅผ ๋ฐ๋ผ ๋ฆฌํ๋
ธ๋์ ์ค์ ๋ ์ฝ๋๋ฅผ ์ฝ์ด์ต๋๋ค. ์ธ๋ฑ์ค ํค ์ถ๊ฐ
๋ด๊ฐ ์
๋ ฅํ ๊ฐ์ด ์ฆ์ ๋ฐ์๋ ์ง ์๋ ์ง๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ B-Tree์ ๊ฐ์ ์ ์ฅํ ๋ B-Tree์ ์์ ์ ์ ํ ์์น๋ฅผ ๊ฒ์ํด์ผ ํ๋ค. ๊ทธํ ์ ์ฅํ ์์น๊ฐ ๊ฒฐ์ ๋๋ฉด B-Tree์ ๋ฆฌํ๋
ธ๋์ ๋ ์ฝ๋์ ํค ๊ฐ๊ณผ ์ฃผ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค. ๋ง์ฝ ์ ์ฅํ๋ค๊ฐ ๋ฆฌํ๋
ธ๋์ ๊ณต๊ฐ์ด ๋ค ์ฐจ๊ฒ ๋๋ฉด ๊ทธ ์์๋
ธ๋๋ก ๋์ด๊ฐ ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํ๋ค. ์ด ๊ณผ์ ์ ์ ์ฅ์ ์๋ฃํ ๋ ๊น์ง ๋ฐ๋ณตํ๋ค.
- ์ด๋ฌํ ์ ๋๋ฌธ์, B-Tree
์์ ์ธ๋ฑ์ค ํค ์ถ๊ฐ๋ ๋น์ฉ์ด ๋ง์ด ๋ ๋ค๊ณ ์๋ ค์ง๋ค.
์ธ๋ฑ์ค ํค ์ญ์
์์ฃผ ๊ฐ๋จํ๊ฒ B-Tree์ ๋ฆฌํ ๋
ธ๋๋ฅผ ์ฐพ์์ ์ญ์ ๋งํฌ๋ง ํ๋ฉด ์์
์ด ์๋ฃ๋๋ค.์์ ํ ์ญ์ ๋๋๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ๊ณ์ ๋ฐฉ์นํ๊ฑฐ๋ ์ฌํ์ฉ ๋ ์ ์๋ค.
์ธ๋ฑ์ค ํค ๋ณ๊ฒฝ
B-Tree์ ํค ๊ฐ์ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ์๋, ์ผ๋จ ํด๋น ํค ๊ฐ์ ์ญ์ ํ ํ, ๋ค์ ์๋ก์ด ํค ๊ฐ์ ์ถ๊ฐํ๋ ํํ๋ก ์ฒ๋ฆฌ๋๋ค. ์ด๋ฌํ ๋ณ๊ฒฝํ๋ ๊ณผ์ ์ค ๋ฐ์ํ๋ ์ถ๊ฐ์ ์ญ์ ๋ ์์ ๊ณผ์ ๊ณผ ๊ฐ๋ค.
์ธ๋ฑ์ค ํค ๊ฒ์
ํธ๋ฆฌํ์
์์
๊ณผ ๋งค์ฐ ์ ์ฌํ๊ฒ ์งํ๋๋ค. ๋ฃจํธ ๋
ธ๋๋ก ๋ถํฐ ์์ํด ๋งค๋ฒ n-way
๊ฒฐ์ ์ ๋ด๋ฆฌ๊ฒ ๋๋ค. ์ฌ๊ธฐ์ n์ ์์ ๋
ธ๋์ ๊ฐ์๋ฅผ ๋งํ๊ณ ์ด์ ๋ฐ๋ผ ์๊ฐ ๋ณต์ก๋๋ O(log n) ์ ์ํ๋๋ค.
๊ฒ์ ์์ ์ฝ๊ธฐ โก๏ธ ๊ฒ์ ์์๋ฅผ ํธ๋ฆฌ์์ ๋ฃจํธ ๋
ธ๋์ ์ฒซ ๋ฒ์งธ ํค ๊ฐ๊ณผ ๋น๊ต โก๏ธ ๋ ๋ค ์ผ์นํ๋ ๊ฒฝ์ฐ ์ฐพ์์์ ํ์ ํ ํจ์ ์ข
๋ฃ โก๏ธ ์ผ์น ํ์ง ์์ ๊ฒฝ์ฐ ๊ฒ์ ์์๋ฅผ ํด๋น ํค ๊ฐ๋๋ค ์๊ฑฐ๋ ํฐ์ง ๋น๊ต ์ฐ์ฐ์๋ฅผ ํตํด ํ์ธ โก๏ธ ํค ๊ฐ์ด ์์ ๊ฒฝ์ฐ ํ์ ํธ๋ฆฌ์์ ๊ฐ์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค. โก๏ธ ๋ง์ฝ ๊ฒ์ ์์๊ฐ ๋ ํฌ๋ฉด ๋์ผํ ๋
ธ๋์ ๋ค์ ํค ๊ฐ๊ณผ ๋น๊ตํ๊ณ ์ ํํ ์ผ์นํ๋ ํญ๋ชฉ์ ์ฐพ๊ฑฐ๋ ๊ฒ์ ์์๊ฐ ๋ง์ง๋ง ํค ๊ฐ๊ณผ ๋น๊ตํ ๋๊น์ง ์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค. โก๏ธ ๋ฆฌํ๋
ธ๋์ ๋ง์ง๋ง์๋ ์ฐพ์ ์ ์์ผ๋ฉด ์ฐพ์ ์ ์์์ ๋ํ ๋ฉ์ธ์ง๋ฅผ ํ์ํ๊ณ ์ข
๋ฃํ๋ค.
โ ํธ๋ฆฌํ์ : Root Node โก๏ธ Branch Node โก๏ธ Leaf Node๋ก ์ด๋ํ๋ฉฐ ๋น๊ต ์์ ์ ์ํํ๋ ๊ฒ
๐ก
B+Tree
๋ B-Tree์ ํ์ฅ ๊ฐ๋ ์ผ๋ก, ๋ธ๋์น ๋ ธ๋์ ํค๊ฐ๋ง ๋ด์๋๊ณ , ๋ฐ์ดํฐ๋ ๋ด์ ๋์ง ์๋๋ค. ์ค์งleaf
๋ ธ๋์๋ง ํค์ ๋ฐธ๋ฅ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๋๋จธ์ง ๋ ธ๋๋ค์ ๋ฐ์ดํฐ๋ฅผ ์ํ ์ธ๋ฑ์ค(Key)๋ง์ ๊ฐ์ง๊ณ , leaf node๋ผ๋ฆฌ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก์ ์ด์ด์ ธ ์๋ค. B-Tree์ ์ฅ์ ์ ํ ๋ ธ๋๋น ์์ ๋ ธ๋๊ฐ 2๊ฐ ์ด์์ด ๊ฐ๋ฅํ๊ธฐ์ ๊ฒ์๋ฉด์์ ๋น ๋ฅด๊ฒ ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์ด ์์๋๋ฐB+Tree๋ ๋ฆฌํ๋ ธ๋๋ฅผ ์ ์ธํ๊ณ ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ํ๋ณดํ์ฌ ๋ ๋ง์ ํค๊ฐ์ ์์ฉํ์ฌ ํธ๋ฆฌ์ ๋์ด๋ฅผ ๋ฎ์ถ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณํ์ค์บ ์์๋ B-Tree๋ณด๋ค ์๋๊ฐ ๋น ๋ฅด๋ค
.
โ ํด๋ฌ์คํฐ๋ง ์ธ๋ฑ์ค์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
๋ฌผ
REFERENCES
1. SEQUENTIAL & RANDOM
2. Real MySQL
3. B-Tree/B+Tree
4.Basic definition of Index