์ธ๋ฑ์ค ๊ฐ๋
์ธ๋ฑ์ค๋?
(ํ์ ํค, ๋ ์ฝ๋์ ๋ํ ํฌ์ธํฐ)๋ก ์ด๋ฃจ์ด์ง ๋ฐ์ดํฐ ๊ตฌ์กฐ
DBMS๊ฐ ํ์ผ ๋ด์ ํน์ ๋ ์ฝ๋๋ค์ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์๋๋ก ํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ
์ธ๋ฑ์ค๋ฅผ ํตํ์ฌ ์ง์๋ฅผ ์ํํ๋ฉด ์๋ต ์๊ฐ์ด ํฅ์๋จ
์ธ๋ฑ์ค๋ฅผ ์ด์ฉํ๋ฉด ๋์คํฌ ์ ๊ทผ ํ์๋ฅผ ์ค์ผ ์ ์์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์
์ธ๋ฑ์ค์ ํน์ง
- ์ผ๋ถ ์ ํธ๋ฆฌ๋ทฐํธ๋ง ์ธ๋ฑ์ค์ ํฌํจ ๋๊ธฐ์ ๋ณดํต ๋ฐ์ดํฐ ํ์ผ ํฌ๊ธฐ์ 10~20% ์ ๋์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง
- ์ธ๋ฑ์ค๊ฐ ๋ฐ์ดํฐ ํ์ผ๋ณด๋ค ์์ผ๋ฏ๋ก, ์ธ๋ฑ์ค ์์ฐจ์ ํ์ ์๊ฐ < ๋ฐ์ดํฐ ํ์ผ ์์ฐจ์ ํ์ ์๊ฐ
- ๋์ฑ์ด ์ธ๋ฑ์ค์ ์ํธ๋ฆฌ๋ค์ ํ์ ํค ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์ ์ฅ๋์ด ์์ผ๋ฏ๋ก ์ด์ง ํ์๋ ๊ฐ๋ฅ
- ์ธ๋ฑ์ค์ ํฌํจ๋ ์ ํธ๋ฆฌ๋ทฐํธ๋ฅผ ํ์ ํค๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, ์ด๋ ํ ์ ํธ๋ฆฌ๋ทฐํธ๋ ํ์ํค๊ฐ ๋ ์ ์๊ธฐ์ ๋ฐ๋์ ๊ณ ์ ํ์ง ์์
์ฌ์ฉํ๋ฉด ์ข์ ๊ฒฝ์ฐ
- Where ์ ์์ ์์ฃผ ์ฌ์ฉ๋๋ ์ ํธ๋ฆฌ๋ทฐํธ
- ์ธ๋ํค๊ฐ ์์ฃผ ์ฌ์ฉ๋๋ ์ ํธ๋ฆฌ๋ทฐํธ
- Join์ ์์ฃผ ์ฌ์ฉ๋๋ ์ ํธ๋ฆฌ๋ทฐํธ
์ฌ์ฉ์ ํผํด์ผ ํ๋ ๊ฒฝ์ฐ
- Data ์ค๋ณต๋๊ฐ ๋์ ์ ํธ๋ฆฌ๋ทฐํธ
- DML์ด ์์ฃผ ์ผ์ด๋๋ ์ ํธ๋ฆฌ๋ทฐํธ
DML์ด ์์ฃผ ์ผ์ด๋๋ฉด ์ ํผํด์ผ ํ๋๊ฐ?
INSERT
- ์ฝ์ ์ค์ Index split์ด ๋ฐ์ํ ์๋ ์๋ค. (b-tree์ leaf-node๊ฐ ๊ฝ์ฐฌ ๊ฒฝ์ฐ ํ๋์์ ๋๊ฐ๋ก ๋๋์ด์ง๋ ํ์, leaf-node๊ฐ ๊ฝ์ฐฌ ๊ฒฝ์ฐ leaf-node๋ฅผ ๋ถํ ์์ผ์ ๊ณต๊ฐ์ ํ๋ณดํ๊ธฐ ๋๋ฌธ)
- ์๋ก์ด ๋ธ๋ก์ ํ ๋น ๋ฐ์ ํ ๋ฐ์ดํฐ๋ฅผ ์ฎ๊ธฐ๋ ์์ ์ํ, ๋ชจ๋ ์ํ ๊ณผ์ ์ด ๋ง์ ์์ Redo๋ฅผ ์ ๋ฐํ๋ค.
- Index split์ด ์ด๋ฃจ์ด์ง๋ ๋์ ํด๋น ๋ธ๋ก์ ๋ํด ํค ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด ์๋๋ฏ๋ก DML์ด ๋ธ๋กํน๋๋ค.
DELETE
- Table์์ Data๊ฐ ์ง์์ง๋ฉด? : Data๊ฐ ์ง์์ง๊ณ , ๋ค๋ฅธ Data๊ฐ ๊ทธ ๊ณต๊ฐ์ ์ฌ์ฉ ๊ฐ๋ฅ
- Index์์ Data๊ฐ ์ง์์ง๋ฉด? : Data๊ฐ ์ง์์ง์ง ์๊ณ , ์ฌ์ฉ ์๋จ ํ์๋ง ํด๋ (Index์ Table์ Data์๊ฐ ๋ค๋ฆ)
UPDATE
- Table์์ Data๊ฐ Update? : Index๋ Update ํ ์ ์์
- Index์์์ Update : Index์๋ Update์ ๊ฐ๋ ์ด ์์ด์ Delete๊ฐ ๋ฐ์ํ ํ, Insert ์์
Index ์์ฑ
- ํ
์ด๋ธ ์์ฑ์ Primary Key๋ฅผ ์ง์ ํ๋ฉด ์๋์ผ๋ก Clustered Index๊ฐ ์์ฑ๋๋ค.
Clustered Index๊ฐ ์๋ ๊ฒฝ์ฐ UNIQUE ์ ์ฝ ์กฐ๊ฑด์ด ์๋ ํ ์ด๋ธ์ ๋ง๋ค๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง์์๋ ์๋์ผ๋ก Non-Clustered Index๋ฅผ ๋ง๋ ๋ค. - Primary Key๋ฅผ ์ง์ ํ๋ ์ด์ ๊ฐ์ ์ ์ผ๋ก Non-Clustered Index๋ฅผ ์ง์ ๊ฐ๋ฅํ๋ค.
- ๊ธฐ์กด ํ ์ด๋ธ์ PRIMARY KEY ์ ์ฝ ์กฐ๊ฑด์ ์ ์ฉํ๋ ค ํ๊ฑฐ๋ ํด๋น ํ ์ด๋ธ์ Clustered Index๊ฐ ์ด๋ฏธ ์์ผ๋ฉด Non-Clustered Index๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ ํค๋ฅผ ์ ์ฉํ๋ค.
- ์ ์ฝ ์กฐ๊ฑด ์์ด ํ ์ด๋ธ ์์ฑ์์ Index๋ฅผ ๋ง๋ค ์ ์์ผ๋ฉฐ, Index๊ฐ ์๋ ์์ฑ๋๊ธฐ ์ํ ์ด์ ์ ์ฝ ์กฐ๊ฑด์ Primary Key๋๋ Unique ๋ฟ์ด๋ค.
์ธ๋ฑ์ค์ ์ฌ๋ฌ๊ฐ์ง ์ ํ
ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค
- ํด๋น ํค ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ด๋ธ์ด๋ ๋ทฐ์ ๋ฐ์ดํฐ ํ์ ์ ๋ ฌํ๊ณ ์ ์ฅํ๋ค.
- ๋ฐ์ดํฐ๋ค์ ํ ๊ฐ์ง ์์๋ก๋ง ์ ์ฅ๋ ์ ์์ผ๋ฏ๋ก ํ ์ด๋ธ๋น ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๋ ํ๋๋ง ์์ ์ ์๋ค.
- ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๊ฐ ํฌํจ๋ ํ ์ด๋ธ์ ํด๋ฌ์คํฐํ ํ ์ด๋ธ์ด๋ผ๊ณ ํ๋ฉฐ, ํด๋ฌ์คํฐํ ํ ์ด๋ธ์ด ์๋๋ฉด ์ ๋ ฌ๋์ง ์์ ๊ตฌ์กฐ๋ก ์ ์ฅ๋๋ค.
- ํค ๊ฐ์ ๋ฐ๋ผ ์ ๋ ฌ๋ ๋ฐ์ดํฐ ํ์ด๋ฏ๋ก ๋ฒ์ ์ง์์ ์ ๋ฆฌํ๋ค.
๋น ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค
- ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค์ ๋ค๋ฅด๊ฒ ์ธ๋ฑ์ค์ ๊ตฌ์กฐ๊ฐ ๋ฐ์ดํฐ ํ์ผ๋ก๋ถํฐ ๋ ๋ฆฝ์ ์ด๋ค.
- ๋นํด๋ฌ์คํฐํ ์ธ๋ฑ์ค์๋ ๋นํด๋ฌ์คํฐ๋ง ์ธ๋ฑ์ค ํค ๊ฐ์ด ์์ผ๋ฉฐ, ๊ฐ ํค ๊ฐ ํญ๋ชฉ์๋ ํด๋น ํค ๊ฐ์ด ํฌํจ๋ ๋ฐ์ดํฐ ํ์ ๋ํ ํฌ์ธํฐ๊ฐ ์๋ค.
- ๋ณ๋์ ๊ณต๊ฐ์ ์ธ๋ฑ์ค ํ ์ด๋ธ์ ์ถ๊ฐ๋ก ์์ฑํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ๋ค.
REFERENCE
ORACLE์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐฐ์ํฐ, ํ์๊ฒฝ ์ง์, ์๋ฅ์ถํ
https://velog.io/@gillog/SQL-Clustered-Index-Non-Clustered-Index
[SQL] Clustered Index & Non-Clustered Index
์์ Index์ ๋ํด์ ์ ๋ฆฌ ํ์์ง๋ง, Clustered Index์ Non-Clustered Index๋ฅผ ์์ธํ ๋ค๋ฃจ์ง ์์ ์ด๋ฒ ์๊ฐ์ ์์ธํ ๋ Index์ ์ฐจ์ด๋ฅผ ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค.Index๋ DB์ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ๋ง์ ๋, ๊ฒ์ ์๋
velog.io
https://lng1982.tistory.com/144
ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค์ ๋ ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค
๋ช์ผ์ ์ ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค์ ๋ ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค์ ๋ํด์ ๋์๊ฒ ๋ฌผ์ด๋ณด์ ๋ถ์ด ๊ณ์ จ๋ค. ํ๋ฐ ๋ด ๊ธฐ์ต ์์๋ ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค๋ ํ ์ด๋ธ ๋น 1๊ฐ๋ง ์์ฑํ ์ ์๋ค๋ ๊ฒ๋ง ๊ธฐ์ต๋ ๋ฟ ๋ค๋ฅธ
lng1982.tistory.com