Database๋
์ฌ๋ฌ ์์ฉํ๋ก๊ทธ๋จ ๋๋ ์ฌ์ฉ์๋ค์ด ๊ณต์ ๋๋ ์ด์ฉ ํ ์ ์๋๋ก ์ฒด๊ณ์ ์ผ๋ก ํตํฉ, ์ ์ฅํ ๋ฐ์ดํฐ๋ค์ ์งํฉ
๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ค์ํ ์ด์ ?
- ํจ์จ์ ์ธ ํ์ฅ
๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ
- ์กฐ์ง์ ๋ฐ์ดํฐ๊ฐ ๋ผ์ดํ์ฌ์ดํด์ ์ด๋ ์์ ์์๋ ์ ํํ๊ณ ์์ ํ๋ฉฐ ์ผ๊ด์ฑ์ด ์๋ค๋ ๊ฒ์ ๋ณด์ฅํ๋ ๊ฒ
- ๋ฐ์ดํฐ ๋ณด์
- ๋ฐ์ดํฐ ๋ถ์
๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ ์ข ๋ฅ์ ๊ฐ๋
- ๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ
- ํ ์ด๋ธ์ ๊ธฐ๋ณธํค๋ฅผ ์ง์ ํ๊ณ ๊ทธ์ ๋ฐ๋ฅธ ๋ฌด๊ฒฐ์ฑ ์์น์ ์ง์ผ์ผ ํ๋ ์กฐ๊ฑด
๊ธฐ๋ณธํค(Primary Key)
์๋ null ๊ฐ์ด ์ฌ ์ ์์- ๊ธฐ๋ณธํค๋ ํ ์ด๋ธ์์ ํน์ ํ(row)๋ฅผ ๊ตฌ๋ณํ๊ธฐ ์ํด ํ๋ณด ํค ์ค์์ ์ ํ๋ ๊ณ ์ ํ ์๋ณ์ ํค
- ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ
- ํ ์ด๋ธ ๊ฐ์ ์ฐธ์กฐ ๊ด๊ณ๋ฅผ ์ ์ธํ๋ ์ ์ฝ ์กฐ๊ฑด
์ธ๋ํค(Foregin Key)
์ ๊ฐ์ null์ด๊ฑฐ๋ ์ฐธ์กฐ ๋ฆด๋ ์ด์ ์ ๊ธฐ๋ณธํค ๊ฐ๊ณผ ๋์ผํด์ผํจ- ์ธ๋ํค ์์ฑ์ ์ฐธ์กฐํ ์ ์๋ ๊ฐ์ ์ง๋ ์ ์์
- ์ธ๋ํค๋ ํค ์ค์์ ๋ค๋ฅธ ํ ์ด๋ธ์ ํ(row)์ ์ ์ผํ๊ฒ ์๋ณํ ์ ์๋ ํค
- ๋๋ฉ์ธ ๋ฌด๊ฒฐ์ฑ
- ํ ์ด๋ธ์ ์กด์ฌํ๋ ํ๋์ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํ ๊ฒ์ผ๋ก ํ๋์ ํ์ , null ๊ฐ ํ์ฉ ๋ฑ์ ๋ํ ์ฌํญ์ ์ ์ํ๊ณ ์ฌ๋ฐ๋ฅธ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฅ๋์๋์ง ํ์ธํ๋ ์กฐ๊ฑด
- Null๋ฌด๊ฒฐ์ฑ
- ํน์ฑ ์์ฑ๊ฐ์ NULL์ด ์ฌ ์ ์๋ค๋ ์กฐ๊ฑด์ด ์ฃผ์ด์ง ๊ฒฝ์ฐ ๊ทธ ์์ฑ๊ฐ์ NULL ๊ฐ์ด ์ฌ ์ ์๋ค๋ ์ ์ฝ ์กฐ๊ฑด
- ๊ณ ์ ๋ฌด๊ฒฐ์ฑ
- ํ ์ด๋ธ์ ํน์ ์์ฑ์ ๋ํด ๊ฐ ๋ ์ฝ๋ค์ด ๊ฐ๋ ๊ฐ๋ค์ด ์๋ก ๋ฌ๋ผ์ผ ํ๋ ์กฐ๊ฑด
- ํค ๋ฌด๊ฒฐ์ฑ
- ํ๋์ ํ ์ด๋ธ์๋ ์ ์ด๋ ํ๋์ ํค๊ฐ ์กด์ฌํด์ผ ํ๋ ์กฐ๊ฑด
- ๊ด๊ณ ๋ฌด๊ฒฐ์ฑ
- ํ ์ด๋ธ์ ์ด๋ ํ ํ์ ์ฝ์ ๊ฐ๋ฅ ์ฌ๋ถ ๋๋ ํ ํ ์ด๋ธ๊ณผ ๋ค๋ฅธ ํ ์ด๋ธ์ ํ๋ค ์ฌ์ด์ ๊ด๊ณ์ ๋ํ ์ ์ ์ฑ ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ์กฐ๊ฑด
DBMS : Database Management System
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ํ์ํ SWํจํค์ง ์งํฉ์ฒด
๊ธฐ๋ฅ
- ๋ฐ์ดํฐ์ ์ถ๊ฐ/์กฐํ/๋ณ๊ฒฝ/์ญ์
- ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ ์ฒดํฌ
- ํธ๋์ญ์ ๊ด๋ฆฌ
- ๋ฐ์ดํฐ์ ๋ฐฑ์ ๋ฐ ๋ณต์
- ๋ฐ์ดํฐ ๋ณด์ ๊ด๋ฆฌ
DBMS ๋ฐ์ ๊ณผ์
- ํ์ผ ์์คํ (ISSAM, VSAM)
- ๊ณ์ธตํ (HDBMS)
- ๋คํธ์ํฌํ (NDBMS)
- ๊ด๊ณํ (RDBMS)
- NO SQL
Database Object
ํญ๋ชฉ | ์ค๋ช
|
ํ
์ด๋ธ | ํ๊ณผ ์ด๋ก ๊ตฌ์ฑ๋ 2์ฐจ์์ ์ธ ํ |
์ํ์ค | ์ ์ํ ๋ฒํธํ ์์ฑ๊ธฐ |
์ธ๋ฑ์ค | ๋ฐ์ดํฐ ๊ฒ์ ์๋๋ฅผ ํฅ์์ํค๊ธฐ ์ํ ์๋ฃ ๊ตฌ์กฐ |
ํ๋ก์์ | ๋ฐํ ํ์
์ด ์๋ ๊ฐ์ฒด |
ํจ์ | ๋ฐํ ํ์
์ด ์๋ ๊ฐ์ฒด |
์คํค๋ง(Schema)
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌ์กฐ(๊ฐ์ฒด, ์์ฑ, ๊ด๊ณ)์ ์ ์ฝ ์กฐ๊ฑด์ ๋ํ ์ ์
- DBMS๋ ์คํค๋ง๋ฅผ ์ฐธ์กฐํ์ฌ ์ฌ์ฉ์์ ๋ช ๋ น์ ์ํ
์ธ๋ถ ์คํค๋ง = ์ฌ์ฉ์ ๋ทฐ
- ๊ฐ์ธ์ ์ ์ฅ์์ ํ์๋ก ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ผ๋ฆฌ์ ๊ตฌ์กฐ
- ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์คํ ์๋ ์ฌ๋ฌ๊ฐ์ ์ธ๋ถ ์คํค๋ง๊ฐ ์กด์ฌํ ์ ์์ผ๋ฉฐ ํ๋์ ์ธ๋ถ ์คํค๋ง๋ฅผ ์ฌ๋ฌ๊ฐ์ ์์ฉ ํ๋ก๊ทธ๋จ์ด๋ ์ฌ์ฉ์๊ฐ ๊ณต์ฉํ ์๋ ์๋ค.
- ์ง์์ด(SQL)์ ์ด์ฉํ์ฌ DB๋ฅผ ์ฝ๊ฒ ์ฌ์ฉ
๊ฐ๋ ์คํฐ๋ง = ์ ์ฒด์ ์ธ ๋ทฐ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฒด์ ์ธ ๋ ผ๋ฆฌ์ ๊ตฌ์กฐ, ๋ชจ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ด๋ ์ฌ์ฉ์๋ค์ด ํ์๋ก ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ข ํฉํ ์กฐ์ง ์ ์ฒด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ํ๋๋ง ์กด์ฌ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผ ๊ถํ, ๋ณด์ ๋ฐ ๋ฌด๊ฒฐ์ฑ ๊ท์น์ ๊ดํ ๋ช ์ธ๋ฅผ ์ ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ผ์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ์ ํํ๋ฅผ ๋ํ๋ด๋ ๊ฒ
๋ด๋ถ ์คํค๋ง = ์ ์ฅ ์คํค๋ง
- ๋ฌผ๋ฆฌ์ ์ ์ฅ์ฅ์น์ ์ ์ฅ์์ ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ, ๋ฌผ๋ฆฌ์ ์ธ ์ ์ฅ์์น์ ๋ฐ์ ํ ๊ณ์ธต
- ์ค์ ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ํ์ ๋ฌผ๋ฆฌ์ ์ธ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๊ณ ์ ์ฅ ๋ฐ์ดํฐ ํญ๋ชฉ์ ํํ๋ฐฉ๋ฒ, ๋ด๋ถ ํ์ ๋ฌผ์ง์ ์ธ ์์ ๋ฑ์ ๋ํ๋
์ตํฐ๋ง์ด์
๊ฐ์ฅ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก SQL์ ์ํํ ์ต์ ์ ์ฒ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ์์ฑํด์ฃผ๋ DBMS์ ํต์ฌ ์์ง์ด๋ค.
์ฟผ๋ฆฌ ์คํ ์ ์ฐจ
- Parsing
- Optimization
- Generation
- Execution
SQL Parsing
- DBMS๋ ์ฐ๋ฆฌ๊ฐ ์ธ์ด ์คํ ๊ณํ์ ์ชผ๊ฐ์ SQLํ์๋ฅผ ํตํด ์ตํฐ๋ง์ด์ ๋ก ํ์ฑํจ
- ์ฐ๋ฆฌ๊ฐ ์ ์กํ SQL์ ์ชผ๊ฐ์ ๊ตฌ์ฑ์์๋ฅผ ํ์ ํ๊ณ ์ด๋ฅผ ํ์ฑํด์ ํ์ฑํธ๋ฆฌ๋ฅผ ๋ง๋ ๋ค.
- SQL๋ฌธ์ฅ์ ๋ฌธ๋ฒ์ ์ธ ๊ฒ์ฌ๋ ํ์ฑ๋จ๊ณ์์ ์ด๋ฃจ์ด์ง๋ค.
Optimization
- SQL ํ์ฑํธ๋ฆฌ๋ฅด ๊ธฐ๋ฐ์ผ๋ก ์ตํฐ๋ง์ด์ ๊ฐ ๊ฐ์ง ์ฌ๋ฌ๊ฐ์ง ๋์์ ์ํ
- Query Transformer : ํ์ฑ๋ SQL์ ๋ณด๊ณ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋์ถํ๋ ์ข ๋ ๋์ ์คํ ๊ณํ์ ๊ฐ๋ SQL๋ก ๋ณํ์ด ๊ฐ๋ฅํ์ง๋ฅผ ํ๋จํ์ฌ ๋ณํ ์์ ์ ์ํ
- Estimator : ์์คํ ํต๊ณ์ ๋ณด๋ฅผ ๋์ ๋๋ฆฌ๋ก๋ถํฐ ์์งํ์ฌ SQL์ ์คํํ ๋ ์์๋๋ ์ด ๋น์ฉ์ ๊ณ์ฐ
- Generation : ์ตํฐ๋ง์ด์ ๊ฐ ์์ฑํ ์คํ๊ณํ์ SQL ์์ง์ด ์ค์ ์คํํ ์ ์๋ ์ฝ๋๋ ํ๋ก์์ ํํ๋ก ํฌ๋งทํ ํ๋ค.
- Execution : ํฌ๋งทํ ๋ SQL์ ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉ์์๊ฒ ์ ๋ฌํ๋ค.
์ธ๋ฑ์ค(index)
์ถ๊ฐ์ ์ธ ์ฐ๊ธฐ ์์
๊ณผ ์ ์ฅ ๊ณต๊ฐ์ ํ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ
์ด๋ธ์ ๊ฒ์ ์๋๋ฅผ ํฅ์์ํค๊ธฐ์ํ ์๋ฃ๊ตฌ์กฐ
- ์ด๋ค ๋ฐ์ดํฐ๊ฐ ์ด๋ ์์นํ์๋์ง ์์น ์ ๋ณด๋ฅผ ๊ฐ์ง ์ฃผ์๋ก ๊ฐ๋
- ๊ธฐ๋ณธ์๋ฆฌ : ํ ์ด๋ธ ์ ์ฒด ์ค์บ โ ์ ๋ ฌ โ ๋ธ๋ก ๊ธฐ๋ก
์ธ๋ฑ์ค ํ์ ์ข ๋ฅ
ใ
ค | ํด๋ฌ์คํฐ ์ธ๋ฑ์ค | ๋ณด์กฐ ์ธ๋ฑ์ค |
์๋ | ๋น ๋ฅด๋ค | ๋๋ฆฌ๋ค |
์ฌ์ฉ ๋ฉ๋ชจ๋ฆฌ | ์ ๋ค | ๋ง๋ค |
์ธ๋ฑ์ค | ์ธ๋ฑ์ค๊ฐ ์ฃผ์ ๋ฐ์ดํฐ | ์ธ๋ฑ์ค๊ฐ ๋ฐ์ดํฐ์ ์ฌ๋ณธ |
๊ฐ์ | ํ ํ
์ด๋ธ์ ํ ๊ฐ | ํ ํ
์ด๋ธ์ ์ฌ๋ฌ๊ฐ |
๋ฆฌํ ๋
ธ๋ | ๋ฆฌํ ๋
ธ๋ ์์ฒด๊ฐ ๋ฐ์ดํฐ | ๋ฆฌํ ๋
ธ๋๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ์์น |
์ ์ฅ๊ฐ | ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ธ๋ก์ ํฌ์ธํฐ | ๊ฐ๊ณผ ๋ฐ์ดํฐ์ ์์น๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ |
์ ๋ ฌ | ์ธ๋ฑ์ค ์์์ ๋ฌผ๋ฆฌ์ ์์๊ฐ ์ผ์น | ์ธ๋ฑ์ค ์์์ ๋ฌผ๋ฆฌ์ ์์๊ฐ ๋ถ์ผ์น |
ํด์ ํ ์ด๋ธ(Hash Table)
ํด์ ํ
์ด๋ธ์ (Key, Value)๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ ์ค ํ๋๋ก ๋น ๋ฅธ ๋ฐ์ดํฐ ๊ฒ์์ด ํ์ํ ๋ ์ ์ฉ
- ํด์ ํ ์ด๋ธ ๊ธฐ๋ฐ์ DB ์ธ๋ฑ์ค๋ (๋ฐ์ดํฐ=์ปฌ๋ผ์ ๊ฐ, ๋ฐ์ดํฐ์ ์์น)๋ฅผ (Key, Value)๋ก ์ฌ์ฉํ์ฌ ์ปฌ๋ผ์ ๊ฐ์ผ๋ก ์์ฑ๋ ํด์๋ฅผ ํตํด ์ธ๋ฑ์ค๋ฅผ ๊ตฌํ
- ์๊ฐ ๋ณต์ก๋
O(1)
- ๋ถ๋ฑํธ ์ฐ์ฐ์ด ์์ฃผ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฒ์์ ์ํด์๋ ํด์ ํ ์ด๋ธ์ด ์ ํฉํ์ง ์๋ค.
B+Tree
์์ ๋
ธ๋๊ฐ 2๊ฐ ์ด์์ธ B-Tree๋ฅผ ๊ฐ์ ์ํจ ์๋ฃ๊ตฌ์กฐ
- ๋ฆฌํ๋ ธ๋(๋ฐ์ดํฐ๋ ธ๋)๋ง ์ธ๋ฑ์ค์ ํจ๊ป ๋ฐ์ดํฐ(Value)๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ๋๋จธ์ง ๋ ธ๋(์ธ๋ฑ์ค๋ ธ๋)๋ค์ ๋ฐ์ดํฐ๋ฅผ ์ํ ์ธ๋ฑ์ค(Key)๋ง์ ๊ฐ๋๋ค.
- ๋ฆฌํ๋ ธ๋๋ค์ LinkedList๋ก ์ฐ๊ฒฐ๋์ด ์๋ค.
- ๋ฐ์ดํฐ ๋ ธ๋ ํฌ๊ธฐ๋ ์ธ๋ฑ์ค ๋ ธ๋์ ํฌ๊ธฐ์ ๊ฐ์ง ์์๋ ๋๋ค.
BTree์ ๋ฆฌํ๋
ธ๋๋ค์ LinkedList๋ก ์ฐ๊ฒฐํ์ฌ ์์ฐจ๊ฒ์์ ์ฉ์ดํ๊ฒ ํ๋ ๋ฑ BTree๋ฅผ ์ธ๋ฑ์ค์ ๋ง๊ฒ ์ต์ ํ
ํ์ด์ง(Page)
๋์คํฌ์ ๋ฉ๋ชจ๋ฆฌ(๋ฒํผํ)์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๋ ์ต์ ์์
๋จ์
์นด๋๋ ๋ฆฌํฐ(Cardinality)
ํน์ ์ปฌ๋ผ์ ์กด์ฌํ๋ ๋ฐ์ดํฐ์ ๊ณ ์ ์ฑ์ ์๋ฏธ
- ์นด๋๋ ๋ฆฌํฐ๊ฐ ๋์์๋ก ์ค๋ณต๋๊ฐ ๋ฎ์์ง๋ฉฐ ์ ๋ํฌํ ๊ฐ์ด ๋ง๋ค๋ ๊ฒ
Nested Loops ์กฐ์ธ
NL ์กฐ์ธ์ ๋๋ผ์ด๋น ํ
์ด๋ธ์ ํ ๋ก์ฐ์ย ๋งค์นญ๋๋ ๋๋ฆฌ๋ธ ํ
์ด๋ธ ๋ด ๋ก์ฐ๋ฅผย ์ฐพ๊ธฐ์ํดย ๋๋ฆฌ๋ธ ํ
์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํ์ํ๊ณ ์กฐ์ธย ์ปฌ๋ผย ๊ฐ์ด ์ผ์นํ๋ ๊ฒฝ์ฐ ์์ชฝ ํ
์ด๋ธ์ ๋ ๋ก์ฐ๋ฅผ ์ฐ๊ฒฐ
๋๋ผ์ด๋น ํ ์ด๋ธ
์กฐ์ธ ๋์ ํ
์ด๋ธ ์ค ๋จผ์ ์ก์ธ์คํ๋ ํ
์ด๋ธ, Outer table
๋๋ฆฌ๋ธ ํ ์ด๋ธ
์กฐ์ธ ๋์ ํ
์ด๋ธ ์ค ๋์ค์ ์ก์ธ์คํ๋ ํ
์ด๋ธ, Inner table
Table A, Table B์ ๊ฒฐํฉ ๋์ ํ ์๋ฅผ R(A), R(B)๋ผ๊ณ ํ๋ค๋ฉด ์ ๊ทผ๋๋ ํ ์๋ R(A)*R(B) Nested Loops Join์์ ์คํ์๊ฐ์ R(A)*R(B)์ ๋น๋ก
์ฑ๋ฅ์ ๋ํ๊ธฐ ์ํด์ R(A)*R(B)์ ๊ฐ์ ๋ฎ์ถฐ์ผํ๋ค.
โ Driving Table์ด ์์ ์๋ก & Inner Table์ ๊ฒฐํฉํค๊ฐ ํ๋์ ์ธ๋ฑ์ค๊ฐ ์กด์ฌ
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทํ
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ค๊ณ์์ ๋ฐ์ดํฐ ์ค๋ณต์ ์ค์ด๊ณ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๊ฐ์ ํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฅผ ์ ๊ทํ์ ๋ง๋๋ก ๊ตฌ์กฐํํ๋ ํ๋ก์ธ์ค
1. ์ 1 ์ ๊ทํ
์ค๋ณต๋๋ ํญ๋ชฉ์ด ์์ด์ผ ํ๋ค.
- ๊ฐ๋ณ ํ ์ด๋ธ์์ ๋ฐ๋ณต๋๋ ๊ทธ๋ฃน์ ์ ๊ฑฐ
- ๊ฐ ๊ด๋ จ ๋ฐ์ดํฐ ์งํฉ์ ๋ํด ๋ณ๋์ ํ ์ด๋ธ์ ์ ์
- ๊ธฐ๋ณธ ํค๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ๊ด๋ จ ๋ฐ์ดํฐ ์งํฉ์ ์๋ณ
2. ์ 2 ์ ๊ทํ
ํ๋ณดํค K์ K์ ์ํ์ง ์๋ ์์ฑ A๊ฐ ์์ ๋, A๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํด K์ ์ผ๋ถ๊ฐ ์๋ K ์ ์ฒด๋ฅผ ์ฐธ์กฐํด์ผ๋ง ํ๋ ๊ฒฝ์ฐ (์ข
์)
- ์ฌ๋ฌ ํ์ ์ ์ฉ๋๋ ๊ฐ ์งํฉ์ ๋ํด ๋ณ๋์ ํ ์ด๋ธ์ ์ ์
- ์ธ๋ ํค๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ํ ์ด๋ธ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ค์
3. ์ 3 ์ ๊ทํ
ํ
์ด๋ธ ๋ด์ ํค๊ฐ ์๋ ๋ชจ๋ ์ปฌ๋ผ์ด ํ
์ด๋ธ์ ๋ชจ๋ ํค์ ์ดํ์ ์ข
์์ด ๋์ง ์๋๋ค
- ํค์ ์์กดํ์ง ์๋ ํ๋๋ฅผ ์ ๊ฑฐ
Index Seek
Non-Clustered Index๋ฅผ ์ธ๋ฑ์ค ํธ๋ฆฌ๋ฅผ ํ๊ณ ์ํ๋ ๋ฐ์ดํฐ๋ก ๋ฐ๋ก ์ ๊ทผํ๋ ๊ฒฝ์ฐ
- ํ์ํ ๋ฆฌํ ํ์ด์ง๋ง ํ์ํ์ฌ ์ ๊ทผ
Index Scan VS Index Seek
- Index Scan : ํด๋น ํ ์ด๋ธ์ ์ปฌ๋ผ์ ๋ชจ๋ ์ฐพ์
- Index Seek : ํด๋น ์ธ๋ฑ์ค๋ฅผ ๋ฐ๋ก ์ฐพ์๊ฐ
๋์ ์ฟผ๋ฆฌ
- MS-SQL์์ ์ ์ฅ ํ๋ก์์ , Stored Procedure๋ ์คํ ๊ณํ์ด ํ๋ ์บ์๋ผ๋ ๊ฐ์ฒด์ ์บ์ฑ๋๋ค.
- ์ฆ, ํ๋ฒ ์ปดํ์ผ๋ ์ ์ฅ ํ๋ก์์ ๋ ์คํ๊ณํ์ด ๋ง๋ฃ๋๊ฑฐ๋, ์๋ก์ด ์คํ ๊ณํ์ ์์ฑํด์ผ ํ๊ธฐ ์ ๊น์ง ์บ์์์ ์ฌ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ด ์ข์์ง๋ค.
Plan Cache
- SQL Server๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฅ ํ๋ก์์ , ์์ ๋ฐ ์ค๋น๋ Transcat-SQL๋ฌธ, ํธ๋ฆฌ๊ฑฐ์ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ํฐ๋งํ๋ ์นด์ดํฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ๊ฐ์ฒด์ ์ฌ๋ฌ ์ธ์คํด์ค๋ฅผ ๋์์ ๋ชจ๋ํฐ๋ง ํ ์ ์๋ค.
๋์ ์ฟผ๋ฆฌ๊ฐ Plan Cache์ ์บ์๋๊ธฐ ์ํ ์กฐ๊ฑด
EXEC()
๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ- ๋์ผํ ๋์ SQL ๋ฌธ์์ด์ด ์คํ๋๋๋ผ๋ ๋งค๊ฐ๋ณ์์ ๊ฐ์ด ๋ฌ๋ผ์ง ๋๋ง๋ค ๋งค๋ฒ ์๋ก์ด ์คํ ๊ณํ์ ์์ฑ
- ๋์ ์ฟผ๋ฆฌ๋ ๋งค๋ฒ ์๋กญ๊ฒ ์ปดํ์ผ๋๋ฏ๋ก ์คํ ๊ณํ์ด ์บ์์ ์ ์ฅ๋์ง ์๋๋ค.
- ์ฑ๋ฅ์ด ์ด์
EXEC sp_executesql
์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ- ๋งค๋ฒ ๋์ผํ ์ฟผ๋ฆฌ ๋ฌธ์์ด์ด๋ผ๋ ์ผ์ ํ ๋งค๊ฐ ๋ณ์ํ๋ ํ์์ผ๋ก ์คํํ ์ ์๋ค.
- SQL Server๋ ์ผ์ ํ ํ์์ ๋งค๊ฐ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ฟผ๋ฆฌ์ ๋ํ ์คํ ๊ณํ์ ์บ์์ ์ ์ฅํ๋ค.
- ์ฆ, ๋งค๊ฐ๋ณ์์ ๊ฐ์ด ๋ฌ๋ผ์ง๋๋ผ๋ ์คํ ๊ณํ์ด ์บ์์ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ๋์ผํ ์ฟผ๋ฆฌ ํ ํ๋ฆฟ์ ๋ํ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
EXEC sp_executesql ์ฌ์ฉ ์ ์ฃผ์ํ ์
- Database Context
๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ค์์นํ๊ฑฐ๋ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ฒด์ ์์ธ์คํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธ
ex) DB1์์ sp_executesql์ ์ฌ์ฉํ์ฌ DB2์ ํ
์ด๋ธ์ด๋ ๋ทฐ์ ์ง์ ์์ธ์ค ๋ถ๊ฐ
- Access to Local Variables
๋์ SQL ๋ด๋ถ์์ ์ฌ์ฉ๋ ๋ก์ปฌ ๋ณ์์ ์ง์ ์ก์ธ์ค ํ ์ ์๋ค.
๋ก์ปฌ ๋ณ์๋ฅผ ์ฌ์ฉํ ๋์๋ ๋งค๊ฐ ๋ณ์ํ๋ ์ฟผ๋ฆฌ๋ฅผ ํตํด ๊ฐ์ ์ ๋ฌํด์ผํ๋ค.
DECLARE @LocalVariable INT = 123 DECLARE @DynamicSQL NVARCHAR(MAX) SET @DynamicSQL = N'SELECT @Parameter' EXEC sp_executesql @DynamicSQL, N'@Parameter INT', @LocalVariable
ย