ํด๋ฌ์คํฐ ํ ์ด๋ธ vs ๋ ผํด๋ฌ์คํฐ ํ ์ด๋ธ ๋น๊ต
ํด๋ฌ์คํฐ๋?
- ๋์คํฌ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ ์๊ฐ์ ์ค์ด๊ธฐ ์ํด์ ์์ฃผ ์ฌ์ฉ๋๋ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ๊ฐ์ ์์น์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ
- ๋น์ทํ ๋ ์ฝ๋๋ค์ ๋์์ ์กฐํํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ํจ์จ์ ์ผ๋ก ์กฐํํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๊ณ ์๋จ
- PK๊ฐ ๋น์ทํ ๋ ์ฝ๋๋ผ๋ฆฌ ๋ฌถ์ด์ ์ ์ฅํ๋ ๊ฒ (MySQL)
ํด๋ฌ์คํฐ ํ ์ด๋ธ(์ธ๋ฑ์ค)
- ํ ์ด๋ธ๋น 1๊ฐ์ฉ๋ง ํ์ฉ๋จ
- PK ์์ฑ ์ ๊ทธ ์ปฌ๋ผ์ ์๋์ผ๋ก ํด๋ฌ์คํฐ ์ธ๋ฑ์ค๊ฐ ์์ฑ๋จ
* ์ผ๋ฐ ์ธ๋ฑ์ค์์ ์ฐจ์ด- ํด๋ฌ์คํฐ๋ง ๋์ด ์๋ค๋ ์์๊ฐ ์ถ๊ฐ๋จ
- ์ตํฐ๋ง์ด์ ์์ ์ผ๋ฐ ์ธ๋ฑ์ค๋ณด๋ค ๋์ ๋ญํน
- PK๋ฅผ ์ค์ ํ์ง ์์ ๊ฒฝ์ฐ๋? InnoDB๊ฐ ๋ค์์ ์ฐ์ ์์๋๋ก ๋์ฒด ์ปฌ๋ผ์ ์ ํ
- UNIQUE NOT NULL ์ค ์ฒซ๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ ํด๋ฌ์คํฐ ํค๋ก ์ ํ
- ์๋์ผ๋ก ์ ๋ํฌํ ๊ฐ์ ๊ฐ์ง๋๋ก AUTO_INCREMENT ์ปฌ๋ผ์ ๋ด๋ถ์ ์ผ๋ก ์ถ๊ฐํด ํด๋ฌ์คํฐ ํค๋ก ์ ํ
* ํ์ง๋ง, ์๋์ผ๋ก ์ถ๊ฐ๋๋ ์ปฌ๋ผ์ ์ฌ์ฉ์์๊ฒ ๋ณด์ด์ง ์์์ SQL์์ ์ฌ์ฉํ ์๊ฐ ์์
- PK์ ์ํด ๋ ์ฝ๋ ์ ์ฅ ์์น๊ฐ ๊ฒฐ์ ๋จ
- PK๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด -> ๋ ์ฝ๋์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ํ์ ์ฌ๋ฐฐ์ดํจ -> ๋๋ค ์ก์ธ์ค๊ฐ ๋ง์ด ๋ฐ์ํด์ I/O ์ฆ๊ฐ
- PK๋ฅผ ์ ์คํ ๊ฒฐ์ ํด์ผ ํจ
- ์ธ๋ฑ์ค ํ์ด์ง์ ๋ฆฌํ ํ์ด์ง๊ฐ ๊ณง ๋ฐ์ดํฐ. ์ฆ, ํ ์ด๋ธ ์์ฒด๊ฐ ์ธ๋ฑ์ค
- InnoDB ์คํ ๋ฆฌ์ง ์์ง์์๋ง ์ง์ํจ
- ์ฅ์
- ๊ทธ๋ฃน๋ ์ปฌ๋ผ ๋ฐ์ดํฐ ํ๋ค์ด ๊ฐ์ ๋ฐ์ดํฐ ๋ธ๋ก์ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ๋์คํฌ I/O๊ฐ ์ค์ด SELECT ์ ์ฒ๋ฆฌ ์ฑ๋ฅ์ด ๋งค์ฐ ๋น ๋ฆ
- ํด๋ฌ์คํฐ๋ ํ ์ด๋ธ ์ฌ์ด์ ์กฐ์ธ์ด ๋ฐ์ํ๋ฉด ์ฒ๋ฆฌ ์๊ฐ์ด ๋จ์ถ๋จ
- INSERT, UPDATE, DELETE ์ ํญ์ ์ ๋ ฌ ์ํ๋ฅผ ์ ์งํจ
- ์ด๋ฏธ ์ ๋ ฌ๋ ์ํ๋ก ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค ํ ์ด๋ธ์ด ํ์ํ์ง ์์ ๋ ผํด๋ฌ์คํฐ๋ณด๋ค DB ์ฉ๋์ ๋ ์ฐจ์งํจ
- ํ ์ด๋ธ์ ๋ชจ๋ ๋ณด์กฐ ์ธ๋ฑ์ค๊ฐ PK๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค๋ง์ผ๋ก ์ฒ๋ฆฌ๋ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์(์ปค๋ฒ๋ง ์ธ๋ฑ์ค)
- ๋จ์
- ๋ ผํด๋ฌ์คํฐ๋ณด๋ค ๊ฒ์ ์๋๋ ๋ ๋น ๋ฅด์ง๋ง INSERT, UPDATE, DELETE๋ ๋๋ฆผ
๋ ผํด๋ฌ์คํฐ ํ ์ด๋ธ(์ธ๋ฑ์ค)
- ํ ์ด๋ธ๋น 249๊ฐ ํ์ฉ๋จ
- ๋ ์ฝ๋์ ์๋ณธ์ ์ ๋ ฌ๋์ง ์๊ณ , ์ธ๋ฑ์ค ํ
์ด๋ธ๋ง ์ ๋ ฌ๋จ
- ์ธ๋ฑ์ค ํ์ด์ง๋ ๋ก๊ทธํ์ผ์ ์ ์ฅ๋จ
- ์ธ๋ฑ์ค ์์ฒด์ ๋ฆฌํ ํ์ด์ง๋ ๋ฐ์ดํฐ๊ฐ ์๋๋ผ ๋ฐ์ดํฐ๊ฐ ์์นํ๋ ํฌ์ธํฐ(RID)์ด๊ธฐ ๋๋ฌธ์ ํด๋ฌ์คํฐ๋ณด๋ค ๊ฒ์ ์๋๋ ๋๋ฆฌ์ง๋ง INSERT, UPDATE, DELETE๋ ๋ ๋น ๋ฆ
๋น๊ต
- ์ฝ๊ฒ ์ฑ ์ ๋น์ ํ์๋ฉด ํด๋ฌ์คํฐ ํ ์ด๋ธ์ ํ์ด์ง๋ฅผ ์๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ๊ทธ ํ์ด์ง๋ฅผ ํด๋ ๊ฒ(๋ฐ๋ก ์ ๊ทผ)์ด๊ณ , ๋ ผํด๋ฌ์คํฐ ํ ์ด๋ธ์ ๋ชฉ์ฐจ์์ ์ฐพ๊ณ ์ ํ๋ ๋ด์ฉ์ ํ์ด์ง๋ฅผ ์ฐพ๊ณ ๊ทธ ํ์ด์ง๋ก ์ด๋ํ๋ ๊ฒ(ํ๋ฒ ๊ฑฐ์ณ์ ์ ๊ทผ)๊ณผ ๊ฐ์