0. ๋ง์ฝ ์ธ๋ฑ์ค๊ฐ ์์๋ค๋ฉด
์ธ๋ฑ์ค ์์ด ํ ์ด๋ธ์ ๋ํ ํ์์ ํ๋ค๊ณ ๊ฐ์ ํด๋ณด์
num์ ๊ฐ์ด 27์ธ ํ์ ์ฐพ๋ ๋ค๊ณ ๊ฐ์ ํ์ ๋ ์ธ๋ฑ์ค๊ฐ ์๋ค๋ฉด , ์ ๋ ฌ ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ์๋ถํฐ ์ฐพ์์ผํ๋ค.
์ด๋ด ๊ฒฝ์ฐ ํ๋์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ธฐ ์ํด์ ์ต์ ์ ๊ฒฝ์ฐ ๋ชจ๋ ๊ฐ์ ํ์ํ๋ ํ ์ค์บ์ ํด์ผํ ์๋์๋ค.
์ด๋ ๋งค์ฐ ๋นํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ด๋ค.
์ธ๋ฑ์ค๊ฐ ์๋ ๊ฒฝ์ฐ ์ด๋ค ํ์์ด ์ผ์ด๋๋ ์ง ์์๋ณด์์ผ๋, ๊ทธ๋ผ ์ด์ ์ธ๋ฑ์ค๊ฐ ์ ์ฉ ๋ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด์
์ฒ์ ์์์์ ์ฐจ์ด์ ์ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋์ด ์๊ณ ๋ฌด์์ ์ฒ์๋ถํฐ ์กฐํํ์ง ์๋๋ค.
์ด ๊ฒฝ์ฐ ์ ๋ ฌ๋ ๋ฐ์ดํฐ๋ค๋ก๋ถํฐ ์ธ๋ฑ์ค๋ฅผ ํตํด ํ์ํ๋ฏ๋ก ํจ์จ์ ์ธ ํ์์ด ๊ฐ๋ฅํด์ง๋ค.
์ด์ ์ฐ๋ฆฌ๋ ์ธ๋ฑ์ค๋ฅผ ํตํด ํจ์จ์ ์ธ ํ์์ด ๊ฐ๋ฅํด์ง๋ค๋ ๊ฒ์ ์์๋ค.
๋ฐ๋ก ์ด ์ธ๋ฑ์ค๊ฐ ์ค๋ ๋ฐฐ์๋ณผ ์ฃผ์ ์ด๋ค.
์ด๋ป๊ฒ ์ธ๋ฑ์ค๋ฅผ ํตํด ํจ์จ์ ์ธ ํ์์ด ๊ฐ๋ฅํ๊ณ , ์ด๋ป๊ฒ ํ๋ฉด ํจ์จ์ ์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ์ ์์ ์ง ์์๋ณด์
1. ์ธ๋ฑ์ค๊ฐ ํ์ํ ์ด์
ํ ์ด๋ธ์ ๊ฒ์ ์ฑ๋ฅ์ ๋์ฌ์ฃผ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
์ธ๋ฑ์ค๋ฅผ ์ฐ๊ฒ ๋๋ฉด ์ถ๊ฐ์ ์ธ ์ฐ๊ธฐ ์์ ๊ณผ ์ ์ฅ ๊ณต๊ฐ์ ํ์ฉํ๋ฏ๋ก ํ์ ์๋๋ฅผ ๋์ผ ์ ์๋ค.
์์๋ฅผ ํฌํจํด์ ์ง๊ธ๊น์ง์ ์ค๋ช ์ผ๋ก ์ธ๋ฑ์ค์ ํน์ง์ ์ ๋ฆฌํด๋ณผ ์ ์๋ค.
- ์ธ๋ฑ์ค์ ๋ฐ์ดํฐ๋ ์ ๋ ฌ๋์ด ์๋ค.
- ์ธ๋ฑ์ค๋ ์ถ๊ฐ์ ์ธ ์ ์ฅ ๊ณต๊ฐ์ ํ์๋ก ํ๋ค.
- ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํด์ ํจ์จ์ ์ธ ํ์์ด ๊ฐ๋ฅํด์ง๋ค.
์ฌ๊ธฐ๊น์ง๋ง ๋ค์ด๋ ์ธ๋ฑ์ค๊ฐ ๋ฌด์์ด๊ณ ์ด๋ค ์ฅ์ ์ด ์๋ ์ง ๋๋ต ํ์ ๋์์ ๊ฒ์ด๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ชฝ์ผ๋ก ์ข ๋ ๋ค์ด๊ฐ์ ๊ตฌ์ฒด์ ์ผ๋ก ์ ํ์ํ ์ง ์์๋ณด์
2. ์ธ๋ฑ์ค์ ๋์ ๋ฐฉ์
mySQL์ ๊ณต์ ๋ฌธ์๋ฅผ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋์์๋ค.
Indexes are used to find rows with specific column values quickly. Without an index, MySQL must begin with the first row and then read through the entire table to find the relevant rows.
ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ์์ฝํ ์ ์๋ค.
- ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ๊ฒ์ํ๊ธฐ ์ํค
- ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ ๋ ฌํ๊ฑฐ๋ ๊ทธ๋ฃนํ ํ๊ธฐ ์ํด
์๋ฅผ ๋ค์ด,
SELECT * FROM team WHERE name = ‘sehan’;
DELETE FROM logs WHERE datetime < ‘2023-06-16’;
UPDATE employee SET salary = salary * 1.5 WHERE id = 100;
SELECT * FROM team T JOIN department D ON [T.id](<http://T.id>) = D.id;
๊ฐ๊ฐ์ ์ฟผ๋ฆฌ์๋ ์กฐ๊ฑด๋ค์ด ํฌํจ๋์ด ์๋ค.
๋ฐ๋ผ์ ํด๋น ์ฟผ๋ฆฌ๋ค์ด ์คํ๋๋ฉด ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ค์ ์ฐพ์์ผํ๋ค.
ํ์ง๋ง ์ด ๊ฒฝ์ฐ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ์ค๊ฐ์ด๋ ๋์ ์๋ค๋ฉด ํ์ค์บ์ ํด์ผํ๋ ์ํฉ์ด ๋๋ค.
์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ์ธ๋ฑ์ค๋ ๋ณ๋์ ์๋ฃ๊ตฌ์กฐ ๋ฐ ์์ ์ ์คํํ์ฌ ํ ์ด๋ธ ํ์ ์ฑ๋ฅ์ ํฅ์์์ผ์ค๋ค.
์ฆ ํ ์ด๋ธ์ ๋ฐ์ดํฐ, ์กฐ๊ฑด๋ค์ ๋น ๋ฅด๊ฒ ์ฐพ๊ธฐ ์ํด ํ์ํ ๊ฒ์ด ์ธ๋ฑ์ค์ด๋ค.
๋ํ ์ธ๋ฑ์ค๋ ์กฐ์ธ์ ํ ๋ ์กฐ์ธ์ ํ๊ธฐ ์ํ ์กฐ๊ฑด์ ๋น ๋ฅด๊ฒ ์ฐพ๊ธฐ ์ํด ์ฌ์ฉ๋๊ธฐ๋ ํ๋ค.
๋ฌด์กฐ๊ฑด Select ์์๋ง ํ์ํ ๊ฒ์ด ์๋ ์กฐ๊ฑด ํ์์ ์ํด์๋ ๋จ์ ๋ฐ์ดํฐ ํ์์ ์ํด์๋ ์ธ๋ฑ์ค๋ ์ฌ์ฉ๋ ์ ์๋ค.
3. ์ธ๋ฑ์ค์ ์ข ๋ฅ
๊ทธ๋ ๋ค๋ฉด ์ธ๋ฑ์ค๋ ์ด๋ป๊ฒ ๋์ํ ๊น?
์ธ๋ฑ์ค์ ์๋ฃ๊ตฌ์กฐ
์ธ๋ฑ์ค๋ฅผ ๊ตฌํํ๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ๋ก๋ ํฌ๊ฒ ๋๊ฐ์ง๊ฐ ์์ง๋ง , ๋ํ์ ์ผ๋ก B-tree ์ B+tree ๊ฐ ์๋ค.
๋ง์ง๋ง์ ์ถ๊ฐ๋ก ํด์์ ๋ํด์๋ ์์๋ณผ ๊ฒ์ด๋ค.
B-tree,B+tree ์์ ‘B’์ ์๋ฏธ๋ ์ ํํ ๋ฐํ์ง ๋ฐ๋ ์์ง๋ง ๊ท ํ์ ๋ง์ถ๋ค๋ ์๋ฏธ์์ Balanced ๋ผ๋ ์๋ฏธ๋ก ํตํ๋ค.
๊ท ํ์ ๋ง์ถค์ผ๋ก์จ ์ข ๋ ๋น ๋ฅธ ์ธ๋ฑ์ฑ์ด ๊ฐ๋ฅํด์ง๋ค.
๋ง์ฝ ์์๋ ธ๋๋ค์ด Balanced ํ์ง ์๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
ํธ๋ฆฌ๊ฐ ํธํฅ๋์ด ์๋ BST(์ด์ง ํ์ ํธ๋ฆฌ)๋ชจ์ต์ ์์ํด๋ณด์
BST๋ ๊ท ํ์ ๋ง์ถ์ง ์๊ธฐ ๋๋ฌธ์ ์์ ๊ฐ์ ๋ชจ์ต์ด ๋์ฌ ์ ์๋ค.
์ต์ ์ ๊ฒฝ์ฐ์๋ O(n)์ ์๊ฐ ๋ณต์ก๋๊ฐ ๋์ค๋๋ฐ B tree๋ ํธ๋ฆฌ์ ๊ท ํ์ ๋ง์ถค์ผ๋ก์จ ์๊ฐ ๋ณต์ก๋๋ฅผ ์ค์ฌ์ค๋ค.
์ด๋ BST๋ ์ต๋ 2๊ฐ์ ์๋ ๋ ธ๋๋ฅผ ๊ฐ์ง์ง๋ง B tree๋ ์ฌ๋ฌ๊ฐ์ ์๋ ๋ ธ๋๋ฅผ ๊ฐ์ง ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ๋ค.
B-Tree
B-tree ๋ ํญ์ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋์ด ์๋ค๋ ํน์ง์ด ์๋ค.
๋๋ฌธ์ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ํ์ํ๋๋ผ๋ O(logN)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.
๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ๋ฆฌํ ๋ ธ๋๋ค์ ๊ฐ์ ๋ ๋ฒจ์ ์์ผ๋ฉฐ ๋ฐ๋ผ์ Balanced ๋์๋ค ๋ผ๊ณ ํ ์ ์๋ค.
B-tree์ ๊ตฌ์ฑ์ ์ดํด๋ณด์, ๋ ธ๋๋ ํค๊ฐ๊ณผ ๋ฆฌํ ๋ ธ๋์ ๋ํ ํฌ์ธํฐ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
๊ฐ key๋ค์ ์ผ์ชฝ ์์๋ค์ key๋ณด๋ค ์์ ๊ฐ ,์ค๋ฅธ์ชฝ ๊ฐ์ key๋ณด๋ค ํฐ ๊ฐ์ผ๋ก ๋์ด์๋ค.
B-tree ๊ตฌ์กฐ์ ๋ฐ์ดํฐ ํ์ ๊ณผ์ ์ ์์๋ณด์
ํ์ฌ ๋ฐ์ดํฐ์์ ์ ์ 27 ๋ฐ์ดํฐ๋ฅผ ์ฐพ์๋ณด๋ ค๊ณ ํ๋ค.
๋จผ์ 27์ 31๋ณด๋ค ์์ผ๋ฏ๋ก ์ผ์ชฝ ์์๋ ธ๋๋ก ์ด๋ํ๋ค.
๊ทธ ๋ค์ 11, 29์ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํ๊ฒ ๋๋๋ฐ ์ด ์ค๊ฐ๊ฐ์ด๋ผ๋ ๊ฒ์ ์ ์ ์๋ค.
๋ฐ๋ผ์ ๊ฐ์ด๋ฐ์ ์๋ ์์ ๋ ธ๋๋ก ํ์์ ํ๊ฒ๋๊ณ 27์ ๋ฐ๊ฒฌํ๊ฒ ๋๋ฉด์ ํ์์ด ๋๋๋ค.
์ด๋ ๊ฒ ๊ท ํ ์๋ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํตํด ํน์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฐพ์ ์ ์๋ค.
ํ์ง๋ง ๋ชจ๋ ๊ฒฝ์ฐ์์ ๋ฒ ์คํธ์ธ๊ฒ์ ์๋๋ค.
์ ํ ํ์(Full scan)์ ๊ฒฝ์ฐ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค ํ์ํ๋ฏ๋ก O(n)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.
์ด ๊ฒฝ์ฐ ๋ค์์ ์ดํด๋ณผ B+tree ๋ผ๋ ๊ฒ์ ํตํด์ Full scan์ ํจ์จ์ ๊ฐ์ ํ ์ ์๋ค.
์ฝ์
์ฝ์ ์ ๊ฒฝ์ฐ ์กฐํ ๋ฐฉ์๊ณผ ํต์ผํ๊ฒ Leaf Node๋ค์ ํ์ํ๊ณ ๋ ธ๋ ์๋ฆฌ๊ฐ ๋น์ด์๋ค๋ฉด ํด๋น ์๋ฆฌ์ ๋ ธ๋๋ฅผ ์ฝ์ , ๊ฝ ์ฐจ ์๋ค๋ฉด ๋ ธ๋๋ฅผ ๋ถํ ํด์ ์ฝ์ ํ๋ค.
์์ ๋ฅผ ํตํด 13 ๋ฐ์ดํฐ๋ฅผ ๋ฃ์๋ ค๊ณ ํ๋ค๊ณ ๊ฐ์ ํด๋ณด์
ํ์์ ๊ฒฐ๊ณผ, 12์ 14 ์ฌ์ด์ ๊ฐ์ ๋ฐฐ์ ๋์๋ค. ํ์ง๋ง ํด๋น Leaf Node๋ ๋ ธ๋๊ฐ ๊ฝ ์ฐฌ ์ํ์ด๋ค.
๋ฐ๋ผ์ ๋ถ๋ชจ ๋ ธ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ฃผ์๋ค.
์ด๋ ๊ฒ ๋๋ฉด ๋ถ๋ชจ ๋ ธ๋๋ ๊ฝ ์ฐฌ ์ํ๊ฐ ๋๋ฏ๋ก ์ค์๊ฐ์ธ 11๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถํ ํด์ค๋ค.
๋ถ๋ชจ ๋ ธ๋์ 11์ ๋ฃ์ผ๋ ๋ ๋ ธ๋๊ฐ ๊ฝ ์ฐฌ ์ํ๊ฐ ๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๋ค์ ์ค์๊ฐ์ธ 11๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถํ ํด์ค๋ค.
์ด๋ ๊ฒ ํจ์ผ๋ก์จ ์ฝ์ ๊ณผ์ ์ด ์๋ฃ๋์๋ค.
B-tree์ ํน์ง
- ๋ชจ๋ ์์ ๋ค์ ๊ฐ์ ๋ ๋ฒจ์ ์กด์ฌํ๋ค.
- ๋ ธ๋์ key์ ์๊ฐ k๊ฐ๋ผ๋ฉด, ์์๋ ธ๋๋ k+1 ์ด๋ค.
- Key๋ค์ ํญ์ ์ ๋ ฌ๋ ์ํ์ด๋ค.
์ฌ๊ธฐ๊น์ง๊ฐ B- Tree ์ ๋ํ ์๋ ๊ณผ์ ์ด๋ค.
์ด์ B+ Tree์ ๋ํด ์์๋ณด์
B + Tree
B- tree์์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ ๋ฆฌํ ๋ ธ๋๋ค๋ง ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง ์ ์๋ค๋ ์ ์ด๋ค.
์ด๋ Full scan ์์ ๊ฐ์ฅ ๋ช ํํ ์ฅ์ ์ ๊ฐ์ง๋ค.
๋ค์ B-tree ์ Full scan ๊ณผ์ ์ ์๊ฐํด๋ณด์
B-tree์์๋ Full scan์ ํ๊ธฐ ์ํด์ ๋ชจ๋ ๋ธ๋์น ๋ ธ๋ ๋ฐ ์์ ๋ ธ๋๋ค์ ํ์ํ์ด์ผํ๋ค.
ํ์ง๋ง B+tree์์์ Full scan ์ ๋ค๋ฅด๋ค.
๊ทธ ์ด์ ๋ Leaf Node ์๋ง ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๊ณ ์ด๋ค์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ์ฐ๊ฒฐ๋์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋๋ถ์ ํ๋ฒ์ ์ ํ ํ์์ผ๋ก๋ Full scan์ ์๋ฃํ ์ ์๋ค.
B+tree์ ํน์ง
- ๋ฆฌํ ๋ ธ๋๋ฅผ ์ ์ธํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ด์๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ํ๋ณดํจ์ผ๋ก์จ ๋ ๋ง์ key๋ค์ ์์ฉํ ์ ์๋ค.
- ํ ์ค์บ ์, B+tree๋ ๋ฆฌํ ๋ ธ๋์ ๋ฐ์ดํฐ๊ฐ ๋ชจ๋ ์๊ธฐ ๋๋ฌธ์ ํจ์จ์ ์ธ ํ์์ด ๊ฐ๋ฅํ๋ค.
ํด์
ํด์๊ฐ ์ธ๋ฑ์ค์์ ์ฌ์ฉ๋๋ ๊ฒ์ ์๊ธฐ์ ์ ํด์ํ ์ด๋ธ์ ๋ํด ์ ํ์๊ฐ ์๋ค.
ํด์ ํ ์ด๋ธ์ key๊ฐ์ ์ธ์๋ก ํ๋ ํด์ ํจ์์ ๊ฒฐ๊ณผ๋ฅผ ํตํด ์ธ๋ฑ์ค๋ฅผ ๋ง๋ฆ์ผ๋ก์จ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
์ด ๊ฒฝ์ฐ ์ฐพ๊ณ ์ ํ๋ ๋ฐ์ดํฐ์ key๊ฐ์ ํด์ํจ์ ํ๋ฒ์ผ๋ก ์กฐํํ ์ ์์ผ๋ฏ๋ก O(1)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.
ํ์ง๋ง ํด์ ์๋ฃ๊ตฌ์กฐ๋ ์ธ๋ฑ์ค์์ ๊ฑฐ์ ์ฐ์ด์ง ์๋๋ฐ, ๊ทธ ์ด์ ๋ ๋ฑํธ ๋ฐฉ์์๋ง ์ต์ ํ ๋์ด์๊ธฐ ๋๋ฌธ์ด๋ค.
์ฆ DB ํ์ ์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ ๋ฒ์๊ฒ์์ด๋ ์ ๋ ฌ์๋ ์ทจ์ฝํ๋ค.
์ด๋ฌํ ๋จ์ ๋๋ฌธ์ ์ธ๋ฑ์ค์์๋ ๋ง์ด ์ฌ์ฉ๋์ง ์๋๋ค.
์ธ๋ฑ์ค์ ์ข ๋ฅ
ํด๋ฌ์คํฐ ์ธ๋ฑ์ค
ํด๋ฌ์คํฐ ์ธ๋ฑ์ค๋ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ์ฌ ์ธ๋ฑ์ค๋ฅผ ๋ง๋๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ ํ ์ด๋ธ๋น ๋จ ํ๋์ ํด๋ฌ์คํฐ ์ธ๋ฑ์ค๋ง์ ๋ง๋ค ์ ์๋ค.
์ค์ ๋ฐ์ดํฐ๋ฅผ ํตํด์ ์ธ๋ฑ์ค๋ฅผ ๋ง๋๋ ๊ฒ์ด๋ฏ๋ก ์กฐํ ๊ณผ์ ์์ ๋งค์ฐ ๋น ๋ฅธ ์๋๋ฅผ ๊ฐ์ง๋ค.
ํ์ง๋ง ๊ทธ ์ธ ์ฝ์ , ์ญ์ , ์์ ๊ฐ์ ๊ฒฝ์ฐ ํด๋ฌ์คํฐ ์ธ๋ฑ์ค์ ์ฌ์ฉ์ด ์ ํฉํ์ง ์๋ค.
(DML์ด ์ผ์ด๋๋ ๊ฒฝ์ฐ ๋งค๋ฒ ์ ๋ ฌ์ ์ ์งํ๊ธฐ ๋๋ฌธ)
๋ฐ๋ผ์ ํด๋ฌ์คํฐ ์ธ๋ฑ์ค๋ ํ ์ด๋ธ์ ์์ ์ด ๋น๋ฒํ์ง ์๊ณ ์กฐํ ์์ฃผ์ ์์ ์ ํ๊ฒ ๋ ๊ฒฝ์ฐ ์ข์ ํจ์จ์ ๊ฐ์ง ์ ์๋ค.
์ค์ํ์ ๋น์ ํด๋ณด๋ฉด, ์์ด ๋จ์ด ์ฑ ์ ์์๋ก ๋ค ์ ์๋ค.
์์ด ๋จ์ด ์ฑ ์ ํญ์ A~Z ๊น์ง ์ ๋ ฌ๋์๋ ๋ฐ ์ฑ ์์ฒด๊ฐ ์ ๋ ฌ๋์ด ์๋ ์ด๊ฒ์ ํด๋ฌ์คํฐ ์ธ๋ฑ์ค๋ก ๋ณผ ์ ์๋ค !
๋ ผํด๋ฌ์คํฐ ์ธ๋ฑ์ค
์ค์ ๋ฐ์ดํฐ ํ ์ด๋ธ์ ์ ๋ ฌํ์ง ์๊ณ ๋ณ๋์ ๊ณต๊ฐ์ ์ธ๋ฑ์ค ํ์ด์ง๋ฅผ ์์ฑํด์ ์ ์ฅํ๋ ๋ฐฉ์์ด๋ค.
๋ฐ๋ผ์ ์ธ๋ฑ์ค ํ์ด์ง๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ํ์ํ๋ค.
DB์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋จ์์ด๋ค.
ํ๋์ ํ์ด์ง๋ 16kb์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ค.
MySQL :: MySQL 8.0 Reference Manual :: 15.11.2 File Space Management
MySQL :: MySQL 8.0 Reference Manual :: 15.11.2 File Space Management
15.11.2 File Space Management The data files that you define in the configuration file using the innodb_data_file_path configuration option form the InnoDB system tablespace. The files are logically concatenated to form the system tablespace. There is no
dev.mysql.com
๋ ผํด๋ฌ์คํฐ ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ์ ์กฐํ๋ณด๋ค ์์ ,์ญ์ ,์ฝ์ ์์ ๋ ์ข์ ํจ์จ์ ๊ฐ์ง๋ค.
์ค์ํ์ ๋น์ ํด๋ณด๋ฉด ,
์ฑ ์์ ์์ธ(์ธ๋ฑ์ค)๋ฅผ ๋ณด๊ณ ํด๋น ๋ด์ฉ์ด ์๋ ํ์ด์ง๋ก ์ด๋ํ๋ ๊ฒ์ด๋ค !
๋ฐ๋ผ์ ๋ฐ์ดํฐ์ ์กฐํ๋ณด๋จ ์์๋ก ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ด ์ผ์ด๋๋ ํ ์ด๋ธ์์์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ํฉํ๋ค.
4. ์ธ๋ฑ์ค ๋ง๋๋ ๋ฒ
SQL ๋ฌธ์ ํตํด ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค ์๊ฐ ์๋ค.
์ด ์ค์์๋ ์ฐ๋ฆฌ๊ฐ ํํ ์ฐ๋ ํ๋ผ์ด๋จธ๋ฆฌ ํค๋ฅผ ํตํ ์ธ๋ฑ์ค ์์ฑ๋ ํฌํจ๋์ด์๋ค.
์์์ ๋๊ฐ์ง์ ์ธ๋ฑ์ค๋ฅผ ๋ฐฐ์ ๋๋ฐ ๊ฐ๊ฐ ์ด๋ป๊ฒ ๋ง๋๋ ์ง๋ฅผ ์์๋ณด์
ํด๋ฌ์คํฐ ์ธ๋ฑ์ค
- ํ๋ผ์ด๋จธ๋ฆฌ ํค๋ฅผ ์ ์ธํ๋ ๊ฒฝ์ฐ
- not null + ์ ๋ํฌ ์ ์ฝ ์กฐ๊ฑด์ ์ ์ธํ๋ ๊ฒฝ์ฐ
ALTER TABLE member ADD CONSTRAINT id PRIMARY KEY(id); → ํด๋ฌ์คํฐ๋ง
ALTER TABLE member ADD CONSTRAINT id UNIQUE NOT NULL; → ํด๋ฌ์คํฐ๋ง
๋ ผ ํด๋ฌ์คํฐ ์ธ๋ฑ์ค
- ์ ๋ํฌ ์ ์ฝ ์กฐ๊ฑด์ ์ ์ธํ๋ ๊ฒฝ์ฐ
- ์ง์ (์ ๋ํฌ)์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ
ALTER TABLE member ADD CONSTRAINT name UNIQUE(name); → ๋
ผํด๋ฌ์คํฐ๋ง
CREATE INDEX name ON member (name); → ๋
ผํด๋ฌ์คํฐ๋ง
์๋๋ฉด ํ ์ด๋ธ์ ์์ฑํ ๋ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ์๋ ์๋ค.
CREATE TABLE member(
id INT PRIMARY KEY,
name varchar(20) not null,
INDEX name_idx (name)
)
์ด์ฒ๋ผ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ์์ผ๋ก DB ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ์ ์๋ค.
5. ์ ์ ํ ์ธ๋ฑ์ค ์ฌ์ฉ
์ธ๋ฑ์ค๋ฅผ ์ฐ๋ฉด ๋น ๋ฅธ ์กฐํ๊ฐ ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์ด ์์ง๋ง ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๊ฒ ๋ ๊ฒฝ์ฐ ์ถ๊ฐ์ ์ธ ์์ ์ด ๋ฐ์ํ๋ฏ๋ก ์ํฉ์ ๋ฐ๋ผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. ๊ทธ๋ ๋ค๋ฉด ์ธ๋ฑ์ค๊ฐ ๊ตณ์ด ํ์์๋ ์ํฉ์ ์ธ์ ์ผ๊น?
- ์ธ๋ฑ์ค์ ๋ฒ์๊ฐ ๋๋ฌด ๋์ ๊ฒฝ์ฐ์ด๋ค. ๋๋ค๋ ๊ฒ์ ๊ธฐ์ค์ ์ ์ฒด ๋ฐ์ดํฐ์ 15%์ด์์ ์กฐํํด์ผํ๋ค๋ ์๋ฏธ๋ก ๋ณด๋ฉด ์ ํฉํ๋ค.
- ์ด ๊ฒฝ์ฐ ์ธ๋ฑ์ค๋ฅผ ํตํ ํจ๊ณผ๊ฐ ๋ฏธ๋ฏธํ๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค์ ์ฌ์ฉ์ ์ง์ํ๋ค.
- ์กฐํ๋ณด๋ค ์ฝ์ ,์ญ์ ๋ฑ ์์ ์์ ์ด ๋ง์ ๊ฒฝ์ฐ์ด๋ค. ์ด ๊ฒฝ์ฐ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ธ๋ฑ์ค๋ก ์ธํ ํจ๊ณผ๊ฐ ๋ฏธ๋ฏธํ๋ค.(์์ ์์ ์ where ๋ก ์กฐํํ๋ ๊ฒฝ์ฐ ์ ์ธ)
- ๋ฐ์ดํฐ ์์ฒด๊ฐ ์ ์ ๊ฒฝ์ฐ๋ ๋ฐฐ๋ณด๋ค ๋ฐฐ๊ผฝ์ด ๋ ํฐ ์ํฉ์ด ์ฌ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ์ง์ํ๋ ๊ฒ์ด ์ข๋ค.
6. ์ธ์ ์ฐ๋ฉด ์ข์๊น?
์นด๋๋๋ฆฌํฐ๊ฐ ๋์ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ฑ์ค๋ก ํ๋ฉด ํจ๊ณผ์ ์ด๋ค.
์ฌ๊ธฐ์ ์นด๋๋๋ฆฌํฐ๋ ์ฌ์ ์ ์๋ฏธ๋ก ๊ทธ๋ฃน ๋ด ์์์ ๊ฐ์๋ฅผ ์๋ฏธํ๋ค.
๊ทธ๋ ๋ค๋ฉด ์นด๋๋๋ฆฌํฐ๊ฐ ๋๋ค๋ ๊ฒ์ ์ด๋ค ๊ฑธ ์๋ฏธํ ๊น?
์ ํด์ง ๋ฐ์ดํฐ ๋ด์์ ๊ทธ๋ฃน ๋ด ์์ ๊ฐ์๊ฐ ๋ง๋ค๋ ๊ฒ์ ์ค๋ณต์ด ์ ๋ค๋ ๊ฒ์ด๋ค.
์ค๋ณต์ด ์ ๋ค๋ ๊ฒ์ ์ธ๋ฑ์ค๋ก ์ฌ์ฉ ์ ๋งค์ฐ ์ข์ ํจ์จ์ ๋ผ ์ ์๋ค.
์๋ฅผ ๋ค์ด ์ค๋ณต๋ ๋ฐ์ดํฐ๊ฐ ๋ง์ ์ฑ๋ณ , ํ๋ ์ ์นด๋๋๋ฆฌํฐ๊ฐ ๋ฎ์ผ๋ฏ๋ก(์ค๋ณต์ด ๋์) ์ธ๋ฑ์ค์ ์ ํฉํ์ง ์๋ค.
๋ฐ๋๋ก ํ๋ฒ , ๊ณ ์ ID ๋ฑ์ ์นด๋๋๋ฆฌํฐ๊ฐ ๋์ผ๋ฏ๋ก(์ค๋ณต์ด ๋ฎ์) ์ธ๋ฑ์ค ์ฌ์ฉ์ ์ ํฉํ๋ค.
7. ๊ฒฐ๋ก
์ธ๋ฑ์ค์ ๋์ ๋ฐฉ์๊ณผ ์ธ๋ฑ์ค์ ์ฌ์ฉ ํจ๊ณผ์ ๋ํด ์์๋ณด์๋ค.
์ธ๋ฑ์ค๋ ์ ์ ํ๊ฒ ์ฌ์ฉํ๋ฉด ์ข์ ํจ์จ์ ๋ผ ์ ์์ง๋ง ์ํฉ์ ๋ง์ง ์๋ ์ธ๋ฑ์ค ์ฌ์ฉ์ ์คํ๋ ค ์ญํจ๊ณผ๋ฅผ ๋ถ๋ฌ์ฌ ์ ์๋ค.
๋๋ฌธ์ ์ธ๋ฑ์ค๊ฐ ํ์ํ ์ํฉ์ธ ์ง๋ฅผ ์ ํ๋จํด ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ด์ผํ๋ค.
์ฐธ๊ณ ์๋ฃ
DB Index ๋์์๋ฆฌ๋ฅผ ์์๋ณด์
DB Index ๋์์๋ฆฌ๋ฅผ ์์๋ณด์
B-Tree๋ฅผ ํตํด ์์๋ณด๋ Index ๋์ ์๋ฆฌ
kyungyeon.dev
ํด๋ฌ์คํฐ ์ธ๋ฑ์ค vs ๋ํด๋ฌ์คํฐ ์ธ๋ฑ์ค | zinirun
ํด๋ฌ์คํฐ ์ธ๋ฑ์ค vs ๋ํด๋ฌ์คํฐ ์ธ๋ฑ์ค | zinirun
ํ๊ณผ ๊ณต๋ถ์ ์ํ์ ์ค๋นํ๋ค๊ฐ ํด๋ฌ์คํฐ ์ธ๋ฑ์ค์ ๋ํด๋ฌ์คํฐ ์ธ๋ฑ์ค๋ฅผ ์ ๋ฆฌํด ๋ณธ๋ค. ๊ฐ๋ ์์ด ์ฌ์ ์ ์๊ฐํด๋ณด์. ๊ธฐ๋ณธ์ ์ผ๋ก A~Z ์ํ๋ฒณ ์์ผ๋ก ์ฑ ์์ฒด๊ฐ ์ ๋ ฌ๋์ด ์๋ค. ์ด๊ฑด ํด๋ฌ์คํฐ ์ธ
zinirun.github.io
[์๋ฃ๊ตฌ์กฐ] ๊ทธ๋ฆผ์ผ๋ก ์์๋ณด๋ B-Tree
[์๋ฃ๊ตฌ์กฐ] ๊ทธ๋ฆผ์ผ๋ก ์์๋ณด๋ B-Tree
Bํธ๋ฆฌ๋ ์ด์งํธ๋ฆฌ์์ ๋ฐ์ ๋์ด ๋ชจ๋ ๋ฆฌํ๋ ธ๋๋ค์ด ๊ฐ์ ๋ ๋ฒจ์ ๊ฐ์ง ์ ์๋๋ก ์๋์ผ๋ก ๋ฒจ๋ฐ์ค๋ฅผ ๋ง์ถ๋ ํธ๋ฆฌ์ ๋๋ค.
velog.io
'Computer Science > ๋ฐ์ดํฐ๋ฒ ์ด์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทํ๋(ํจ์ ์ข ์,๊ฐ๋ ,์ข ๋ฅ) (1) | 2024.01.13 |
---|