DB Query plan
Query plan
DB ์คํ๊ฒํ์ DBMS ์์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ธฐ ์ํด ์ ํ๋๋ ์คํ ์ ๋ต์ ์๋ฏธํ๋ค.
์คํ ๊ณํ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ฟผ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ํํ ๋จ๊ณ๋ค์ ์์๋ฅผ ๋ํ๋ด๋ฉฐ, ์ฟผ๋ฆฌ ์ฑ๋ฅ ์ต์ ํ์ ์ค์ํ ์ญํ ์ ํ๋ค.
์คํ๊ณํ์ ์ดํดํ๊ณ ๋ถ์์ด ๊ฐ๋ฅํ๋ค๋ฉด, ํจ์จ์ ์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ํ๋ํ๊ณ ์ฑ๋ฅ์ ๊ฐ์ ํ ์ ์๋ค.
์๋๋ ์ฃผ ์์๋ค์ ๋ํด์ ๊ฐ๋จํ ์ค๋ช .
์ฃผ์์
์ฐ์ฐ์(Operator)
์ฐ์ฐ์๋ ์ฟผ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ์์ ๋จ์์ด๋ค. Scan, Join, ์งํฉ ์ฐ์ฐ(Set Operation) ๋ฑ์ด ํฌํจ๋๋ค.
Table Scan: ํ ์ด๋ธ์ ๋ชจ๋ ํ์ ์ฝ๋๋ค.
Index Scan: ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํด์ ํ ์ด๋ธ์ ํน์ ํ์ ์ฝ๋๋ค.
Join: ๋ ๊ฐ ์ด์์ ํ ์ด๋ธ์ ๊ฒฐํฉํ๋ค.
๋น์ฉ(Cost)
ํน์ ์ฐ์ฐ์ ์ํํ๋๋ฐ ํ์ํ ์์ ์์์ ๋ํ๋ธ๋ค.
์ฌ๊ธฐ์๋ CPU ์ฌ์ฉ๋, ๋์คํฌ I/O, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ๋ฑ์ด ํฌํจ๋๋ค. ๋น์ฉ์ ์ตํฐ๋ง์ด์ ๊ฐ ์ต์ ์ ์คํ ๊ณํ์ ์ ํํ๋๋ฐ ์ค์ํ ๊ธฐ์ค์ด๋ค.
์นด๋๋๋ฆฌํฐ(Cardinality)
"์งํฉ์ ํฌ๊ธฐ" ๋ผ๊ณ ํ๋๊ฒ๋ณด๋ค ๋จ์ด ๊ทธ๋๋ก ์นด๋๋๋ฆฌํฐ๋ผ๊ณ ๋ง์ด๋ค ๋ถ๋ฅด๋ ๋ฏ ํ๋ค.
ํน์ ์ฐ์ฐ ํ ๊ฒฐ๊ณผ ์งํฉ์ ์์ ํ ์๋ฅผ ๋ํ๋ธ๋ค.
์์ (Order)
์ฟผ๋ฆฌ ์คํ์ ์ฐ์ฐ์ด ์ํ๋๋ ์์๋ฅผ ๋ํ๋ธ๋ค. ์ด๋ ์ฟผ๋ฆฌ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น๋ ์ค์ํ ์์์ด๋ค.
์คํ๊ณํ ์์ฑ ๊ณผ์
Parsing
SQL ์ฟผ๋ฆฌ๊ฐ ํ์ฑ๋์ด ๊ตฌ๋ฌธ ๋ถ์ ํธ๋ฆฌ๋ก ๋ณํ๋๋ค. ์ฌ๊ธฐ์ ์ฟผ๋ฆฌ์ ๋ฌธ๋ฒ์ ์ฒดํฌํ๋ค.
Optimization
์ตํฐ๋ง์ด์ ๊ฐ ๋ค์ํ ์คํ ๊ณํ์ ์์ฑํ๊ณ , ๊ทธ ์ค ๊ฐ์ฅ Cost ๊ฐ ๋ฎ์ ๊ณํ์ ์ ํํ๋ค.
Execution
์ ํ๋ ์คํ ๊ฒํ์ ๋ฐ๋ผ ์ฟผ๋ฆฌ๊ฐ ์ค์ ๋ก ์คํ๋๋ค.
MySQL ์์๋ EXPLAIN , PostgreSQL ์์๋ EXPLAIN, ANALYZE ๋ฑ์ ์ฌ์ฉํด์ ์คํ ๊ณํ, ์คํ ์๊ฐ ๋ฑ์ ์กฐํํ๊ณ ๋ถ์ํด๋ณผ ์ ์๋ค.
์คํ ๊ณํ์ ๋ถ์ํ ๋์๋ ์ ์ฒด ๋น์ฉ, ์ฌ์ฉ๋ ์ธ๋ฑ์ค, ์กฐ์ธ ์์๊ฐ ์ ์ ํ์ง, ํํฐ ์กฐ๊ฑด์ด ์๋ง๊ฒ ์ ์ฉ๋๊ณ ์๋์ง๋ฅผ ํ์ธํด์ผ ํ๋ค.
Last updated