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 ์ฟผ๋ฆฌ๊ฐ€ ํŒŒ์‹ฑ๋˜์–ด ๊ตฌ๋ฌธ ๋ถ„์„ ํŠธ๋ฆฌ๋กœ ๋ณ€ํ™˜๋œ๋‹ค. ์—ฌ๊ธฐ์„œ ์ฟผ๋ฆฌ์˜ ๋ฌธ๋ฒ•์„ ์ฒดํฌํ•œ๋‹ค.

Parser + Lexer ๊ฐ€ ํ•ฉ์ณ์ ธ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ข‹์„ ๋“ฏ ํ•˜๋‹ค.

Optimization

์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ๋‹ค์–‘ํ•œ ์‹คํ–‰ ๊ณ„ํš์„ ์ƒ์„ฑํ•˜๊ณ , ๊ทธ ์ค‘ ๊ฐ€์žฅ Cost ๊ฐ€ ๋‚ฎ์€ ๊ณ„ํš์„ ์„ ํƒํ•œ๋‹ค.

Execution

์„ ํƒ๋œ ์‹คํ–‰ ๊ฒŒํš์— ๋”ฐ๋ผ ์ฟผ๋ฆฌ๊ฐ€ ์‹ค์ œ๋กœ ์‹คํ–‰๋œ๋‹ค.


MySQL ์—์„œ๋Š” EXPLAIN , PostgreSQL ์—์„œ๋Š” EXPLAIN, ANALYZE ๋“ฑ์„ ์‚ฌ์šฉํ•ด์„œ ์‹คํ–‰ ๊ณ„ํš, ์‹คํ–‰ ์‹œ๊ฐ„ ๋“ฑ์„ ์กฐํšŒํ•˜๊ณ  ๋ถ„์„ํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์‹คํ–‰ ๊ณ„ํš์„ ๋ถ„์„ํ•  ๋•Œ์—๋Š” ์ „์ฒด ๋น„์šฉ, ์‚ฌ์šฉ๋œ ์ธ๋ฑ์Šค, ์กฐ์ธ ์ˆœ์„œ๊ฐ€ ์ ์ ˆํ•œ์ง€, ํ•„ํ„ฐ ์กฐ๊ฑด์ด ์•Œ๋งž๊ฒŒ ์ ์šฉ๋˜๊ณ  ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.

Last updated