๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

RDB๐Ÿ—‚๏ธ/์ธํ”„๋Ÿฐ : SQLD ์ž๊ฒฉ์ฆ ๋”ฐ๊ธฐ

SQL ๊ฐœ๋ฐœ์ž (SQLD) ์ž๊ฒฉ์ฆ ๋”ฐ๊ธฐ Part.3 ์„น์…˜ 1.

728x90

SQL ์ตœ์ ํ™”์˜ ์›๋ฆฌ

SQLD์—์„œ๋Š” 2~3๋ฌธ์ œ ์ถœ์ œ๋˜๋Š” ๋น„๊ต์  ๋น„์ค‘์ด ๋‚ฎ์€ ๋ฌธ์ œ(SQLP์—์„œ ๋” ์ค‘์š”ํ•˜๊ฒŒ ๋ณธ๋‹ค)

 

1. ์˜ตํ‹ฐ๋งˆ์ด์ €

- SQL ๊ฐœ๋ฐœ์ž๊ฐ€ SQL์„ ์ž‘์„ฑํ•˜์—ฌ ์‹คํ–‰ํ•  ๋•Œ, ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” SQL์„ ์–ด๋–ป๊ฒŒ ์‹คํ–‰ํ•  ๊ฒƒ์ธ์ง€ ๊ณ„ํšํ•˜๊ฒŒ ๋œ๋‹ค. ~ SQL ์‹คํ–‰ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•˜๊ณ  SQL์„ ์‹คํ–‰ํ•œ๋‹ค

- ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” SQL์˜ ์‹คํ–‰ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•˜๊ณ  SQL์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์‹œ์Šคํ…œ์˜ ์†Œํ”„ํŠธ์›จ์–ด์ด๋‹ค

- ๋™์ผํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š” SQL๋„ ์–ด๋–ป๊ฒŒ ์ˆ˜ํ–‰ํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ ์„ฑ๋Šฅ์ด ๋‹ฌ๋ผ์ง„๋‹ค. ๋”ฐ๋ผ์„œ ์˜ตํ‹ฐ๋งˆ์ด์ €์˜ ์‹คํ–‰ ๊ณ„ํš์€ SQL ์„ฑ๋Šฅ์— ์•„์ฃผ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค.

1) ํŠน์ง•

- ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” ๋ฐ์ดํ„ฐ ๋”•์…”๋„ˆ๋ฆฌ์— ์žˆ๋Š” ์˜ค๋ธŒ์ ํŠธ ํ†ต๊ณ„, ์‹œ์Šคํ…œ ํ†ต๊ณ„ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•ด ์˜ˆ์ƒ๋˜๋Š” ๋น„์šฉ์„ ์‚ฐ์ •

- ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์‹คํ–‰ ๊ณ„ํš ์ค‘ ์ตœ์ €๋น„์šฉ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ณ„ํš์„ ์„ ํƒํ•ด SQL์„ ์‹คํ–‰

 

SQL ์‹คํ–‰๊ตฌ์กฐ

~ AND ์—ฐ์‚ฐ์ผ๋•Œ ์ž‘์€ ํ…Œ์ด๋ธ”์„ ๋จผ์ € ์ฝ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์€ ์กฐํšŒ ์†๋„๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค

2) ์˜ตํ‹ฐ๋งˆ์ด์ €์˜ ์‹คํ–‰๊ณ„ํš ํ™•์ธ

- ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” SQL ์‹คํ–‰ ๊ณ„ํš์„ PLAN_TABLE์— ์ €์žฅํ•œ๋‹ค

SQL Developer ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” F10์œผ๋กœ ์‹คํ–‰๊ณ„ํš ํ™•์ธ๊ฐ€๋Šฅ

 

2. ์˜ตํ‹ฐ๋งˆ์ด์ € ์ข…๋ฅ˜

1) ์‹คํ–‰ ๋ฐฉ๋ฒ•

- SQL์„ ์‹คํ–‰ํ•˜๋ฉด ํŒŒ์‹ฑ์„ ์‹คํ–‰ํ•ด์„œ SQL์˜ ๋ฌธ๋ฒ• ๊ฒ€์‚ฌ ๋ฐ ๊ตฌ๋ฌธ๋ถ„์„์„ ์ˆ˜ํ–‰

- ๊ตฌ๋ฌธ ๋ถ„์„์ด ์™„๋ฃŒ๋˜๋ฉด ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ๊ทœ์น™ ๊ธฐ๋ฐ˜ ๋˜๋Š” ๋น„์šฉ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹คํ–‰ ๊ณ„ํš ์ˆ˜๋ฆฝ

- ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„์šฉ ๊ธฐ๋ฐ˜ ์˜ตํ‹ฐ๋งˆ์ด์ €๋ฅผ ์‚ฌ์šฉํ•ด ์‹คํ–‰ ๊ณ„ํš ์ˆ˜๋ฆฝ. ๋น„์šฉ ๊ธฐ๋ฐ˜ ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” ํ†ต๊ณ„ ์ •๋ณด๋ฅผ ํ™œ์šฉํ•ด ์ตœ์ ์˜ ์‹คํ–‰ ๊ณ„ํš์„ ์ˆ˜๋ฆฝ

- ์‹คํ–‰ ๊ณ„ํš ์ˆ˜๋ฆฝ์ด ์™„๋ฃŒ๋˜๋ฉด ์ตœ์ข…์ ์œผ๋กœ SQL์„ ์‹คํ–‰ํ•˜๊ณ  ์‹คํ–‰์ด ์™„๋ฃŒ๋˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ธ์ถœํ•œ๋‹ค

 

cf) ์˜ตํ‹ฐ๋งˆ์ด์ € ์—”์ง„

์ฟผ๋ฆฌ ํŠธ๋žœ์Šคํฌ๋จธ : SQL๋ฌธ์„ ํšจ์œจ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ๋ณ€ํ™˜ํ•œ๋‹ค. SQL์ด ๋ณ€ํ™˜๋˜์–ด๋„ ๊ฒฐ๊ณผ ๋™์ผ

Estimator : ํ†ต๊ณ„์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•ด SQL ์‹คํ–‰ ๋น„์šฉ์„ ๊ณ„์‚ฐํ•œ๋‹ค. ์ด ๋น„์šฉ์€ ์ตœ์ ์˜ ์‹คํ–‰ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•˜๋‹ค

Pan Ganerator : SQL ์‹คํ–‰ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•œ๋‹ค

 

- ๊ทœ์น™ ๊ธฐ๋ฐ˜ ์˜ตํ‹ฐ๋งˆ์ด์ € vs ๋น„์šฉ ๊ธฐ๋ฐ˜ ์˜ตํ‹ฐ๋งˆ์ด์ €

- ์ตœ์‹  ์˜ค๋ผํด ๋ฒ„์ „์€ ๊ทœ์น™ ๊ธฐ๋ฐ˜ ์˜ตํ‹ฐ๋งˆ์ด์ €๋ณด๋‹ค ๋น„์šฉ ๊ธฐ๋ฐ˜ ์˜ตํ‹ฐ๋งˆ์ด์ €๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค

cf) ์šฐ์„ ์ˆœ์œ„ 1 : ROWID๋ฅผ ์‚ฌ์šฉํ•œ 1๊ฐœ ํ–‰/ ์šฐ์„ ์ˆœ์œ„ 15 : ์ „์ฒด ํ…Œ์ด๋ธ” Full Scan

๋น„์šฉ ๊ธฐ๋ฐ˜ ์˜ตํ‹ฐ๋งˆ์ด์ €

- ๋น„์šฉ ๊ธฐ๋ฐ˜ ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” ์˜ค๋ธŒ์ ํŠธ ํ†ต๊ณ„ ๋ฐ ์‹œ์Šคํ…œ ํ†ต๊ณ„๋ฅผ ์‚ฌ์šฉํ•ด ์ด ๋น„์šฉ์„ ๊ณ„์‚ฐ

- ์ด ๋น„์šฉ์€ SQL์„ ์‹œํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์˜ˆ์ƒ๋˜๋Š” ์†Œ์š”์‹œ๊ฐ„ ๋˜๋Š” ์ž์›์˜ ์‚ฌ์šฉ๋Ÿ‰์„ ์˜๋ฏธ

- ์ด ๋น„์šฉ์ด ์ ์€ ์ชฝ์œผ๋กœ ์‹คํ–‰ ๊ณ„ํš์„ ์ˆ˜๋ฆฝ

- ๋น„์šฉ ๊ธฐ๋ฐ˜ ์˜ตํ‹ฐ๋งˆ์ด์ €์—์„œ ํ†ต๊ณ„ ์ •๋ณด๊ฐ€ ๋ถ€์ ์ ˆํ•œ ๊ฒฝ์šฐ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค

3. ์ธ๋ฑ์Šค

- ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค

- ์ธ๋ฑ์Šค๋Š” ์ธ๋ฑ์Šค ํ‚ค๋กœ ์ •๋ ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค

- ์ธ๋ฑ์Šค๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ ๋ฐ ๋‚ด๋ฆผ์ฐจ์ˆœ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค

- ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์— ์—ฌ๋Ÿฌ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ณ  ํ•˜๋‚˜์˜ ์ธ๋ฑ์Šค๋Š” ์—ฌ๋Ÿฌ ์นผ๋Ÿผ์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค

- ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ๋•Œ ๊ธฐ๋ณธ ํ‚ค๋Š” ์ž๋™์œผ๋กœ ์ธ๋ฑ์Šค๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  ์ธ๋ฑ์Šค์˜ ์ด๋ฆ„์€ SYSXXXX์ด๋‹ค

- ์ธ๋ฑ์Šค์˜ ๊ตฌ์กฐ๋Š” Root Block, Branch Block, Leaf Block์œผ๋กœ ๊ตฌ์„ฑ๋˜๊ณ  Root Block์€ ์ธ๋ฑ์Šค ํŠธ๋ฆฌ์—์„œ ๊ฐ€์žฅ ์ƒ์œ„ ๋…ธ๋“œ์ด๋ฉฐ Branch Block์€ ๋‹ค์Œ ๋‹จ๊ณ„์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ํฌ์ธํ„ฐ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค

- Leaf Block์€ ์ธ๋ฑ์Šค ํ‚ค์™€ ROWID๋กœ ๊ตฌ์„ฑ๋˜๊ณ  ์ธ๋ฑ์Šค ํ‚ค๋Š” ์ •๋ ฌ๋˜์–ด ์ €์žฅ๋˜์–ด ์žˆ๋‹ค

- Leaf Block์€ Double Linked LIst๋กœ ๊ตฌ์„ฑ๋˜์–ด ์–‘๋ฐฉํ–ฅ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค

- Leaf Block์—์„œ ์ธ๋ฑ์Šค ํ‚ค๋ฅผ ์ฝ์œผ๋ฉด ROWID๋ฅผ ์‚ฌ์šฉํ•ด EMP ํ…Œ์ด๋ธ”์˜ ํ–‰์„ ์ง์ ‘ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค

1) ์ธ๋ฑ์Šค ์Šค์บ”

(1) ์ธ๋ฑ์Šค ์œ ์ผ ์Šค์บ”

- INDEX UNIQUE SCAN์€ ์ธ๋ฑ์Šค์˜ ํ‚ค ๊ฐ’์ด ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ํ•ด๋‹น ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒ๋œ๋‹ค

(2) ์ธ๋ฑ์Šค ๋ฒ”์œ„ ์Šค์บ”

- SELECT๋ฌธ์—์„œ ํŠน์ • ๋ฒ”์œ„๋ฅผ ์กฐํšŒํ•˜๋Š” WHERE๋ฌธ์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋ฐœ์ƒ

- ๋ฐ์ดํ„ฐ ์–‘์ด ์ž‘์€ ๊ฒฝ์šฐ TABLE FULL SCAN๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค

- INDEX RANGE SCAN์€ ์ธ๋ฑ์Šค์˜ LEAF BLOCK์˜ ํŠน์ • ๋ฒ”์œ„๋ฅผ ์Šค์บ”ํ•œ ๊ฒƒ์ด๋‹ค(๊ด€๊ณ„ ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ)

(3) ์ธ๋ฑ์Šค ์ „์ฒด ์Šค์บ”

- ์ธ๋ฑ์Šค FULL SCAN์€ ์ธ๋ฑ์Šค์—์„œ ๊ฒ€์ƒ‰๋˜๋Š” ์ธ๋ฑ์Šค ํ‚ค๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ LEAF BLOCK์˜ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ „์ฒด๋ฅผ ์ฝ์–ด ๋“ค์ธ๋‹ค

 INDEX RANGE SCAN์€ ์ธ๋ฑ์Šค์˜ LEAF BLOCK์˜ ์ „์ฒด ๋ฒ”์œ„๋ฅผ ์Šค์บ”ํ•œ ๊ฒƒ์ด๋‹ค

4. ์‹คํ–‰๊ณ„ํš : ์˜ตํ‹ฐ๋งˆ์ด์ €์— ์˜ํ•ด ์‹คํ–‰๊ณ„ํš์ด ์ •ํ•ด์ง€๊ณ  ๋ชจ๋‘ ๋˜‘๊ฐ™์ด ์Šค์บ”ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค

5. ์˜ตํ‹ฐ๋งˆ์ด์ € ์กฐ์ธ

1) Nested Loop ์กฐ์ธ

- ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ์ฐพ๊ณ  ๊ทธ ๋‹ค์Œ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•˜๋Š” ๋ฐฉ์‹

- ๋จผ์ € ์กฐํšŒ๋˜๋Š” ํ…Œ์ด๋ธ”์„ ์™ธ๋ถ€ ํ…Œ์ด๋ธ”์ด๋ผ๊ณ  ํ•˜๊ณ  ๊ทธ ์™ธ์—๋Š” ๋‚ด๋ถ€ ํ…Œ์ด๋ธ”์ด๋ผ๊ณ  ํ•œ๋‹ค

- ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ์™ธ๋ถ€ ํ…Œ์ด๋ธ”์„ ์ฐพ๋Š” ๊ฒƒ์ด ์ค‘์š” ~ ๋ฐ์ดํ„ฐ ์Šค์บ” ๋ฒ”์œ„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค

- Nested Loop ์กฐ์ธ์€ Random Access๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ๋ฐœ์ƒํ•˜๋Š” ์–‘์„ ์ค„์ด๋Š” ๊ฒƒ์ด ๊ด€๊ฑด์ด๋‹ค

2) Sort Merge ์กฐ์ธ

- ํ•˜๋‚˜์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ๋ถˆ๋Ÿฌ์˜จ ๋‹ค์Œ ์ •๋ ฌ ์ˆ˜ํ–‰ ํ›„ ํ…Œ์ด๋ธ”์„ ๋ณ‘ํ•ฉ, ๋ฐ์ดํ„ฐ ์–‘์ด ๋งŽ์œผ๋ฉด ์ •๋ ฌ๋กœ ์ธํ•œ ์„ฑ๋Šฅ ์ €ํ•˜ ๋ฐœ์ƒ

- ์ •๋ ฌ ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ๋งŽ์œผ๋ฉด ์ •๋ ฌ์€ ์ž„์‹œ ์˜์—ญ์—์„œ ์ˆ˜ํ–‰๋œ๋‹ค. ์ž„์‹œ ์˜์—ญ์€ ๋””์Šคํฌ์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์ด ๊ธ‰๊ฒฉํ•˜๊ฒŒ ๋–จ์–ด์ง„๋‹ค

3) Hash ์กฐ์ธ

- ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ” ์ค‘ ์ž‘์€ ํ…Œ์ด๋ธ”์„ Hash ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋”ฉํ•˜๊ณ  ์กฐ์ธ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด ๋‘ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•œ ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•œ๋‹ค

- Hash ์กฐ์ธ์€ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์ฃผ์†Œ๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ํ•ด๋‹น ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•ด ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•˜๊ธฐ ๋•Œ๋ฌธ์— CPU ์—ฐ์‚ฐ์„ ๋งŽ์ด ํ•œ๋‹ค

- ํŠนํžˆ ํ•ด์‹œ ์กฐ์ธ ์‹œ ์„ ํ–‰ ํ…Œ์ด๋ธ”์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ถฉ๋ถ„ํžˆ ๋กœ๋”ฉ๋  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค

 

728x90