DBMS ์ํคํ
์ฒ ๊ฐ์

๊ทธ๋ฆผ์์ ์์ ์๋ ๊ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์ (์ผ๋ฐ ์ฌ์ฉ์ ๋๋ ํ๋ก๊ทธ๋๋จธ)์์ ์ธํฐํ์ด์ค๋ฅผ ๋ํ๋ธ๋ค ์ฌ๊ธฐ์ ์ ๋ฌ๋ SQL๊ตฌ๋ฌธ์ ์ค๊ฐ์ ์๋ DBMS๋ฅผ ํตํด ๋ค์ํ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์ฅ ์ฅ์น์ ์๋ ๋ฐ์ดํฐ์ ์ ๊ทผํด์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๊ฒ ๋๋ค.
์ฌ๊ธฐ์ ๊ด์ฌ์ ๊ฐ์ง ๋ถ๋ถ์ ์ค๊ฐ์ ์๋ DBMS์์ ์ผ์ด๋๋ โ๋ค์ํ ์ฒ๋ฆฌโ์ด๋ค.
1. ์ฟผ๋ฆฌ ํ๊ฐ ์์ง
์ฟผ๋ฆฌ ํ๊ฐ ์์ง์ ์ฌ์ฉ์๋ก๋ถํฐ ์
๋ ฅ๋ฐ์ SQL ๊ตฌ๋ฌธ์ ๋ถ์ํ๊ณ , ์ด๋ค ์์๋ก ๊ธฐ์ต์ฅ์น์ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ค. ์ด๋ ๊ฒฐ์ ๋๋ ๊ณํ์ โ์คํ ๊ณํโ (๋๋ โ์คํ ํ๋โ)์ด๋ผ ๋ถ๋ฅธ๋ค. ์ด๋ฌํ ์คํ ๊ณํ์ ๊ธฐ๋ฐ์ ๋ฌ์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ โ์ ๊ทผ ๋ฉ์๋ (access method)โ๋ผ๊ณ ๋ถ๋ฅธ๋ค. ํ๋ง๋๋ก ์ฟผ๋ฆฌ ํ๊ฐ ์์ง์ ๊ณํ์ ์ธ์ฐ๊ณ ์คํํ๋ DBMS์ ํต์ฌ ๊ธฐ๋ฅ์ ๋ด๋นํ๋ ๋ชจ๋์ด๋ค.
์ถ๊ฐ๋ก โ์ฟผ๋ฆฌ(query)โ๋ โ์ง์โ๋ฅผ ์๋ฏธํ๋ ์์ด ๋จ์ด์ด๋ค. ์ข์ ์๋ฏธ๋ก๋ SELECT
๊ตฌ๋ฌธ์ ๋ํ๋ด๋ ๋ง์ด๋ฉฐ ํฐ ์๋ฏธ๋ก๋ SQL ๊ตฌ๋ฌธ ์ ์ฒด๋ฅผ ๋ํ๋ธ๋ค.
2. ๋ฒํผ ๋งค๋์
DBMS๋ ๋ฒํผ๋ผ๋ ํน๋ณํ ์ฉ๋๋ก ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ๋ณดํด๋๋ค. ์ด ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ด๋ฆฌํ๋ ๊ฒ์ด ๋ฐ๋ก ๋ฒํผ ๋งค๋์ ์ด๋ค.
๋ฒํผ ๋งค๋์ ๋ ๋์คํฌ๋ฅผ ๊ด๋ฆฌํ๋ ๋์คํฌ ์ฉ๋ ๋งค๋์ ์ ํจ๊ป ์ฐ๋๋์ด ์๋ํ๋ค. ์ด๋ฌํ ๋งค์ปค๋์ฆ๋ ์ฑ๋ฅ๊ณผ ์ค์ํ ๊ด๋ จ์ด ์๋ค.
3. ๋์คํฌ ์ฉ๋ ๋งค๋์
๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋ก๊ทธ๋จ ์ค์์๋ ๊ฐ์ฅ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ์ํํธ์จ์ด์ด๋ค. ๋์คํฌ ์ฉ๋ ๋งค๋์ ๋ ์ด๋์ ์ด๋ป๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ง๋ฅผ ๊ด๋ฆฌํ๋ฉฐ, ๋ฐ์ดํฐ์ ์ฝ๊ณ ์ฐ๊ธฐ๋ฅผ ์ ์ดํ๋ค.
4. ํธ๋์ญ์
๋งค๋์ ์ ๋ฝ ๋งค๋์
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์๋ฐฑ์์ ์์ฒ๋ช
์ ์ฌ๋์ด ๋์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํด์ ์ฌ์ฉํ๊ฒ๋๋ค. ์ด๋ ๊ฐ๊ฐ์ ์ฒ๋ฆฌ๋ DBMS ๋ด๋ถ์์ ํธ๋์ญ์
์ด๋ผ๋ ๋จ์๋ก ๊ด๋ฆฌ๋๋ค. ์ด๋ฌํ ํธ๋์ญ์
์ ์ ํฉ์ฑ์ ์ ์งํ๋ฉด์ ์คํ์ํค๊ณ , ํ์ํ ๊ฒฝ์ฐ ๋ฐ์ดํฐ์ ๋ฝ์ ๊ฑธ์ด ๋ค๋ฅธ ์ฌ๋์ ์์ฒญ์ ๋๊ธฐ์ํค๋ ๊ฒ์ด ํธ๋์ญ์
๋งค๋์ ์ ๋ฝ ๋งค๋์ ์ ์ญํ ์ด๋ค.
5. ๋ฆฌ์ปค๋ฒ๋ฆฌ ๋งค๋์
์์คํ
์ ์ธ์ ๋ ์ฅ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ ์ํฉ์ ๋๋นํ๋ ค๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ๋ฐฑ์
ํ๊ณ , ๋ฌธ์ ๊ฐ ์ผ์ด๋ฌ์ ๋ ๋ณต๊ตฌํด์ค์ผ ํ๋๋ฐ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ํํ๋ ๊ฒ์ด ๋ฆฌ์ปค๋ฒ๋ฆฌ ๋งค๋์ ์ด๋ค.
DBMS์ ๋ฒํผ
1. ๊ณต์ง ๋ฐฅ์ ์กด์ฌํ ๊น?
๊ธฐ์ต์ฅ์น๋ ๊ธฐ์ต ๋น์ฉ(๋๋ ๊ธฐ์ต ์ฝ์คํธ)์ ๋ฐ๋ผ 1์ฐจ๋ถํฐ 3์ฐจ๊น์ง์ ๊ณ์ธต์ผ๋ก ๋ถ๋ฅ๋๋ค. ๊ธฐ์ต ๋น์ฉ์ด๋ผ๊ณ ํ๋ ๊ฒ์ ๊ฐ๋จํ๊ฒ โ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐ ์๋ชจ๋๋ ๋น์ฉโ์ ๋ํ๋ธ๋ค.
๋ง์ ๋ฐ์ดํฐ๋ฅผ ์์์ ์ผ๋ก ์ ์ฅํ๋ ค๋ฉด ์๋๋ฅผ ์๊ณ , ์๋๋ฅผ ์ป๊ณ ์ ํ๋ฉด ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์์์ ์ผ๋ก ์ ์ฅํ๊ธฐ ํ๋ค๋ค๋ ํธ๋ ์ด๋์คํ๊ฐ ๋ฐ์ํ๋ค.
2. DBMS์ ๊ธฐ์ต์ฅ์น์ ๊ด๊ณ
DBMS๋ ๋ฐ์ดํฐ ์ ์ฅ์ ๋ชฉ์ ์ผ๋ก ํ๋ ๋ฏธ๋ค์จ์ด์ด๋ค.
ํ๋๋์คํฌ(HDD)
DBMS๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋งค์ฒด(์ ์ฅ์)๋ ํ์ฌ ๋๋ถ๋ถ HDD์ด๋ค. ํ๋๋์คํฌ๋ ๊ธฐ์ต์ฅ์น ๊ณ์ธต์์ ํ๊ฐ์ด๋ฐ์ ์๋ 2์ฐจ ๊ธฐ์ต์ฅ์น๋ก ๋ถ๋ฅ๋๋ค. ์ผ๋ฐ์ ์ธ DBMS๋ ํญ์ ๋์คํฌ ์ด์ธ์ ์ฅ์์๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ ค ๋๋๋ค. ๋ฐ๋ก 1์ฐจ ๊ณ์ธต์ ๊ธฐ์ต์ฅ์น ๋ฉ๋ชจ๋ฆฌ์ ๋ง์ด๋ค.
๋ฉ๋ชจ๋ฆฌ
๋ฉ๋ชจ๋ฆฌ๋ ๋์คํฌ์ ๋นํด ๊ธฐ์ต ๋น์ฉ์ด ๊ต์ฅํ ๋น์ธ๋ค. ์ผ๋ฐ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ๊ฒฝ์ฐ ํ์ฌ๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ ํ๋ ์๋ฆฌ ์ ๋์ด๋ค. ๋ฐ๋ผ์ ๊ท๋ชจ ์๋ ์์ฉ ์์คํ
์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด๋ถ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค.
๋ฒํผ๋ฅผ ํ์ฉํ ์๋ ํฅ์
DBMS๊ฐ ์ผ๋ถ๋ผ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ ๊ฒ์ ์ฑ๋ฅ ํฅ์ ๋๋ฌธ์ด๋ค. ํ๋ง๋๋ก SQL๊ตฌ๋ฌธ์ ์คํ ์๋๋ฅผ ๋น ๋ฅด๊ฒ ๋ง๋ค๊ธฐ ์ํจ์ด๋ผ๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ์์ฃผ ์ ๊ทผํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฌ๋ ค๋๋ค๋ฉด, ๊ฐ์ SQL ๊ตฌ๋ฌธ์ ์คํํ๋ค๊ณ ํด๋ ๋์คํฌ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ํ์ ์์ด ๊ณง๋ฐ๋ก ๋ฉ๋ชจ๋ฆฌ์์ ์ฝ์ด ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ์ ์๋ค.
๋์คํฌ ์ ๊ทผ์ ์ค์ผ ์ ์๋ค๋ฉด ๊ต์ฅํ ํฐ ํญ์ ์ฑ๋ฅ ํฅ์์ด ๊ฐ๋ฅํ๋ค. ์ผ๋ฐ์ ์ธ SQL๊ตฌ๋ฌธ์ ์คํ ์๊ฐ ๋๋ถ๋ถ์ ์ ์ฅ์ I/O
์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ ๊ฒ ์ฑ๋ฅ ํฅ์์ ๋ชฉ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฒํผ(buffer) ๋๋ ์บ์(cache)๋ผ๊ณ ํ๋ค. ๋ชจ๋ ๋ฌผ๋ฆฌ์ ์ธ ๋งค์ฒด๋ก ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ๋ฐ๋ผ์ ํ๋๋์คํฌ ์์ ์๋ ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๋ค.
์ด๋ฌํ ๊ณ ์ ์ ๊ทผ์ด ๊ฐ๋ฅํ ๋ฒํผ์ โ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ด๋ ์ ๋์ ๊ธฐ๊ฐ ๋์ ์ฌ๋ฆด์งโ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ด DBMS์ ๋ฒํผ ๋งค๋์ ์ด๋ค. ์ด๋ฌํ ๊ฒ์ ์๊ฐํ๋ฉด ๋ฒํผ ๋งค๋์ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ๋ฅ์ ๊ดธ์ฅํ ์ค์ํ ์ํฅ์ ๋ผ์น๋ค๋ ๊ฒ์ ์ฝ๊ฒ ์ดํดํ ์ ์๋ค.
๐ก ๋ค์ํ ์บ์
์ ํ๋ฆฌ์ผ์ด์
์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒฐ๊ณผ ์งํฉ์ ์บ์์ ์ ์ฅํด์, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ค์ SQL๊ตฌ๋ฌธ์ ๋ฐํํ์ง ์์๋ ์ฌ์ฉ์์๊ฒ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํดํด์ฃผ๋ ๊ตฌ์กฐ๋ ์ผ์ข
์ ์บ์๋ผ๊ณ ํ ์ ์๋ค. ์ด๋ฌํ ๋ฐฉ๋ฒ์ ์ต์ ๋ฐ์ดํฐ๋ฅผ ํ์๋ก ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด, ๊ฐ๋จํ๊ฒ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฒด์ ์ฑ๋ฅ์ ๊ฐ์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ค.
ํ์ง๋ง ๋ค๋ฅธ ๊ณ์ธต์ ์บ์๋ฅผ ๋ง์ด ํ ๋นํ๋ ๊ฒ ๋ณด๋ค๋, ์๋ฒ์ ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ฐํ์ง ์๋ ๋ฒ์์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ ์บ์๋ฅผ ํ ๋นํ๋ ํธ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ๋ฅ ํฅ์์ ๋ ๊ธฐ๋ํ ์ ์๋ค.
๊ทธ๋ ๋ค๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋๋ฌด ๋ง์ด ํ ๋นํด๋ฒ๋ฆฌ๋ฉด, ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ณ ๊ฐ๋์ด ๋ฒ๋ ค ์ด์์ฒด์ ๋จ์์ ์ค์์ด ์ผ์ด๋ ์ ์๋ค. ์ด๋ ๊ฒ ๋๋ฉด ์ฌ๋ก ๋ค์ด์ด ์ผ์ด๋ ์ฃผ๊ฐ์ ๋๊ฐ ๋์ด๋ฒ๋ฆฌ๋ ๊ผด์ด ๋๋ค. ๋ฐ๋ผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ผ๋ง๋ ํ ๋นํ ์ง ํ๋จํ ๋๋ ์ด๋๊น์ง๋ โ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ๋ฒ์์์ ๊ฐ๋ฅํ ๋ง์ดโ๊ฐ ์์น์ด๋ค.
3. ๋ฉ๋ชจ๋ฆฌ ์์ ์๋ ๋๊ฐ์ ๋ฒํผ
DBMS๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์งํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ
- ๋ฐ์ดํฐ ์บ์
- ๋ก๊ทธ ๋ฒํผ
๋ฒํผ๋ ์ฌ์ฉ์๊ฐ ์ฉ๋์ ๋ฐ๋ผ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
๋ฐ์ดํฐ ์บ์
๋ฐ์ดํฐ ์บ์๋ ๋์คํฌ์ ์๋ ๋ฐ์ดํฐ์ ์ผ๋ถ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์งํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ค. SELECT
๊ตฌ๋ฌธ์์ ์ ํํ๊ณ ์ถ์ ๋ฐ์ดํฐ๊ฐ ์ด ์ข๊ฒ ์ด๋ฌํ ๋ฐ์ดํฐ ์บ์์ ์๋ค๋ฉด, ๋์คํฌ์ ๊ฐ์ ์ ์ ์ ์ฅ์์ ์ ๊ทผํ์ง ์๊ณ ์ฒ๋ฆฌ๊ฐ ์ํ๋๋ฉฐ ๋ฐ๋ผ์ ๊ต์ฅํ ๋น ๋ฅด๊ฒ ์๋ตํ๋ค.
๋ฐ๋๋ก ์ด ๋์๊ฒ ๋ฒํผ์์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์ ์๋ค๋ฉด, ์ ์ ์ ์ฅ์๊น์ง ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๋ฌ ๊ฐ์ผํ๋ค. ๋ฐ๋ผ์ SQL ๊ตฌ๋ฌธ์ ์๋ต ์๋๊ฐ ๋๋ ค์ง๋ค.
๋ก๊ทธ ๋ฒํผ
๋ก๊ทธ ๋ฒํผ๋ ๊ฐฑ์ ์ฒ๋ฆฌ (INSERT
, DELETE
, UPDATE
, MERGE
)์ ๊ด๋ จ์ด ์๋ค. DBMS๋ ๊ฐฑ์ ๊ณผ ๊ด๋ จ๋ SQL๊ตฌ๋ฌธ์ ์ฌ์ฉ์๋ก๋ถํฐ ๋ฐ์ผ๋ฉด, ๊ณง๋ฐ๋ก ์ ์ฅ์์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ์ง ์๋๋ค. ์ผ๋จ ๋ก๊ทธ ๋ฒํผ ์์ ๋ณ๊ฒฝ ์ ๋ณด๋ฅผ ๋ณด๋ด๊ณ ์ดํ ๋์คํฌ์ ๋ณ๊ฒฝ์ ์ํํ๋ค.
์ด์ฒ๋ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐฑ์ ์ฒ๋ฆฌ๋ SQL๊ตฌ๋ฌธ์ ์คํ ์์ ๊ณผ ์ ์ฅ์์ ๊ฐฑ์ ํ๋ ์์ ์ ์ฐจ์ด๊ฐ ์๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ์ด๋ค. SQL๊ตฌ๋ฌธ์ ์คํํ ๋ ๋จ์ํ ์ ์ฅ์ ์์ ํ์ผ์ ๋ฐ๋ก ๋ณ๊ฒฝํด๋ฒ๋ฆฌ๋ ํธ์ด ๊ฐ๋จํ ๋ฐฉ๋ฒ์ด๋ ๊ทธ๋ผ์๋ DBMS๊ฐ ์ด๋ฌํ ์์ ์ฐจ์ด๋ฅผ ๋๋ ์ด์ ๋ ์ญ์ ์ฑ๋ฅ์ ๋์ด๊ธฐ ์ํด์์ด๋ค. ์ ์ฅ์๋ ๊ฒ์๋ฟ๋ง ์๋๋ผ ๊ฐฑ์ ์ ํ ๋๋ ์๋นํ ์๊ฐ์ด ์๋ชจ๋๋ค. ๋ฐ๋ผ์ ์ ์ฅ์ ๋ณ๊ฒฝ์ด ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ฉด ์ฌ์ฉ์๋ ์ฅ๊ธฐ๊ฐ ๋๊ธฐํ๊ฒ ๋๋ค. ๋ฐ๋ผ์ ํ๋ฒ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐฑ์ ์ ๋ณด๋ฅผ ๋ฐ์ ์์ ์์ ์ฌ์ฉ์์๊ฒ๋ ํด๋น SQL๊ตฌ๋ฌธ์ด โ๋๋ฌ๋คโ๋ผ๊ณ ํต์งํ๊ณ , ๋ด๋ถ์ ์ผ๋ก ๊ด๋ จ๋ ์ฒ๋ฆฌ๋ฅผ ๊ณ์ ์ํํ๋ ๊ฒ์ด๋ค.
4. ๋ฉ๋ชจ๋ฆฌ์ ์ฑ์ง์ด ์ด๋ํ๋ ํธ๋ ์ด๋์คํ
ํ๋ฐ์ฑ
๋ฉ๋ชจ๋ฆฌ์๋ ๋ฐ์ดํฐ์ ์์์ฑ์ด ์๋ค. ํ๋์จ์ด์ ์ ์์ ๊บผ๋ฒ๋ฆฌ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์์ ์ฌ๋ผ๊ฐ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง๊ฒ๋๋ค. ์ด๋ฌํ ์ฑ์ง์ ํ๋ฐ์ฑ์ด๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.
DBMS์ ์ด๋ค ์ฅ์ ๊ฐ ๋ฐ์ํด์ ํ๋ก์ธ์ค๋ค์ด์ด ์ผ์ด๋๋ฉด(์ฆ, ์๋ฒ๊ฐ ์ฃฝ์ผ๋ฉด). ๋ฉ๋ชจ๋ฆฌ ์์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ๋ ์๊ฐ๋ค. ๊ฒฐ๊ตญ ๋ฏธ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ฐ๊ฒฉ์ด ์์ฒญ๋๊ฒ ์ธ์ง๋ค๊ณ ํด๋ ์์์ฑ์ด ์๋ ์ด์ ๊ธฐ๋ฅ์ ์ผ๋ก ๋์คํฌ๋ฅผ ์์ ํ ๋์ฒดํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค.
ํ๋ฐ์ฑ์ ๋ฌธ์ ์
ํ๋ฐ์ฑ์ ๊ฐ์ฅ ํฐ ๋ฌธ์ ์ ์ ์ฅ์ ๊ฐ ๋ฐ์ํ์ ๋ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๋ฐ์ดํฐ๊ฐ ๋ชจ๋ ์ฌ๋ผ์ ธ๋ฒ๋ ค ๋ฐ์ดํฐ ๋ถ์ ํฉ์ ๋ฐ์์ํค๋ ๊ฒ์ด๋ค. ๋ฐ์ดํฐ ์บ์๋ผ๋ฉด ์ฅ์ ๋ก ์ธํด ๋ฉ๋ชจ๋ฆฌ ์์ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ ธ๋ฒ๋ ค๋, ์๋ณธ ๋ฐ์ดํฐ๋ ๋์คํฌ ์์ ๋จ์์์ผ๋ฏ๋ก ์๋ฌด๋ฌธ์ ์๋ค.
ํ์ง๋ง ๋ก๊ทธ ๋ฒํผ ์์ ์กด์ฌํ๋ ๋ฐ์ดํฐ๊ฐ ๋์คํฌ ์์ ๋ก๊ทธํ์ผ์ ๋ฐ์๋๊ธฐ ์ ์ ์ฅ์ ๊ฐ ๋ฐ์ํด์ ์ฌ๋ผ์ ธ๋ฒ๋ฆฐ๋ค๋ฉด ํด๋น ๋ฐ์ดํฐ๊ฐ ์์ ํ ์ฌ๋ผ์ ธ์ ๋ณต๊ตฌ์กฐ์ฐจ ๋ถ๊ฐ๋ฅํด์ง ๊ฒ์ด๋ค. ์ด๋ ์ฌ์ฉ์๊ฐ ์ํํ๋ ๊ฐฑ์ ์ ๋ณด๊ฐ ์ฌ๋ผ์ง๋ค๋ ์๋ฏธ์ด๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ ๋น์ฆ๋์ค์ ์ธ ๊ด์ ์์ ๊ต์ฅํ ์ฌ๊ฐํ ๋ฌธ์ ์ด๋ค. ์ํ ์
์ถ๊ธ ๋๋ ์นด๋ ์ธ์ถ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์๋์ง ์์ ์๋ ์๋ค.
๊ทธ๋ฐ๋ฐ ๋ก๊ทธ ํ์ผ์ ์ ๋ฌ๋ ๊ฐฑ์ ์ ๋ณด๊ฐ DBMS๊ฐ ๋ค์ด๋ ๋ ์ฌ๋ผ์ง๋ ํ์์ DBMS๊ฐ ๊ฐฑ์ ์ ๋น๋๊ธฐ๋ก ํ๋ ์ด์, ์ธ์ ๋ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ์ด๋ค. ๋ฐ๋ผ์ ์ด๋ฅผ ํํผํ๊ณ ์ DBMS๋ ์ปค๋ฐ ์์ ์ ๋ฐ๋์ ๊ฐฑ์ ์ ๋ณด๋ฅผ ๋ก๊ทธ ํ์ผ(์ด๋ ์์์ ์ธ ์ ์ฅ์ ์์ ์กด์ฌ)์ ์์ผ๋ก์จ, ์ฅ์ ๊ฐ ๋ฐ์ํด๋ ์ ํฉ์ฑ์ ์ ์งํ ์ ์๊ฒ ํ๋ค. ์ปค๋ฐ(Commit)์ด๋ ๊ฐฑ์ ์ฒ๋ฆฌ๋ฅผ โํ์ โํ๋ ๊ฒ์ด๋ค. DBMS๋ ์ปค๋ฐ๋ ๋ฐ์ดํฐ๋ฅผ ์์ํ ํ๋ค.
๋ฐ๋๋ก ๋งํ๋ฉด ์ปค๋ฐ ๋๋ ๋ฐ๋์ ๋์คํฌ์ ๋๊ธฐ์ ๊ทผ์ด ์ผ์ด๋๋ค. ๊ฒฐ๊ตญ ์ฌ๊ธฐ์ ์ง์ฐ์ด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์๋ค. ๋์คํฌ์ ๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํ๋ค๋ฉด ๋ฐ์ดํฐ ์ ํฉ์ฑ์ ๋์์ง์ง๋ง ์ฑ๋ฅ์ ๋ฎ์์ง๋ค. ๋ฐ๋๋ก ์ฑ๋ฅ์ ๋์ด๋ ค๋ฉด ๋ฐ์ดํฐ ์ ํฉ์ฑ์ด ๋ฎ์์ง๋ค. ์ด ๋๊ฐ์ง ์ ํ ์ฌํญ์ ํ์ฌ์๋ ๋ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง๋์ด๊ฐ ๊ณจ๋จธ๋ฆฌ๋ฅผ ์ฉํ๋ ๋ฌธ์ ์ด๋ค.
5. ์์คํ
ํน์ฑ์ ๋ฐ๋ฅธ ํธ๋ ์ด๋์คํ
๋ฐ์ดํฐ ์บ์์ ๋ก๊ทธ ๋ฒํผ์ ํฌ๊ธฐ

๋ฐ์ดํฐ ์บ์์ ๋ก๊ทธ ๋ฒํผ๋ฅผ ๋น๊ตํด๋ณด๋ฉด 3๊ฐ์ DBMS์์ ๊ณตํต์ผ๋ก ๋ฐ์ดํฐ ์บ์์ ๋นํด ๋ก๊ทธ ๋ฒํผ์ ์ด๊น๊ฐ์ด ๊ดธ์ฅํ ์๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ 2๊ฐ์ ๋ฒํผ์ ๋ํด ์ด๋ ๊ฒ ๊ทน๋จ์ ์ผ๋ก ๋น๋์นญ์ ์ธ ํฌ๊ธฐ๋ฅผ ํ ๋นํ ๋ฐ๋ ๋ช
ํํ ์ด์ ๊ฐ ์๋ค. ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฒ์์ ๋ฉ์ธ์ผ๋ก ์ฒ๋ฆฌํ๋ค๊ณ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ฒ์ ์ฒ๋ฆฌ๋ฅผ ํ ๋๋ ๊ฒ์ ๋์ ๋ ์ฝ๋๊ฐ ์๋ฐฑ๋ง์์ ์์ฒ๋ง ๊ฑด์ ๋ฌํ๋ ๊ฒฝ์ฐ๋ ๋ง๋ค. ํ์ง๋ง ๊ฐฑ์ ์ฒ๋ฆฌ๋ฅผ ํ ๋๋ ๊ฐฑ์ ๋์์ด ๋ง์ ๋ดค์ ํธ๋์ญ์
๋ง๋ค ํ ๊ฑด์์ ์๋ง ๊ฑด ์ ๋ ๋ฐ์ ์๋๋ค. (๋ฌผ๋ก ํธ๋์ญ์
๊ท๋ชจ์ ๋ฐ๋ผ์ ๋ค๋ฅผ ์ ๋ ์๋ค) ๋ฐ๋ผ์ ๊ฐฑ์ ์ฒ๋ฆฌ์ ๊ฐ๋น์ผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค๋, ์์ฃผ ๊ฒ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์บ์์ ์ฌ๋ ค๋๋ ๊ฒ์ด ์ข๋ค๊ณ ์๊ฐํ๋ ๊ฒ์ด๋ค.
์ค์ ๋ก ๋ง์ DBMS๊ฐ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ์ ๊ฐ ์๋ค๋ฉด, ๋ฐ์ดํฐ ์บ์๋ฅผ ๋๋๋ก ๋ง์ด ํ ๋นํ ๊ฒ์ ์ถ์ฒํ๊ณ ์๋ค. ๋ง์ฝ ์ฐ๋ฆฌ๊ฐ ๋ง๋๋ ์์คํ
์ด ๊ฒ์์ ๋นํด ๊ฐฑ์ ์ด ๋ง๋ค๋ฉด, ์ด๊ธฐ ์ค์ ์ ๊ทธ๋๋ก ์ฌ์ฉํด์๋ ์ฑ๋ฅ์ด ์ ๋๋ก ๋์ค์ง ์์ ์ ์๋ค. ๊ทธ๋ด ๋๋ ๋ก๊ทธ ๋ฒํผ์ ํฌ๊ธฐ๋ฅผ ๋๋ ค์ฃผ๋ ํ๋(์ต์ ํ)์ด ๋น์ฐํ ํ์ํ๋ค.
๊ฒ์๊ณผ ๊ฐฑ์ ์ค์์ ์ค์ํ ๊ฒ
์ต๊ทผ์ DBMS๋ ๊ฝค ๋ฐ์ ํด์, ๋ฆฌ์์ค๋ฅผ ์๋์ผ๋ก ์กฐ์ ํ๋ ๊ธฐ๋ฅ๋ ๊ฐ์ง๊ณ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ์ฌ์ฉํด ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์ค์ค๋ก ์กฐ์ ํ๋ DBMS๋ ์๋ค. ํ์ง๋ง ์ฌ๊ธฐ์๋ ํ๊ณ๋ ์๋ค. ๊ต์ฅํ ์ค์ํ ๋ฆฌ์์ค ๋ฐฐ๋ถ์ด ํ์ํ ์ํฉ์์ ์๋ฌด ์๊ฐ ์์ด ๋ชจ๋ ๊ฒ์ ์๋ ์ค์ ์ ์์งํ๋ ์ผ์ ๊ต์ฅํ ์ํํ๋ค.
์ผ๋จ ๋ก๊ทธ ๋ฒํผ๊ฐ ํฌ๊ฒ ์กํ์๋ค๋ฉด, ๊ฐฑ์ ์ฒ๋ฆฌ์ ๊ด๋ จ๋์ด ํฐ ๋ถํ๊ฐ ๊ฑธ๋ฆฐ๋ค๋ ๊ฒ์ ์ ์ ์๋ค. ๋ฐ๋๋ก ๋ฐ์ดํฐ ์บ์๊ฐ ํฌ๊ฒ ์กํ์๋ค๋ฉด ๊ฒ์ ์ฒ๋ฆฌ์ ๊ด๋ จ๋ ์ฒ๋ฆฌ๊ฐ ์ค์ฌ์ด๋ผ๋ ๊ฒ์ ์ ์ ์๋ค.
6. ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์์ญ โ์ํน ๋ฉ๋ชจ๋ฆฌโ
์ธ์ ์ฌ์ฉํ ๊น?
์ ๋ ฌ ๋๋ ํด์ ๊ด๋ จ ์ฒ๋ฆฌ์ ์ฌ์ฉ๋๋ ์์
์ฉ ์์ญ์ผ๋ก ์ํน ๋ฉ๋ชจ๋ฆฌ(working memory)๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ ๋ ฌ์ ORDER BY
๊ตฌ, ์งํฉ ์ฐ์ฐ, ์๋์ฐ ํจ์ ๋ฑ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ๋ ์คํ๋๋ค. ๋ฐ๋ฉด ํด์๋ ์ฃผ๋ก ํ
์ด๋ธ ๋ฑ์ ๊ฒฐํฉ์์ ํด์ ๊ฒฐํฉ์ด ์ฌ์ฉ๋๋ ๋ ์คํ๋๋ฉฐ ์ต๊ทผ์๋ GROUP BY
์์๋ ํด์ ์๊ณ ๋ฆฌ์ฆ์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
์ด ์์
์ฉ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ SQL์์ ์ ๋ ฌ ๋๋ ํด์๊ฐ ํ์ํ ๋ ์ฌ์ฉ๋๊ณ , ์ข
๋ฃ๋๋ฉด ํด์ ๋๋ ์์ ์์ญ์ผ๋ก, ์ผ๋ฐ์ ์ผ๋ก๋ ๋ฐ์ดํฐ ์บ์์ ๋ก๊ทธ ๋ฒํผ์๋ ๋ค๋ฅธ ์์ญ์ผ๋ก ๊ด๋ฆฌ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์ด ์์ญ์ด ์ฑ๋ฅ์ ์ผ๋ก ์ค์ํ ์ด์ ๋, ๋ง์ฝ ์ด ์์ญ์ด ๋ค๋ฃจ๋ ค๋ ๋ฐ์ดํฐ์๋ณด๋ค ์์ ๋ถ์กฑํด์ง๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ๋ฉด ๋๋ถ๋ถ์ DBMS๊ฐ ์ ์ฅ์๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ OS ๋์์์ ๋งํ๋ ์ค์๊ณผ ๊ฐ์๊ฒ์ด๋ค.
๋ง์ DBMS๋ ์ํน ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ ๋ ์ฌ์ฉํ๋ ์์์ ์ธ ์์ญ์ ๊ฐ์ง๊ณ ์๋ค.
- Oracle : ์์ ํ
์ด๋ธ ์คํ์ด์ค (TEMP Tablespace)
- Microsoft SQL Server : TEMPDB
- PostgreSQL : ์ผ์ ์์ญ(pgsql_tmp)
์ด๋ฌํ ์ผ์ ์์ญ๋ค์ ์ ์ฅ์ ์์ ์์ผ๋ฏ๋ก ๋น์ฐํ ์ ๊ทผ์๋๊ฐ ๋๋ฆฌ๋ค.
๋ถ์กฑํ๋ฉด ๋ฌด์จ ์ผ์ด ์ผ์ด๋ ๊น?
๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ๋ค๊ณ ์ฒ๋ฆฌ๊ฐ ๋ฉ์ถ๊ฑฐ๋ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ฒ๋ผ ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ ๊ฒ์ ์๋๋ค. ํ์ง๋ง ๋ฉ๋ชจ๋ฆฌ์์ ์๋ํ๊ณ ์์ ๋๋ ๋น ๋ฅด๊ฒ ์์ง์ด๋ค๊ฐ, ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํด์ง๋ ์๊ฐ ๊ฐ์๊ธฐ ๋๋ ค์ง๋ ์๊ฐ์ ์ธ ๋ณํ๊ฐ ์ผ์ด๋๋ ๊ฒ์ด ๋ฌธ์ ์ด๋ค.
๋ํ ์ด ์์ญ์ ์ฌ๋ฌ ๊ฐ์ SQL ๊ตฌ๋ฌธ๋ค์ด ๊ณต์ ํด์ ์ฌ์ฉํ๋ฏ๋ก, ํ๋์ SQL๊ตฌ๋ฌธ์ ์คํํ๊ณ ์์ ๋๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ๋ค์ด๊ฐ์ง๋ง ์ฌ๋ฌ ๊ฐ์ SQL ๊ตฌ๋ฌธ์ ๋์์ ์คํํ๋ฉด ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋์น๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ๋ฐ๋ผ์ ๊ทธ๋ฌํ ์ํฉ์ ์ฌํํ๋ ๊ฒ์ฌ(๋ถํ ๊ฒ์ฌ)๋ฅผ ์ค์ํ์ง ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ํ์์ด ์ผ์ด๋ ์ง ํ๋ณํ๊ธฐ ํ๋ค๋ค. ํ๋๊ฐ ์์ ๋์ ์ฑ์ง๋ฟ๋ง ์๋๋ผ ์ฌ๋ฌ ๊ฐ๊ฐ ์์ ๋์ ์ฑ์ง๋ ์ฃผ์ํด์ผ ํ๋ค๋ ๊ฒ์ ์ปจํธ๋กค ํ๊ธฐ ํ๋ ์ฑ๋ฅ ๋ฌธ์ ์ด๋ค.
ํ์ง๋ง ์ด๋ฅผ ๋ฐ๋๋ก ์๊ฐํ๋ฉด DBMS๋ โ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ๋๋ผ๋ ๋ฌด์ธ๊ฐ๋ฅผ ์ฒ๋ฆฌํ๋ ค๊ณ ๊ณ์ ๋
ธ๋ ฅํ๋ ๋ฏธ๋ค์จ์ดโ๋ผ๊ณ ์๊ฐํ ์ ์๋ค. ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ๋ค๋ ์ด์ ๋ก SQL๊ตฌ๋ฌธ์ ์ค๋ฅ๋ฅผ ์ ๋ ๋ฐ์์ํค์ง ์๋๋ค. ๋น๋ก ๋๋ ค์ง๋ ์ฌ์คํญ์ด ๋ฐ์ํ๋๋ผ๋ ์๊ด์์ผ๋ ์ด๋ป๊ฒ๋ ๋๊น์ง ์ฒ๋ฆฌํ๋ ค ๋
ธ๋ ฅํ๋ค. ์ด๋ DBMS๊ฐ ์ค์ํ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ดํ๊ณ ์ฒ๋ฆฌํ ๋, ์ด์์ฒด์ ์ ๋์ ๊ธ์ผ๋ก ์ฒ๋ฆฌ ๊ณ์์ฑ์ ๋ด๋ณดํ๋ ค ํ๊ธฐ ๋๋ฌธ์ด๋ค.
DBMS์ ์คํ ๊ณํ
1. ๊ถํ ์ด์์ ์ฃ์
C, ์๋ฐ, ๋ฃจ๋น์ ๊ฐ์ ์ ์ฐจ๊ฐ ๊ธฐ์ด๊ฐ ๋๋ ์ธ์ด๋ ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ธฐ ์ํ ์ ์ฐจ(How)๋ฅผ ์ฑ
์์ง๊ณ ๊ธฐ์ ํ๋ ๊ฒ์ด ์ ์ ์ด๋ค. ๋ฐ๋ฉด ๋น ์ ์ฐจ์ ์ธ RDB๋ ๊ทธ๋ฌํ ๋ชจ๋ ์ผ์ ์ฌ์ฉ์๊ฐ ์๋๋ผ ์์คํ
์๊ฒ ๋งก๊ฒผ๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ์๊ฐ ํ๋ ์ผ์ ๋์(What)์ ๊ธฐ์ ํ๋ ๊ฒ์ผ๋ก ์ถ์๋์๋ค.
RDB๊ฐ ์ด๋ ๊ฒ ๋๋ดํ๊ฒ ๊ถํ ์ด์์ ๊ฐํํ ๋ฐ๋ ๋น์ฐํ ์ ๋นํ ์ด์ ๊ฐ ์๋ค. ๋ฐ๋ก โ๊ทธ๋ ๊ฒ ํ๋ ๊ฒ์ด ๋น์ฆ๋์ค ์ ์ฒด์ ์์ฐ์ฑ์ ํฅ์์ํค๊ธฐ ๋๋ฌธโ์ด๋ค. ์ด๋ฌํ ๋ง์ ๋ฐ์ ๋ง๊ณ ๋ฐ์ ํ๋ ธ๋ค. ๋ง๋ค๋ ๊ฒ์ RDB๊ฐ ์์คํ
์ธ๊ณ ๊ณณ๊ณณ์ ์นจํฌํด ์๋ ๊ฒ์ ๋ณด๋ฉด ์ ์ ์๋ค. ๋ฐ๋ฉด, ํ๋ ธ๋ค๋ ๊ฒ์ ์ฌ์ ํ ์ฐ๋ฆฌ๊ฐ RDB๋ฅผ ๋ค๋ฃจ๊ธฐ ์ด๋ ค์ํ๋ค๋ ์ ์ ๋ณด๋ฉด ์ ์ ์๋ค. SQL์ ์ด๊ธฐ์ ์๊ฐํ๋ ๊ฒ์ฒ๋ผ ๊ทธ๋ ๊ฒ ๊ฐ๋จํ ์ธ์ด๊ฐ ์๋๋ค. ๋ํ How๋ฅผ ์์ํ์ง ์๊ณ ์ฌ์ฉํ๋ ๊ฒ ๋๋ฌธ์ ์ฑ๋ฅ ๋ฌธ์ ๋ก ๊ณ ์ํ๋ ๊ฒฝ์ฐ๋ ๊ฝค ์๋ค. RDB๊ฐ ์จ๊ธฐ๊ณ ์๋ ๋ด๋ถ ์ ์ฐจ๋ฅผ ๋ค์ฌ๋ค๋ด์ผ ํ๋ ๊ฒ์ ์ด๋ฌํ ์ด์ ๋๋ฌธ์ด๋ค.
2. ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ์ด๋ป๊ฒ ๊ฒฐ์ ํ ๊น?
RDB์์ ๋ฐ์ดํฐ ์ ๊ทผ ์ ์ฐจ๋ฅผ ๊ฒฐ์ ํ๋ ๋ชจ๋์ ์ฟผ๋ฆฌ ํ๊ฐ ์์ง์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ฟผ๋ฆฌ ํ๊ฐ ์์ง์ ์ฌ์ฉ์๋ก๋ถํฐ ์
๋ ฅ๋ฐ์ SQL๊ตฌ๋ฌธ(์ฟผ๋ฆฌ)์ ์ฒ์ ์ฝ์ด๋ค์ด๋ ๋ชจ๋์ด๊ธฐ๋ ํ๋ค. ์ฟผ๋ฆฌ ํ๊ฐ ๋ชจ๋์ ์ถ๊ฐ๋ก ํ์ ๋๋ ์ตํฐ๋ง์ด์ ์ค ใ
๊ฐ์ ์ฌ๋ฌ ๊ฐ์ ์๋ธ ๋ชจ๋๋ก ๊ตฌ์ฑ๋๋ค.

ํ์(parser)
ํ์์ ์ญํ ์ ์ด๋ฆ ๊ทธ๋๋ก ํ์ค(๊ตฌ๋ฌธ ๋ถ์)ํ๋ ๊ฒ์ด๋ค. ์ฌ์ฉ์๋ก๋ถํฐ ์
๋ ฅ๋ฐ์ SQL ๊ตฌ๋ฌธ์ด ํญ์ ๊ตฌ๋ฌธ์ ์ผ๋ก ์ฌ๋ฐ๋ฅด๋ค๋ ๋ณด์ฆ์ด ์์ผ๋ฏ๋ก ๊ฒ์ฌ๋ฅผ ํด์ฃผ๋ ๊ฒ์ด๋ค. ํ์๋ SQL ๊ตฌ๋ฌธ์ ์ ํ์ ์ธ ํ์์ผ๋ก ๋ณํํด์ค๋ค. ๊ทธ๋ ๊ฒ ํด์ผ DBMS๋ด๋ถ์์ ์ผ์ด๋๋ ํ์ ์ฒ๋ฆฌ๊ฐ ํจ์จํ ๋๋ค.
์ตํฐ๋ง์ด์ (optimizer)
์๋ฅ ์ฌ์ฌ๋ฅผ ํต๊ณผํ ์ฟผ๋ฆฌ๋ ์ตํฐ๋ง์ด์ ๋ก ์ ์ก๋๋ค. ์ตํฐ๋ง์ด์ ๋ โ์ต์ ํโ์ด๋ค. ์ด๋ ์ต์ ํ์ ๋์์ ๋ฐ์ดํฐ ์ ๊ทผ๋ฒ(์คํ ๊ณํ)์ด๋ค. ์ตํฐ๋ง์ด์ ๊ฐ ๋ฐ๋ก DBMS ๋๋์ ํต์ฌ์ด๋ค.
์ตํฐ๋ง์ด์ ๋ ์ธ๋ฑ์ค ์ ๋ฌด, ๋ฐ์ดํฐ ๋ถ์ฐ ๋๋ ํธํฅ ์ ๋, DBMS๋ด๋ถ ๋งค๊ฐ๋ณ์ ๋ฑ์ ์กฐ๊ฑด์ ๊ณ ๋ คํด์, ์ ํ ๊ฐ๋ฅํ ๋ง์ ์คํ ๊ณํ์ ์์ฑํ๊ณ , ์ด๋ค์ ๋น์ฉ์ ์ฐ์ฐํ๊ณ , ๊ฐ์ฅ ๋ฎ์ ๋น์ฉ์ ๊ฐ์ง ์คํ ๊ณํ์ ์ ํํ๋ค.
์ ๊ทผ๋ฒ์ ์๊ฐ ๋ง์ด ๋์จ๋ค๋ฉด ๊ทธ ๋น์ฉ์ ๊ณ์ฐํ๊ณ ๋น๊ตํด์ผ ํ๋ค. RDB๊ฐ ๋ฐ์ดํฐ ์ ๊ทผ์ ์ ์ฐจ ์งํฅ ๊ฒฐ์ ์ ์๋ํํ๋ ์ด์ ๋ ์ด๋ฐ ๊ท์ฐฎ์ ์ผ์ ๊ธฐ๊ณ์ ์ผ๋ก ์ฒ๋ฆฌํด์ฃผ๊ธฐ ์ํด์์ด๋ค.
์นดํ๋ก๊ทธ ๋งค๋์ (catalog manager)
์ตํฐ๋ง์ด์ ๊ฐ ์คํ ๊ณํ์ ์ธ์ธ ๋ ์ตํฐ๋ง์ด์ ์ ์ค์ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด ์นดํ๋ก๊ทธ ๋งค๋์ ์ด๋ค. ์นดํ๋ก๊ทธ๋ DBMS์ ๋ด๋ถ์ ๋ณด๋ฅผ ๋ชจ์๋์ ํ
์ด๋ธ๋ค๋ก, ํ
์ด๋ธ ๋๋ ์ธ๋ฑ์ค์ ํต๊ณ ์ ๋ณด๊ฐ ์ ์ฅ๋์ด ์๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ ์นดํ๋ก๊ทธ ์ ๋ณด๋ฅผ ๊ฐ๋จํ๊ฒ โํต๊ณ ์ ๋ณดโ๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ๋ค.
ํ๋ ํ๊ฐ(plan evaluation)
์ตํฐ๋ง์ด์ ๊ฐ SQL๊ตฌ๋ฌธ์์ ์ฌ๋ฌ๊ฐ์ ์คํ ๊ณํ์ ์ธ์ด ๋ค ๊ทธ๊ฒ์ ๋ฐ์ ์ต์ ์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ์ ํํ๋ ๊ฒ์ด ํ๋ ํ๊ฐ์ด๋ค. ์คํ ๊ณํ์ด๋ผ๋ ๊ฒ์ ๊ณง๋ฐ๋ก DBMS๊ฐ ์คํํ ์ ์๋ ํํ์ ์ฝ๋๊ฐ ์๋๋ค. ์คํ๋ ค ์ธ๊ฐ์ด ์ฝ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด์ง ๋ฌธ์ ๊ทธ๋๋ก์ โ๊ณํ์โ์ด๋ค. ๋ฐ๋ผ์ ์ฑ๋ฅ์ด ์ข์ง ์์ SQL๊ตฌ๋ฌธ์ด ์์ ๋ ์คํ ๊ณํ์ ์ฝ๊ณ , ์์ ๋ฐฉ์๋ฑ์ ๊ณ ๋ คํ ์ ์๋ค.
์ด๋ ๊ฒ ํด์ ํ๋์ ์คํ ๊ณํ์ ์ ํํ๋ฉด, ์ดํ์ DBMS๋ ์คํ ๊ณํ์ ์ ์ฐจ์ ์ธ ์ฝ๋๋ก ๋ณํํ๊ณ ๋ฐ์ดํฐ ์ ๊ทผ์ ์ํํ๋ค.
3. ์ตํฐ๋ง์ด์ ์ ํต๊ณ ์ ๋ณด
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์๋ก์๋ ์ตํฐ๋ง์ด์ ๋ฅผ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ค์ํ๋ค. ์ด์ ๋ ์ตํฐ๋ง์ด์ ๊ฐ ๋ช
๋ นํ๋ ๋๋ก ๋ค ์ ์ฒ๋ฆฌํด์ฃผ๋ ๋ง๋ฅ์ ์๋๊ธฐ ๋๋ฌธ์ด๋ค. ํนํ ์นดํ๋ก๊ทธ ๋งค๋์ ๊ฐ ๊ด๋ฆฌํ๋ ํต๊ณ์ ๋ณด์ ๋ํด์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง๋์ด๊ฐ ํญ์ ์ ๊ฒฝ ์จ์ค์ผ ํ๋ค.
ํ๋ ์ ํ์ ์ตํฐ๋ง์ด์ ์๊ฒ ๋งก๊ธฐ๋ ๊ฒฝ์ฐ, ์ค์ ๋ก ์ต์ ์ ํ๋์ด ์ ํ๋์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๊ฝค ๋ง๋ค. ์ตํฐ๋ง์ด์ ๊ฐ ์คํจํ๋ ํจํด์ด ๋ช๊ฐ์ง์๋๋ฐ ํต๊ณ ์ ๋ณด๊ฐ ๋ถ์กฑํ ๊ฒฝ์ฐ๊ฐ ๋ํ์ ์ธ ์์ธ์ผ๋ก ๊ผฝํ๋ค.
์นดํ๋ก๊ทธ์ ํฌํจ๋์ด ์๋ ํต๊ณ ์ ๋ณด๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ด๋ค.
- ๊ฐ ํ
์ด๋ธ์ ๋ ์ฝ๋ ์
- ๊ฐ ํ
์ด๋ธ์ ํ๋ ์์ ํ๋์ ํฌ๊ธฐ
- ํ๋์ ์นด๋๋๋ฆฌํฐ
- ํ๋๊ฐ์ ํ์คํ ๊ทธ๋จ
- ํ๋ ๋ด๋ถ์ ์๋
NULL
์
- ์ธ๋ฑ์ค ์ ๋ณด
์ด๋ฌํ ์ ๋ณด๋ฅผ ํ์ฉํ์ฌ ์ตํฐ๋ง์ด์ ๋ ์คํ ๊ณํ์ ๋ง๋ ๋ค. ๋ฌธ์ ๊ฐ ์๊ธฐ๋ ๊ฒฝ์ฐ๋ ์ด๋ฌํ ์นดํ๋ก๊ทธ ์ ๋ณด๊ฐ ํ
์ด๋ธ ๋๋ ์ธ๋ฑ์ค์ ์ค์ ์ ์ผ์นํ์ง ์์ ๋์ด๋ค. ํ
์ด๋ธ์ ๋ฐ์ดํฐ ์ฝ์
/๊ฐฑ์ /์ ๊ฑฐ๊ฐ ์ํ๋ ๋ ์นดํ๋ก๊ทธ ์ ๋ณด๊ฐ ๊ฐฑ์ ๋์ง ์๋๋ค๋ฉด, ์ตํฐ๋ง์ด์ ๋ ์ค๋๋ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์คํ ๊ณํ์ ์ธ์ฐ๊ฒ ๋๋ค. ์ตํฐ๋ง์ด์ ๋ ๊ณผ๊ฑฐ ์ ๋ณด ๋ฐ์ ๊ฐ์ง๊ณ ์์ง ์์ผ๋ฏ๋ก ์ด์ฉ ์ ์์ด ์๋ชป๋ ๊ณํ์ ์ธ์ธ ์ ๋ฐ์ ์๋ค.
๊ทน๋จ์ ์ธ ์๋ก, ํ
์ด๋ธ์ ๋ง๋ค๋ฉด ์ผ๋จ ๋ ์ฝ๋ 0๊ฐ์ ์ํ๋ก ์นดํ๋ก๊ทธ ์ ๋ณด๊ฐ ์ ์ฅ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ดํ์ 1์ต ๊ฑด์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฆฌ๊ณ ์นดํ๋ก๊ทธ ์ ๋ณด๋ฅผ ๊ฐฑ์ ํ์ง ์๋๋ค๋ฉด ์ตํฐ๋ง์ด์ ๋ ๋ฐ์ดํฐ 0๊ฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋์ ์์ฑํ๊ฒ ๋๋ค. ์ด๊ฒ์ผ๋ก๋ ์ต์ ์ ํ๋์ ์ ๋ ๊ธฐ๋ํ ์ ์๋ค.
4. ์ต์ ์ ์คํ ๊ณํ์ด ์์ฑ๋๊ฒ ํ๋ ค๋ฉด
ํ
์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ๋ง์ด ๋ฐ๋๋ฉด ์นดํ๋ก๊ทธ์ ํต๊ณ ์ ๋ณด๋ ํจ๊ป ๊ฐฑ์ ํด์ผ ํ๋ค๋ ๊ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง๋์ด์ ์์์ด๋ค. ํต๊ณ ์ ๋ณด ๊ฐฑ์ ์ ๋์ ํ
์ด๋ธ ๋๋ ์ธ๋ฑ์ค์ ํฌ๊ธฐ์ ์์ ๋ฐ๋ผ์ ๋ช์ญ ๋ถ์์ ๋ช์๊ฐ์ด ์์๋๊ธฐ๋ ํ๋, ์คํ ๋น์ฉ์ด ๊ต์ฅํ ๋์ ์์
์ด๋ค ํ์ง๋ง DBMS๊ฐ ์ต์ ์ ํ๋์ ์ ํํ๋ ค๋ฉด ํ์ํ ์กฐ๊ฑด์ด๋ฏ๋ก ๊ฐฑ์ ์์ ์ ํ์คํ๊ฒ ๊ฒํ ํด์ผ ํ๋ค.
exec DBMS_STATS.GATHER_TABLE_STATS(OWNNAME => [์คํค๋ง์ด๋ฆ], TABNAME => [ํ
์ด๋ธ์ด๋ฆ]);
UPDATE STATISTICS [ํ
์ด๋ธ์ด๋ฆ]
RUNSTATS ON TABLE [์คํค๋ง์ด๋ฆ].[ํ
์ด๋ธ์ด๋ฆ];
ANALYZE [์คํค๋ง์ด๋ฆ].[ํ
์ด๋ธ์ด๋ฆ];
ANALYZE TABLE [์คํค๋ง์ด๋ฆ].[ํ
์ด๋ธ์ด๋ฆ];
์คํ ๊ณํ์ด SQL ๊ตฌ๋ฌธ์ ์ฑ๋ฅ์ ๊ฒฐ์
๋ฐ์ดํฐ์์ด ๋ง์ ํ
์ด๋ธ์ ์ ๊ทผํ๊ฑฐ๋ ๋ณต์กํ SQL๊ตฌ๋ฌธ์ ์คํํ๋ฉด ๋ฐ์ ์ง์ฐ์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ๊ฝค ์๋ค. ์ด๋ฏธ ์ต์ ์ ๊ฒฝ๋ก๊ฐ ์ค์ ๋์ด ์๋๋ฐ๋ ๋๋ฆฐ ๊ฒฝ์ฐ๋ ์๋ค. SQL๊ตฌ๋ฌธ์ด ๋๋ฌด ๋ณต์กํ๋ฉด ์ตํฐ๋ง์ด์ ๊ฐ ์ต์ ์ ์ ๊ทผ ๊ฒฝ๋ก๋ฅผ ์ ํํ์ง ๋ชปํ ์๋ ์๋ค.
1. ์คํ ๊ณํ ํ์ธ ๋ฐฉ๋ฒ
์ด๋ฌํ SQL ๊ตฌ๋ฌธ์ ์ง์ฐ์ด ๋ฐ์ํ์ ๋ ์ ์ผ ๋จผ์ ์คํ ๊ณํ์ ์ดํด๋ด์ผ ํ๋ค.
set autotrace traceonly
SET SHOWPLAN_TEXT ON
EXPLAIN ALL WITH SNAPSHOT FOR [SQL๊ตฌ๋ฌธ]
EXPLAIN [SQL๊ตฌ๋ฌธ]
EXPLAIN [SQL๊ตฌ๋ฌธ]
๊ทธ๋ผ ์ง๊ธ๋ถํฐ ๋ค์๊ณผ ๊ฐ์ 3๊ฐ์ ๊ธฐ๋ณธ์ ์ SQL๊ตฌ๋ฌธ์ ์คํ ๊ณํ์ ์ดํด๋ณด๊ฒ ๋ค.
- ํ
์ด๋ธ ํ ์ค์บ(Full Scan)์ ์คํ ๊ณํ
- ์ธ๋ฑ์ค ์ค์บ์ ์คํ ๊ณํ
- ๊ฐ๋จํ ํ
์ด๋ธ ๊ฒฐํฉ์ ์คํ ๊ณํ


์คํ ๊ณํ์ ์ถ๋ ฅ ํฌ๋งท์ด ์์ ํ ๊ฐ์ง๋ ์์ง๋ง ๊ณตํต์ ์ผ๋ก ๋ํ๋๋ ๋ถ๋ถ์ด ์๋ค.
- ์กฐ์ ๋์์ ๊ฐ์ฒด
- ๊ฐ์ฒด์ ๋ํ ์กฐ์์ ์ข
๋ฅ
- ์กฐ์ ๋์์ด ๋๋ ๋ ์ฝ๋ ์
์กฐ์ ๋์ ๊ฐ์ฒด
PostgreSQL
์ on
๋ค์, Oracle
์ Name
ํ๋์, MySQL
์ table
ํ๋์ ์กฐ์ ๋์ ๊ฐ์ฒด (shops, products)๊ฐ ์ถ๋ ฅ๋๋ค. ์ฌ๋ฌ๊ฐ์ ํ
์ด๋ธ์ ์ฌ์ฉํ๋ SQL ๊ตฌ๋ฌธ์์๋ ์ด๋ค ๊ฐ์ฒด๋ฅผ ์กฐ์ํ๋์ง ํผ๋ํ์ง ์๊ฒ ์ฃผ์๊ฐ ํ์ํ๋ค. ๋ํ ์ด ๋ถ๋ถ์ ํ
์ด๋ธ ์ด์ธ์๋ ์ธ๋ฑ์ค, ํํฐ์
, ์ํธ์ค์ฒ๋ผ SQL ๊ตฌ๋ฌธ์ผ๋ก ์กฐ์ ํ ์ ์๋ ๊ฐ์ฒด๋ผ๋ฉด ๋ฌด์์ด๋ผ๋ ์ฌ ์ ์๋ค.
๊ฐ์ฒด์ ๋ํ ์กฐ์์ ์ข
๋ฅ
๊ฐ์ฒด์ ๋ํ ์กฐ์์ ์ข
๋ฅ๋ ์คํ ๊ณํ์์ ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ด๋ค. PostgreSQL
์ ๋ฌธ์ฅ์ ์๋ถ๋ถ์ ๋์ค๋ฉฐ, Oracle
์ Operation
ํ๋๋ก ๋ํ๋๋ฉฐ MySQL
์ type
ํ๋์ ๋ํ๋๋ค. PostgreSQL
์ Seq Scan
์ ์์ฐจ์ ์ธ ์ ๊ทผ (Sequential Scan)์ ์ค์๋ง๋ก โํ์ผ์ ์์ฐจ์ ์ผ๋ก ์ ๊ทผํด์ ํด๋น ํ
์ด๋ธ์ ๋ฐ์ดํฐ ์ ์ฒด๋ฅผ ์ฝ์ด๋ธ๋คโ๋ ์๋ฏธ ์ด๋ค. Oracle
์ TABLE ACCESS FULL
์ ํ
์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ถ ์ฝ์ด ๋ค์ด๋ค๋ ์๋ฏธ์ด๋ค.
์ ๊ทผ ๋ฐฉ์ | ์ค๋ช
|
---|
const | ๊ธฐ๋ณธ ํค ๋๋ ๊ณ ์ ํค์ ์ํ loockup(๋ฑ๊ฐ๋น๊ต), ์กฐ์ธ์ด ์๋ ๊ฐ์ฅ ์ธ๋ถ์ ํ
์ด๋ธ์ ์ ๊ทผ ํ๋ ๋ฐฉ์, ๊ฒฐ๊ณผ๋ ํญ์ 1ํ์ด๋ค. ๋จ ๊ธฐ๋ณธ ํค, ๊ณ ์ ํค๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก ๋ฒ์ ๊ฒ์์ผ๋ก ์ง์ ํ๋ ๊ฒฝ์ฐ const๊ฐ ๋์ง ์๋๋ค |
system | ํ
์ด๋ธ์ 1ํ๋ฐ์ ์๋ ๊ฒฝ์ฐ์ ํน์ํ ์ ๊ทผ ๋ฐฉ์ |
ALL | ์ ์ฒด ํ ์ค์บ, ํ
์ด๋ธ์ ๋ฐ์ดํฐ ์ ์ฒด์ ์ก๊ทผํ๋ค. |
index | ์ธ๋ฑ์ค ์ค์บ, ํ
์ด๋ธ์ ํน์ ์ธ๋ฑ์ค์ ์ ์ฒด ์ํธ๋ฆฌ์ ์ ๊ทผํ๋ค. |
eq_ref | ์กฐ์ธ์ด ๋ด๋ถ ํ
์ด๋ธ๋ก ์ ๊ทผํ ๋ ๊ธฐ๋ณธํค ๋๋ ๊ณต์ ํค์ ์ํ lookup์ด ์ผ์ด๋๋ค. const์ ๋น์ทํ์ง๋ง ์กฐ์ธ์ ๋ด๋ถ ํ
์ด๋ธ์ ์ ๊ทผํ๋ค๋ ์ ์ด ๋ค๋ฅด๋ค |
ref | ๊ณ ์ ํค๊ฐ์๋ ์ธ๋ฑ์ค์ ๋ํ ๋ฑ๊ฐ๋น๊ต, ์ฌ๋ฌ ๊ฐ ํ์ ์ ๊ทผํ ๊ฐ๋ฅ์ฑ์ด ์๋ค. |
ref_or_null | ref์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ธ๋ฑ์ค ์ ๊ทผ ์ ๋งจ ์์ ์ ์ฅ๋์ด ์๋ NULL์ ์ํธ๋ฆฌ๋ฅผ ๊ฒ์ํ๋ค. |
range | ์ธ๋ฑ์ค ํน์ ๋ฒ์์ ํ์ ์ ๊ทผํ๋ค |
fulltext | fulltext ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ๊ฒ์ |
index_merge | ์ฌ๋ฌ ๊ฐ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํด ํ์ ๊ฐ์ ธ์ค๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํตํฉํ๋ค. |
unique_subquery | IN ์๋ธ์ฟผ๋ฆฌ ์ ๊ทผ์์ ๊ธฐ๋ณธ ํค ๋๋ ๊ณ ์ ํค๋ฅผ ์ฌ์ฉํ๋ค. ์ด ๋ฐฉ์์ ์ธ๋ฐ ์๋ ์ค๋ฒํค๋๋ฅผ ์ค์ฌ ์๋นํ ๋น ๋ฅด๋ค. |
index_subquery | unique_sunquery์ ๊ฑฐ์ ๋น์ทํ์ง๋ง ๊ณ ์ ํ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ ์ด ๋ค๋ฅด๋ค. ์ด ์ ๊ทผ ๋ฐฉ์๋ ์๋นํ ๋น ๋ฅด๋ค |
๐ก์คํ ๊ณํ์ ์คํ ๋น์ฉ๊ณผ ์คํ ์๊ฐ
์คํ ๋น์ฉ(Cost)์ด๋ผ๋ ์งํ๋ ํ๊ฐํ๊ธฐ ์กฐ๊ธ ์ด๋ ค์ด ํญ๋ชฉ์ด๋ค. ์ด๋ฆ๋ง ๋ณด๋ฉด ์์ ์๋ก ์ข๋ค๊ณ ์๊ฐํ ์ ์๋ค. ๋ฌผ๋ก ๋๋ถ๋ถ์ ๊ฒฝ์ฐ๋ ๊ทธ๋ ๋ค. ํ์ง๋ง ์ด๋ฅผ ์ ๋ ํ๊ฐ์ ์งํ๋ก ์ฐ๋ ๊ฒ์ ๊ต์ฅํ ๊ณค๋ํ๋ค.
๋ํ Oracle์ด ์ถ๋ ฅํ๋ Timeํ๋๋ ์ด๋๊น์ง๋ ์ถ์ ๋๋ ์คํ ์๊ฐ์ด๋ฏ๋ก, ์ ๋ ์งํ๋ก ์ฌ์ฉํ ์ ์๋ค. ์ด๋ ๊ฒ ์คํ ๊ณํ์ ์ถ๋ ฅ๋๋ ๋น์ฉ ๋๋ ์คํ ์๊ฐ, ์ฒ๋ฆฌ ๋ ์ฝ๋ ์๋ ์ถ์ ๊ฐ์ผ๋ก ์ ๋ ์งํ๋ก ์ฌ์ฉํ๋ฉด ์๋๋ค. ๋ค๋ง ๊ตฌํ์ ๋ฐ๋ผ์๋ ์ค์ ๊ฐ์ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ์ ์ค๋นํ DBMS๋ ์๋ค.
์๋ฅผ ๋ค์ด Oracle์์๋ SQL ๊ตฌ๋ฌธ์ ์คํ ์๊ฐ์ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ(DBMS_XPLAN.DISPLAY_CURSOR
)์ด ์๋๋ฐ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ์กฐ์๋ง๋ค ๊ฑธ๋ฆฐ ์คํ ์๊ฐ์ ์ถ๋ ฅํ ์ ์๋ค. ์๋ฅผ๋ค์ด ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ SQL๊ตฌ๋ฌธ์ ์๋ ๊ทธ๋ฆผ์ฒ๋ผ ์คํ๊ณํ์ด ๋์จ๋ค.

๊ฐ๊ฐ์ ํ๋๋ ๋ค์๊ณผ ๊ฐ์ ์๋ฏธ์ด๋ค.
E-Rows
: ์ถ์ ๋๋ ์กฐ์ ๋ ์ฝ๋ ์
A-Rows
: ์ค์ ์กฐ์ ๋ ์ฝ๋ ์
A-Time
: ์ค์ ์คํ ์๊ฐ
์กฐ์ ๋์์ด ๋๋ ๋ ์ฝ๋ ์
PostgreSQL
, Oracle
, MySQL
๋ชจ๋ Rows
๋ผ๋ ํญ๋ชฉ์ ์ถ๋ ฅ๋๋ค. ๊ฒฐํฉ ๋๋ ์ง์ฝ์ด ํฌํจ๋๋ฉด 1๊ฐ์ SQL๊ตฌ๋ฌธ์ ์คํํด๋ ์ฌ๋ฌ ๊ฐ์ ์กฐ์์ด ์ํ๋๋ค. ๊ทธ๋ฌ๋ฉด ๊ฐ ์กฐ์์์ ์ผ๋ง๋งํผ์ ๋ ์ฝ๋๊ฐ ์ฒ๋ฆฌ๋๋์ง๊ฐ SQL ๊ตฌ๋ฌธ ์ ์ฒด์ ์คํ ๋น์ฉ์ ํ์
ํ๋ ๋ฐ ์ค์ํ ์งํ๊ฐ ๋๋ค.
๋ค๋ง, ์ด ์ซ์์ ๊ด๋ จํด์ ์์ฃผ ์คํด๋ฅผ ์ฌ๋ ๊ฒ์ด ์๋๋ฐ ์ด ์ซ์๋ ์ตํฐ๋ง์ด์ ๊ฐ ์คํ ๊ณํ์ ๋ง๋ค ๋ ์ค๋ช
ํ๋, ์นดํ๋ก๊ทธ ๋งค๋์ ๋ก๋ถํฐ ์ป์ ๊ฐ์ด๋ค. ๋ฐ๋ผ์ ํต๊ณ ์ ๋ณด์์ ํ์
ํ ์ซ์์ด๋ฏ๋ก, ์ค์ SQL๊ตฌ๋ฌธ์ ์คํํ ์์ ์ ํ
์ด๋ธ ๋ ์ฝ๋ ์์ ์ฐจ์ด๊ฐ ์์ ์ ์๋ค.
์๋ฅผ ๋ค์ด Shops ํ
์ด๋ธ์ ๋ชจ๋ ๋ ์ฝ๋๋ฅผ ์ญ์ ํ๊ณ , ์คํ ๊ณํ์ ๋ค์ ๊ฒ์ํ๋ฉด ๋ชจ๋ ๊ทธ๋๋ก 60์ด๋ผ๋ ๊ฐ์ด ์ถ๋ ฅ๋๋ค. ์ด๋ ์ตํฐ๋ง์ด์ ๊ฐ ์ด๋๊น์ง๋ ํต๊ณ๋ผ๋ ๋ฉํ ์ ๋ณด๋ฅผ ๋ฏฟ๊ธฐ ๋๋ฌธ์, ์ค์ ํ
์ด๋ธ์ ์ ๋๋ก ๋ณด์ง ์๋๋ค๋ ์ฆ๊ฑฐ์ด๋ค.
3. ์ธ๋ฑ์ค ์ค์บ์ ์คํ ๊ณํ



์กฐ์ ๋์์ด ๋๋ ๋ ์ฝ๋ ์
์ผ๋จ ๋ชจ๋ DBMS ๋ชจ๋ Rows๊ฐ 1๋ก ๋ฐ๋์๋ค. PostgreSQL
๊ณผ Oracle
์์ WHERE
๊ตฌ์์ ๊ธฐ๋ณธ ํค๊ฐ โ00050โ์ธ ์ ํฌ๋ฅผ ์ง์ ํ์ผ๋ฉฐ MySQL
์์๋ ์ ์ผํ ์ํ์ธ โ๋ฐ๋โ๋ฅผ ์ง์ ํ์ผ๋ฏ๋ก ์ ๊ทผ ๋์์ ๋ฐ๋์ ๋ ์ฝ๋ ํ๋์ด๊ธฐ ๋๋ฌธ์ด๋ค.
์ ๊ทผ ๋์ ๊ฐ์ฒด์ ์กฐ์
PostgreSQL
์์๋ Index Scan
, Oracle
์์๋ INDEX UNIQUE SCAN
, MySQL
์์๋ ref
๋ผ๋ ์กฐ์์ด ๋ํ๋๋ค. ์ด๋ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํด ์ค์บ์ ์ํํ๋ค๋ ๊ฒ์ด๋ค.
Oracle
์์๋ TABLE ACCESS FULL
์ด TABLE ACCESS BY INDEX ROWID
๋ก ๋ฐ๋์๊ณ ์ถ๊ฐ์ ์ผ๋ก ๋ด์ญ์ ๋ณด๋ฉด id=2
์ ๋ ์ฝ๋์ INDEX UNIQUE SCAN
, name
(๋์ ๊ฐ์ฒด)์ PK_SHOPS
๊ฐ ์ถ๋ ฅ๋๋ค. ์ด PK_SHOPS
๋ ๊ธฐ๋ณธ ํค์ ์ธ๋ฑ์ค ์ด๋ฆ์ด๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ค์บํ๋ ๋ชจ์งํฉ ๋ ์ฝ๋ ์์์ ์ ํ๋๋ ๋ ์ฝ๋ ์๊ฐ ์ ๋ค๋ฉด ํ
์ด๋ธ ํ ์ค์บ๋ณด๋ค ๋น ๋ฅด๊ฒ ์ ๊ทผ์ ์ํํ๋ค. ์ด๋ ํ ์ค์บ์ด ๋ชจ์งํฉ์ ๋ฐ์ดํฐ์์ ๋น๋กํด์ ์ฒ๋ฆฌ ๋น์ฉ์ด ๋์ด๋๋ ๊ฒ์ ๋ฐํด, ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ๋ ํ์ฉํ๋ B-tree
๊ฐ ๋ชจ์งํฉ์ ๋ฐ์ดํฐ์์ ๋ฐ๋ผ ๋์ ํจ์์ ์ผ๋ก ์ฒ๋ฆฌ ๋น์ฉ์ด ๋์ด๋๊ธฐ ๋๋ฌธ์ด๋ค.
๊ฐ๋จํ๊ฒ ๋งํด์ ์ธ๋ฑ์ค์ ์ฒ๋ฆฌ ๋น์ฉ์ด ์๋งํ๊ฒ ์ฆ๊ฐํ๋ค๋ ๋ป์ผ๋ก ํน์ ๋ฐ์ดํฐ์(N)์ ์์ต ๋ถ๊ธฐ์ ์ผ๋ก ์ธ๋ฑ์ค ์ค์บ์ด ํ ์ค์บ๋ณด๋ค๋ ํจ์จ์ ์ธ ์ ๊ทผ์ ํ๊ฒ ๋๋ค๋ ๊ฒ์ด๋ค.

4. ๊ฐ๋จํ ํ
์ด๋ธ ๊ฒฐํฉ์ ์คํ ๊ณํ
SQL์์ ์ง์ฐ์ด ์ผ์ด๋๋ ๊ฒฝ์ฐ๋ ๋๋ถ๋ถ ๊ฒฐํฉ๊ณผ ๊ด๋ จ๋ ๊ฒ์ด๋ค. ๊ฒฐํฉ์ ์ฌ์ฉํ๋ฉด ์คํ ๊ณํ์ด ์๋นํ ๋ณต์กํด์ง๋ฏ๋ก, ์ตํฐ๋ง์ด์ ๋ ์ต์ ์ ์คํ ๊ณํ์ ์ธ์ฐ๊ธฐ ์ด๋ ต๋ค.
์ผ๋ฐ์ ์ผ๋ก DBMS๊ฐ ๊ฒฐํฉ์ ํ ๋๋ ์ธ๊ฐ์ง ์ข
๋ฅ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค. ๊ฐ์ฅ ๊ฐ๋จํ ๊ฒฐํฉ ์๊ณ ๋ฆฌ์ฆ์ Nested Loops์ด๋ค. ํ์ชฝ ํ
์ด๋ธ์ ์ฝ์ผ๋ฉด์ ๋ ์ฝ๋ ํ๋๋ง๋ค ๊ฒฐํฉ ์กฐ๊ฑด์ ๋ง๋ ๋ ์ฝ๋๋ฅผ ๋ค๋ฅธ ์ชฝ ํ
์ด๋ธ์์ ์ฐพ๋ ๋ฐฉ์์ด๋ค. ์ ์ฐจ ์งํฅํ ์ธ์ด๋ก ๊ตฌํํ๋ค๋ฉด, ์ด์ค ๋ฐ๋ณต์ผ๋ก ๊ตฌํ๋๋ฏ๋ก ์ค์ฒฉ ๋ฐ๋ณต(Nested Loops)์ด๋ผ๋ ์ด๋ฆ์ด ๋ถ์ ๊ฒ์ด๋ค.
๋๋ฒ์งธ๋ Sort Merge์ด๋ค. ๊ฒฐํฉ ํค๋ก ๋ ์ฝ๋๋ฅผ ์ ๋ ฌํ๊ณ ์์ฐจ์ ์ผ๋ก ๋ ๊ฐ์ ํ
์ด๋ธ์ ๊ฒฐํฉํ๋ ๋ฐฉ๋ฒ์ด๋ค. ๊ฒฐํฉ ์ ์ ์ ์ฒ๋ฆฌ๋ก ์ ๋ ฌ์ ์ํํด์ผํ๋๋ฐ ์ด๋ ์์
์ฉ ๋ฉ๋ชจ๋ฆฌ๋ก ์ํน ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค.
์ธ๋ฒ์งธ๋ Hash์ด๋ค. ๊ฒฐํฉ ํค๋ฅผ ํด์๊ฐ์ผ๋ก ๋งตํํ๋ ๋ฐฉ๋ฒ์ด๋ค. ํด์ ํ
์ด๋ธ์ ๋ง๋ค์ด์ผ ํ๋ฏ๋ก, ๋ง์ฐฌ๊ฐ์ง๋ก ์์
์ฉ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ์๋ก ํ๋ค.


Oracle
์ Operation
ํ๋๋ฅผ ๋ณด๋ฉด NESTED LOOPS
๋ผ๊ณ ๋์ค๋ฏ๋ก ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๊ณ ์๋ ์ฝ๊ฒ ์ ์ ์๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก PostgreSQL
์์๋ Nested Loop
์ด๋ผ๊ณ ๋์ค๋ฉฐ MySQL
์์๋ Extra
ํ๋์ Using join buffer (hash join)์ด๋ผ๊ณ ๋์ค๋ ๊ฑธ๋ก ๋ณด์ Hash
์๊ณ ๋ฆฌ์ฆ์ ์ ํํ๊ณ ์๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
์คํ ๊ณํ์ ์ผ๋ฐ์ ์ผ๋ก ํธ๋ฆฌ ๊ตฌ์กฐ์ด๋ค ์ด๋ ์ค์ฐน ๋จ๊ณ๊ฐ ๊น์ ์๋ก ๋จผ์ ์คํ๋๋ค. PostgreSQL
์ ๊ฒฐ๊ณผ๋ฅผ ์๋ก ์ดํด๋ณด๋ฉด Nested Loop
๋ณด๋ค๋ Seq Scan
๊ณผ Index Scan
์ ๋จ๊ณ๊ฐ ๊น์ผ๋ฏ๋ก ๊ฒฐํฉ ์ ์ ํ
์ด๋ธ ์ ๊ทผ์ด ๋จผ์ ์ํ๋๋ค๋ ๊ฒ์ ์ ์ ์๋ค. ์ด๋ ๊ฒฐํฉ์ ๊ฒฝ์ฐ ์ด๋ค ํ
์ด๋ธ์ ๋จผ์ ์ ๊ทผํ๋์ง๊ฐ ๊ต์ฅํ ์ค์ํ ์๋ฏธ๋ฅผ ๊ฐ๋๋ฐ ๊ฐ์ ์ค์ฒฉ ๋จ๊ณ์์๋ ์์์ ์๋๋ก ์คํํ๋ค๋ ๋ป์ด๋ค.
์๋ฅผ ๋ค์ด์ PostgreSQL
๊ณผ Oracle
๋ชจ๋ Reservation
ํ
์ด๋ธ๊ณผ Shop
ํ
์ด๋ธ ์ ๊ทผ์ด ๊ฐ์ ์ค์ฒฉ ๋จ๊ณ์ ์์ง๋ง Reservation
ํ
์ด๋ธ์ ๋ํ ์ ๊ทผ์ด ์์ ์์ผ๋ฏ๋ก Reservation
ํ
์ด๋ธ์ ๋ํ ์ ๊ทผ์ด ๋จผ์ ์ผ์ด๋๋ค๋ ๊ฒ์ ์ ์ ์๋ค. (MySQL
์ ์ฌ๊ณ ์
ํ
์ด๋ธ์ ๋จผ์ ์ ๊ทผํ๋ค.)
๐ก์ด๋ ๋จผ์ ์ ๊ทผํ๋ ํ
์ด๋ธ์ ๊ตฌ๋ ํ
์ด๋ธ (Driving table)์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์คํ ๊ณํ์ ์ค์์ฑ
์ตํฐ๋ง์ด์ ๊ฐ ์ข์ ๊ฒ์ผ๋ก ์ฌ๊ฒจ ์ ํํ ์คํ ๊ณํ์ด ์ฐธ๋ดํ ์ฑ๋ฅ์ ๋ง๋ค์ด๋ด๋ ๊ฒฝ์ฐ๋ ๋ง๋ค ๋ํ ๊ทธ๋ฌํ ๋ณต์กํ ๋ฌธ์ ์ด์ ์ ์ตํฐ๋ง์ด์ ์๊ฒ ์ ๋ณด๋ฅผ ์ ๋๋ก ์ฃผ์ง ๋ชปํ๋ ๋ฌธ์ ๋ ๋์ฌ ์ ์๋ค. ์๋ฅผ ๋ค์ด ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํด์ผ ๋นจ๋ผ์ง๋ ๋ถ๋ถ์ธ๋ฐ ์ฌ์ฉํ์ง ์๊ฑฐ๋. ํ
์ด๋ธ ๊ฒฐํฉ ์์๋ฅผ ์ด์ํ๊ฒ ์ ๋ ์ค์๋ฅผ ํ ์๋ ์๋ค.
์ด๋ฐ ๊ฒฝ์ฐ์๋ ์ตํ์ ํ๋ ์๋จ์ ์ฌ์ฉํด์ผ ํ๋ค. ๋ฐ๋ก ์คํ ๊ณํ์ ์๋์ผ๋ก ๋ณ๊ฒฝํด ์ฃผ๋ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด์ Oracle, MySQL๋ฑ์ด ๊ฐ์ง๊ณ ์๋ ํํธ ๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด SQL ๊ตฌ๋ฌธ์์ ์ตํฐ๋ง์ด์ ์๊ฒ ๊ฐ์ ์ ์ผ๋ก ๋ช
๋ นํ ์ ์๋ค.
๊ทธ๋ฐ๋ฐ ์คํ ๊ณํ์ ๋ณ๊ฒฝํ๋ ค๋ฉด ์ด๋ค ์ ํ์ง๊ฐ ์๋์ง๋ฅผ ์์์ผ ํ๋ค. ๋ฐ๋ผ์ ์ด๋ค ๊ธฐ๋ฅ์ ๋ํด ์ด๋ ํ ์ ํ์ง๋ค์ด ์๋ ๋ฐฉ๋ฒ์ ์์๋ณผ ๊ฒ์ด๋ค. ํ์ง๋ง ๊ทธ ์ ์ SQL ๊ตฌ๋ฌธ๊ณผ ๊ทธ๋ฌํ SQL๊ตฌ๋ฌธ๋ค์ด ์ด๋ ํ ์ ๊ทผ ๊ฒฝ๋ก(Access path)๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋์ง ์๋์ง๊ฐ ๋จผ์ ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋๋ก ๋ SQL ๊ตฌ๋ฌธ์ ์์ฑํ๋ ค๋ฉด ์ด๋ค ํ
์ด๋ธ ์ค์ ์ด ํจ์จ์ ์ธ์ง ์์์ผ ํ๋ฉฐ, ์ด๋ค SQL ๊ตฌ๋ฌธ์ด ์ฃผ์ด์ก์ ๋ ์ด๋ ํ ์คํ ๊ณํ์ด ๋์ฌ์ง ์์ธกํ ์๋ ์์ด์ผ ํ๋ค.
์ ๋ฆฌ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ค์ํ ํธ๋ ์ด๋์คํ์ ๊ท ํ์ ์ก์ผ๋ ค๋ ๋ฏธ๋ค์จ์ด
- ํนํ ์ฑ๋ฅ์ ์ธ ๊ด์ ์์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์์ ์ ์ฅ์(๋์คํฌ)์ ๊ณ ์์ ๋ฉ๋ชจ๋ฆฌ ์ค์ ์ด๋์ ์์น์ํฌ์ง์ ํธ๋ ์ด๋์คํ๊ฐ ์ค์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ฐฑ์ ๋ณด๋ค๋ ๊ฒ์๊ณผ ๊ด๋ จ๋ ๊ฒ์ ๋น์ค์ ๋๋๋ก ๊ธฐ๋ณธ ์ค์ ๋์ด ์์ง๋ง, ์ค์ ์์คํ
์์๋ ๊ทธ๋ด์ง๋ ํ๋จ์ด ํ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ SQL์ ์คํ ๊ฐ๋ฅํ ์ ์ฐจ๋ก ๋ณํํ๊ณ ์ ์คํ ๊ณํ์ ๋ง๋ฆ
- ์ฌ์ค ์ฌ์ฉ์๊ฐ ์คํ ๊ณํ์ ์ฝ๋๋ค๋ ๊ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด์์ ์ด๊ธฐ๋ ์ผ์ด์ง๋ง, ์ธ์ ๋ชจ๋ ๊ฒ์ด ์ด์์ ์ผ๋ก ๋์๊ฐ์ง๋ ์์