DB์ ์ฑ๋ฅ
DB๋ ๋ง์ ์ฌ๋๋ค์ด ๊ณตํต์ผ๋ก ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ๋ชจ์์ด๊ธฐ ๋๋ฌธ์, ๋๋์ ๋ฐ์ดํฐ๊ฐ ์กฐํ/์ ์ฅ๋๋ ์ผ์ด ๋น๋ฒํ๊ฒ ๋ฐ์ํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ๋น ๋ฅด๊ฒ ์งํํ๋ ๊ฒ์ด ๋ฌด์๋ณด๋ค ์ค์ํ๋ค. ์ด๋ DB์ ์ฑ๋ฅ๊ณผ ๊ด๋ จ๋ ํต์ฌ์ด ๋์คํฌ I/O๋ฅผ ์ด๋ป๊ฒ ์ค์ด๋๋์ด๋ค.
๋์คํฌ I/O = ํ๋ํฐ(์ํ)์ ๋๋ฆฌ๊ณ , ๋์คํฌ ํค๋๋ฅผ ์ด๋ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๊ฒ์ ์๋ฏธํ๋ค.
๋ฌผ๋ก ์์ฐจ I/O๊ฐ ๋๋ค I/O๋ณด๋ค ๋น ๋ฅด๋ค. ํ์ง๋ง ํ์ค์ ๋๋ถ๋ถ ๋๋ค I/O์ด๋ฉฐ, ์ด๋ฅผ ์์ฐจ๋ก ๋ฐ๊พธ์ด ๋ณด์๋ ์์ด๋์ด์์ Index์ ์ฟผ๋ฆฌ ํ๋์ด ๋ํ๋ฌ๋ค.

Index๋?
Index๋ ์ถ๊ฐ์ ์ธ ์ ์ฅ ๊ณต๊ฐ์ ํ์ฉํ์ฌ DB ํ ์ด๋ธ์ ๊ฒ์ ์๋๋ฅผ ํฅ์์ํค๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
๋ง์ฝ DB ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํด์ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆด ๊ฒ์ด๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ์นผ๋ผ ๊ฐ๊ณผ ํด๋น ๋ ์ฝ๋์ ์ฃผ์๋ฅผ ๊ฐ์ง ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค์ด ๋ฐ์ดํฐ ํ์์ ๋น ๋ฅด๊ฒ ํ๋ ๊ฒ์ด๋ค.

์ด๋ ์กฐํ(Select)์ธ ์๋ ์กฐ๊ฑด๋ฌธ์ด ์๋ Update๋ Delete์ ์ฑ๋ฅ์๋ ์ํฅ์ ์ค๋ค.
// Mang์ด๋ผ๋ ์ด๋ฆ์ ์
๋ฐ์ดํธ ํด์ฃผ๊ธฐ ์ํด์๋ Mang์ ์กฐํํด์ผ ํ๋ค.
UPDATE USER SET NAME = 'MangKyu' WHERE NAME = 'Mang';
Index๋ ๋น ๋ฅธ ํ์์ ์ง์ํ๊ธฐ ์ํด ํญ์ ์ ๋ ฌ๋ ์ํ๋ฅผ ์ ์งํ๋ค. ๋ฐ๋ผ์ INSERT, UPDATE, DELETE์์ ์ถ๊ฐ์ ์ธ ์ฐ์ฐ์ด ํ์ํ๋ค.
์ด๋ฅผ ๊ฐ๋จํ ์ ๋ฆฌํ์๋ฉด ์๋์ ๊ฐ๋ค.
๐ ์ฅ์
- ํ ์ด๋ธ์ ์กฐํํ๋ ์๋์ ์ฑ๋ฅ ํฅ์
- ์์คํ ๋ถํ๋ฅผ ์ค์
๐ซ ๋จ์
- ์ธ๋ฑ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ถ๊ฐ ์ ์ฅ ๊ณต๊ฐ ํ์
- ์ธ๋ฑ์ค๋ฅผ ํญ์ ์ ๋ ฌ๋ ์ํ๋ก ์ ์งํ๊ธฐ์ ์ถ๊ฐ ์์ ์ด ํ์
- ์ธ๋ฑ์ค๋ฅผ ์๋ชป ์ฌ์ฉํ ๊ฒฝ์ฐ ์ญํจ๊ณผ๊ฐ ๋ ์ ์์
๐ค Index ๊ถ์ฅ ์ผ์ด์ค
- ๋ฐ์ดํฐ ์์ด ๋ง์ ํ ์ด๋ธ
- ์ ๋ฐ์ดํธ๋ณด๋ค ์กฐํ๊ฐ ์ฆ์ ํ ์ด๋ธ
- ์กฐ๊ฑด๋ฌธ์ด๋ ์ ๋ ฌ์ด ์ฆ์ ํ ์ด๋ธ
Index ์๋ฃ๊ตฌ์กฐ
1. Hash ์ธ๋ฑ์ค ์๊ณ ๋ฆฌ์ฆ | O(1)
ํด์ ๊ฐ์ ๊ณ์ฐํด์ ์ธ๋ฑ์ฑํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋งค์ฐ ๋น ๋ฅธ ๊ฒ์(O(1))์ ์ง์ํ๋ค.
์ด๋ ๋ฑํธ ์ฐ์ฐ(=)์๋ ์ ์ ํ๋, ๊ฐ์ ๋ณํํด์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ถ๋ฑํธ ์ฐ์ฐ(>, <), ๊ฐ์ ์ผ๋ถ๋ฅผ ๊ฒ์(like ‘A*’)์ ๋ถ์ ์ ํ๋ค.

2. B+-Tree ์ธ๋ฑ์ค ์๊ณ ๋ฆฌ์ฆ | O(logN)
์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ธ๋ฑ์ค ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๊ฐ์ ๋ณํํ์ง ์๊ณ , ์๋ ๊ฐ์ ์ด์ฉํ๋ค.
๐ B-Tree
Binary Search Tree์ ์ ์ฌํ๋ค. ๋ค๋ฅธ ์ ์ ์์ ๋ ธ๋๋ฅผ 2๊ฐ ์ด์ ๊ฐ์ง ์ ์๊ณ , ๊ท ํํธ๋ฆฌ๋ค. ๋ฐ๋ผ์ ๋น๊ท ํ ํธ๋ฆฌ๊ฐ ๋ ๋ ๊ท ํ์ ๋ง์ถ ํ์๊ฐ ์๊ณ , ์ถ๊ฐ์ ์ธ ์ฐ์ฐ์ด ํ์ํ๋ค.
์ด๋ Root Node / Branch Node / Leaf Node๋ก ๋๋๋ค.

๐ B+ Tree
B-Tree์ ํ์ฅ ๊ฐ๋ ์ด๋ค. ์ค์ง ๋ฆฌํ ๋ ธ๋๋ง ์ธ๋ฑ์ค-๊ฐ์ ๊ฐ์ง๊ณ ์๊ณ , Linked List๋ก ์ฐ๊ฒฐ๋์ด ์๋ค.
์ด๋ ํ ๋ ธ๋์ ๋ง์ key๋ฅผ ๋ด์ ์ ์์ด ํธ๋ฆฌ์ ๋์ด๊ฐ ๋ฎ์์ง๋ค.

์ฐธ๊ณ
https://zorba91.tistory.com/293
https://mangkyu.tistory.com/96
'Engineering ๐ป > CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [PostgreSQL] Python์์ ๋ค์ค ํ์ Insertํ๋ ๋ค์ํ ๋ฐฉ๋ฒ๊ณผ ๋น๊ต (0) | 2022.02.10 |
|---|---|
| [DB] SQL๊ณผ NoSQL (0) | 2022.02.02 |
| [CS] ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ (0) | 2022.01.16 |
| [DB] ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ์ด (0) | 2022.01.10 |