SlideShare a Scribd company logo
1 of 19
Download to read offline
QUERY OPTIMIZER
Created by Jongwon
SQL PROCESSING
SQL PARSING
๊ตฌ๋ฌธ๋ถ„์„์ด๋ผ๊ณ  ํ•˜๋ฉฐ
๋‹ค๋ฅธ ๋ฃจํ‹ด์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋กœ
SQL์„ ๋ถ€๋ถ„์œผ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ํฌํ•จํ•œ๋‹ค.
Syntax Check
Semantic Check
Shared Pool Check
SYNTAX CHECK
๋‹ค์Œ ์˜ค๋ฅ˜๋Š” Syntax Check๋ฅผ ์‹คํŒจํ•œ ํ™”๋ฉด์ž…๋‹ˆ๋‹ค.
SQL ๋ฌธ์žฅ ์ž์ฒด์—์„œ ๊ตฌ๋ฌธ์„ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š”์ง€ ์ฒดํฌํ•ฉ๋‹ˆ๋‹ค.
์œ„ ์˜ค๋ฅ˜๋Š” ์˜ˆ์ƒํ•œ ์œ„์น˜์— ํ‚ค์›Œ๋“œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์–ด์„œ ๋ฐœ์ƒํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
SEMANTIC CHECK
๋‹ค์Œ ์˜ค๋ฅ˜๋Š” Semantic Check๋ฅผ ์‹คํŒจํ•œ ํ™”๋ฉด์ž…๋‹ˆ๋‹ค.
๊ฐ ๋‚˜๋ˆ„์–ด์ง„ ๊ตฌ๋ฌธ์—์„œ์˜ ์˜๋ฏธ๋ฅผ ์ฒดํฌํ•ฉ๋‹ˆ๋‹ค.
์œ„ ์˜ค๋ฅ˜๋Š” ํ…Œ์ด๋ธ” ์ด๋ฆ„์˜ ์˜๋ฏธ๊ฐ€ ์ž˜๋ชป๋˜์–ด(์™ผ์ชฝ),
ํ…Œ์ด๋ธ”์„ ์ฐพ์„ ์ˆ˜ ์—†์–ด(์˜ค๋ฅธ์ชฝ) ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.
SHARED POOL CHECK
SQL ID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•˜๊ฑฐ๋‚˜
Execution Plan์˜ ํ•ด์‹œ๊ฐ’์„ ํ™•์ธํ•˜์—ฌ
๋ฆฌ์†Œ์Šค๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ ๋›ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
EXECUTION PLAN
Parsed ๋œ ์ฟผ๋ฆฌ๋ฅผ Execution Plan์œผ๋กœ ์ถœ๋ ฅํ•˜๋Š” ๊ณผ์ •์€ ์œ„์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
EXECUTION PLAN ์ด๋ž€?
SQL๋ฌธ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ
๊ตฌ์ฒด์ ์ธ ๊ณผ์ •์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ
Displaying the Execution plan
ยญยญย SH(Salesย History)ย Schemaย 
SELECTย prod_category,ย AVG(amount_sold)ย 
FROMย salesย s,ย productsย pย 
WHEREย p.prod_idย =ย s.prod_idย 
GROUPย BYย prod_categoryอพย 
AUTOTRACE ์ผœ๊ธฐ
์˜ค๋ผํด ์„ค์น˜์‹œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์น˜ ๋˜์–ด ์žˆ์ง€๋งŒ Disable๋˜์–ด์žˆ๋‹ค.
AUTOTRACE ์ผœ๊ธฐ
CONNย /ย asย sysdbaย 
@?/sqlplus/admin/plustrce.sqlย 
GRANTย plustraceย toย HRย 
CONNย hrย 
@?/rdbms/admin/utlxplan.sqlย 
SETย autotraceย onย 
EXPLAIN FOR ๊ตฌ๋ฌธ์„ ์ด์šฉ
ed๋ฅผ ๋ˆŒ๋Ÿฌ editํ™”๋ฉด์œผ๋กœ ๋“ค์–ด๊ฐ€๋ฉด
EXECUTION PLAN ์ˆœ์„œ
์œ„์˜ ํ‘œ ํ˜•์‹์˜ Execution plan์€ ์•„๋ž˜์™€ ๊ฐ™์ด
ํŠธ๋ฆฌ๊ตฌ์กฐ๋กœ ํ•ด์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํŠธ๋ฆฌ๊ตฌ์กฐ์—์„œ Post-order traversal์˜ ์ˆœ์„œ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.
A - C - E - D - B - H - I - G - F
๋”ฐ๋ผ์„œ ์•ž์˜ ํ‘œ์—์„œ Execution plan์˜ ์ˆœ์„œ๋ฅผ ID์ˆœ์œผ๋กœ ๋‚˜์—ดํ•˜๋ฉด
3 - 5 - 4 - 2 - 1 - 0
COST๋ž€?
Query์— ์˜ํ•ด ์‚ฌ์šฉ๋œ IO, CPU, ๋„คํŠธ์›Œํฌ ๋ฆฌ์†Œ์Šค๋ฅผ ์ ์œ ํ•œ ์ •๋„๋ฅผ ๊ฐ€์ง€๊ณ 
Oracle Optimizer๊ฐ€ ์ •ํ•œ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ ๊ธฐ์ค€์œผ๋กœ,
๋ฆฌ์†Œ์Šค๊ฐ€ ๊ฐ€์žฅ ์ ๋‹ค๊ณ  ์‚ฐ์ •๋˜๋Š” Execution plan์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
OPTIMIZER๊ฐ€ EXECUTION PLAN์„ ๊ฒฐ์ •ํ•˜๋Š” ์š”์†Œ
Component Description
Cardinality ๊ฐ Operation์„ ์ˆ˜ํ–‰ ์‹œ ๋ฐ˜ํ™˜๋˜๋Š” ํ–‰์˜ ์ˆ˜
Access method ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ ํ…Œ์ด๋ธ” ๋˜๋Š” ์ธ๋ฑ์Šค์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•
Join method ํ…Œ์ด๋ธ”์„ ์กฐ์ธ ์‹œ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์†Œ๋“œ(e.g., hash, sort-merge, etc.)
Join type ์กฐ์ธ์˜ ์œ ํ˜• (e.g., outer, anti, semi, etc.)
Join order ๊ฐ ํ…Œ์ด๋ธ”์ด ์กฐ์ธ๋˜๋Š” ์ˆœ์„œ
Partition pruning ํ…Œ์ด๋ธ”์ด๋‚˜ ์ธ๋ฑ์Šค๊ฐ€ ๋” ์ž‘์€ ์กฐ๊ฐ์œผ๋กœ ์ชผ๊ฐœ์งˆ ์ˆ˜ ์žˆ๋Š”๊ฐ€
(Pstart Pstop ํ•ญ๋ชฉ)
Parallel Execution ๊ฐ Operation์ด ๋ณ‘๋ ฌ์ ์œผ๋กœ ์‹คํ–‰๋˜์—ˆ๋Š”๊ฐ€
STATISTICS
Data Dictionary์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ๋ชจ์ž„
USER_TAB_STATISTICS์— ์ ‘๊ทผํ•˜์—ฌ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
STATISTICS
Statistic Name Description
recursive calls ์œ ์ €์™€ ์‹œ์Šคํ…œ ๋ ˆ๋ฒจ์—์„œ ๋ชจ๋‘ ์ƒ์„ฑ๋œ ์žฌ๊ท€ ํ˜ธ์ถœ ์ˆ˜.
db block gets ํ˜„์žฌ ๋ธ”๋ก์ด ์š”์ฒญ๋œ ํšŸ์ˆ˜
consistent gets ์š”์ฒญ๋œ ๋ธ”๋ก์„ ์ผ๊ด€์ ์œผ๋กœ ์ฝ์€ ํšŸ์ˆ˜
physical reads ๋””์Šคํฌ๋กœ๋ถ€ํ„ฐ ์ฝ์€ ์ด ๋ฐ์ดํ„ฐ ๋ธ”๋ก ์ˆ˜
redo size ๋ฐ”์ดํŠธ๋กœ ์ƒ์„ฑ๋œ ๋ฆฌ๋‘์˜ ์ด๋Ÿ‰
bytes sent via SQL*Net to client ํฌ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ์ „์†ก๋œ ์ด ๋ฐ”์ดํŠธ ์ˆ˜
bytes received via SQL*Net from
client
Oracle Net์„ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์ด ๋ฐ”์ดํŠธ ์ˆ˜
SQL*Net roundtrips to/from
client
ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์ฃผ๊ณ  ๋ฐ›์€ Oracle Net์˜ ๋ชจ๋“  ๋ฉ”์‹œ์ง€๋“ค์˜ ์ˆ˜
sorts (memory) ์–ด๋– ํ•œ ๋””์Šคํฌ ์“ฐ๊ธฐ๋„ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์•„ ์™„์ „ํžˆ ๋ฉ”๋ชจ๋ฆฌ์—์„œ๋งŒ ์ฒ˜๋ฆฌํ•œ sort
operation์˜ ์ˆ˜
sorts (disk) ํ•œ๋ฒˆ์ด๋ผ๋„ ๋””์Šคํฌ ์“ฐ๊ธฐ๋ฅผ ์š”๊ตฌํ•œ sort operation์˜ ์ˆ˜
rows processed ์ž‘์—… ์ค‘์— ์ฒ˜๋ฆฌ ๋œ ํ–‰์˜ ์ˆ˜
REFERENCE
[PDF] The Oracle Optimizer Explain the Explain Plan
[PDF] Understanding Optimizer Statistics
About SQL Processing
The Query Optimizer
Using EXPLAIN PLAN
Using Autotrace in SQL*Plus

More Related Content

Similar to Oracle Optimizer presentation

1.1 sql๋ฌธ ์ฒ˜๋ฆฌ๊ณผ์ •
1.1 sql๋ฌธ ์ฒ˜๋ฆฌ๊ณผ์ •1.1 sql๋ฌธ ์ฒ˜๋ฆฌ๊ณผ์ •

Similar to Oracle Optimizer presentation (13)

Fundamentals of Oracle SQL
Fundamentals of Oracle SQLFundamentals of Oracle SQL
Fundamentals of Oracle SQL
ย 
[2015-06-12] Oracle ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐ ํ’ˆ์งˆ ๊ณ ๋„ํ™” 1
[2015-06-12] Oracle ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐ ํ’ˆ์งˆ ๊ณ ๋„ํ™” 1[2015-06-12] Oracle ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐ ํ’ˆ์งˆ ๊ณ ๋„ํ™” 1
[2015-06-12] Oracle ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐ ํ’ˆ์งˆ ๊ณ ๋„ํ™” 1
ย 
Windows ์„ฑ๋Šฅ๋ชจ๋‹ˆํ„ฐ๋ฅผ ์ด์šฉํ•œ SQL Server ์„ฑ๋Šฅ ๋ถ„์„
Windows ์„ฑ๋Šฅ๋ชจ๋‹ˆํ„ฐ๋ฅผ ์ด์šฉํ•œ SQL Server ์„ฑ๋Šฅ ๋ถ„์„Windows ์„ฑ๋Šฅ๋ชจ๋‹ˆํ„ฐ๋ฅผ ์ด์šฉํ•œ SQL Server ์„ฑ๋Šฅ ๋ถ„์„
Windows ์„ฑ๋Šฅ๋ชจ๋‹ˆํ„ฐ๋ฅผ ์ด์šฉํ•œ SQL Server ์„ฑ๋Šฅ ๋ถ„์„
ย 
1.1 sql๋ฌธ ์ฒ˜๋ฆฌ๊ณผ์ •
1.1 sql๋ฌธ ์ฒ˜๋ฆฌ๊ณผ์ •1.1 sql๋ฌธ ์ฒ˜๋ฆฌ๊ณผ์ •
1.1 sql๋ฌธ ์ฒ˜๋ฆฌ๊ณผ์ •
ย 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQL
ย 
[2015-06-26] Oracle ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐ ํ’ˆ์งˆ ๊ณ ๋„ํ™” 3
[2015-06-26] Oracle ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐ ํ’ˆ์งˆ ๊ณ ๋„ํ™” 3[2015-06-26] Oracle ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐ ํ’ˆ์งˆ ๊ณ ๋„ํ™” 3
[2015-06-26] Oracle ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐ ํ’ˆ์งˆ ๊ณ ๋„ํ™” 3
ย 
์•”๋‹ฌ์˜ ๋ฒ•์น™๊ณผ ์ฟผ๋ฆฌํŠœ๋‹ ๊ธฐ์ดˆ
์•”๋‹ฌ์˜ ๋ฒ•์น™๊ณผ ์ฟผ๋ฆฌํŠœ๋‹ ๊ธฐ์ดˆ์•”๋‹ฌ์˜ ๋ฒ•์น™๊ณผ ์ฟผ๋ฆฌํŠœ๋‹ ๊ธฐ์ดˆ
์•”๋‹ฌ์˜ ๋ฒ•์น™๊ณผ ์ฟผ๋ฆฌํŠœ๋‹ ๊ธฐ์ดˆ
ย 
์‹ค๋ฌด๋กœ ๋ฐฐ์šฐ๋Š” ์‹œ์Šคํ…œ ์„ฑ๋Šฅ ์ตœ์ ํ™” Ch6
์‹ค๋ฌด๋กœ ๋ฐฐ์šฐ๋Š” ์‹œ์Šคํ…œ ์„ฑ๋Šฅ ์ตœ์ ํ™” Ch6์‹ค๋ฌด๋กœ ๋ฐฐ์šฐ๋Š” ์‹œ์Šคํ…œ ์„ฑ๋Šฅ ์ตœ์ ํ™” Ch6
์‹ค๋ฌด๋กœ ๋ฐฐ์šฐ๋Š” ์‹œ์Šคํ…œ ์„ฑ๋Šฅ ์ตœ์ ํ™” Ch6
ย 
Online service ๊ณ„์ธต๋ณ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฉ์•ˆ
Online service ๊ณ„์ธต๋ณ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฉ์•ˆOnline service ๊ณ„์ธต๋ณ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฉ์•ˆ
Online service ๊ณ„์ธต๋ณ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฉ์•ˆ
ย 
Database ํŠœ๋‹ ๊ต์œก 110124
Database ํŠœ๋‹ ๊ต์œก 110124Database ํŠœ๋‹ ๊ต์œก 110124
Database ํŠœ๋‹ ๊ต์œก 110124
ย 
Okjsp 13์ฃผ๋…„ ๋ฐœํ‘œ์ž๋ฃŒ: ์ƒ์กด ํ”„๋กœ๊ทธ๋ž˜๋ฐ Test
Okjsp 13์ฃผ๋…„ ๋ฐœํ‘œ์ž๋ฃŒ: ์ƒ์กด ํ”„๋กœ๊ทธ๋ž˜๋ฐ TestOkjsp 13์ฃผ๋…„ ๋ฐœํ‘œ์ž๋ฃŒ: ์ƒ์กด ํ”„๋กœ๊ทธ๋ž˜๋ฐ Test
Okjsp 13์ฃผ๋…„ ๋ฐœํ‘œ์ž๋ฃŒ: ์ƒ์กด ํ”„๋กœ๊ทธ๋ž˜๋ฐ Test
ย 
181215 MS SQL๋กœ ์•Œ์•„๋ณด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
181215 MS SQL๋กœ ์•Œ์•„๋ณด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค181215 MS SQL๋กœ ์•Œ์•„๋ณด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
181215 MS SQL๋กœ ์•Œ์•„๋ณด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
ย 
์˜ค๋ผํด DB ์•„ํ‚คํ…์ฒ˜์™€ ํŠœ๋‹
์˜ค๋ผํด DB ์•„ํ‚คํ…์ฒ˜์™€ ํŠœ๋‹์˜ค๋ผํด DB ์•„ํ‚คํ…์ฒ˜์™€ ํŠœ๋‹
์˜ค๋ผํด DB ์•„ํ‚คํ…์ฒ˜์™€ ํŠœ๋‹
ย 

Oracle Optimizer presentation

  • 3. SQL PARSING ๊ตฌ๋ฌธ๋ถ„์„์ด๋ผ๊ณ  ํ•˜๋ฉฐ ๋‹ค๋ฅธ ๋ฃจํ‹ด์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋กœ SQL์„ ๋ถ€๋ถ„์œผ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ํฌํ•จํ•œ๋‹ค. Syntax Check Semantic Check Shared Pool Check
  • 4. SYNTAX CHECK ๋‹ค์Œ ์˜ค๋ฅ˜๋Š” Syntax Check๋ฅผ ์‹คํŒจํ•œ ํ™”๋ฉด์ž…๋‹ˆ๋‹ค. SQL ๋ฌธ์žฅ ์ž์ฒด์—์„œ ๊ตฌ๋ฌธ์„ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š”์ง€ ์ฒดํฌํ•ฉ๋‹ˆ๋‹ค. ์œ„ ์˜ค๋ฅ˜๋Š” ์˜ˆ์ƒํ•œ ์œ„์น˜์— ํ‚ค์›Œ๋“œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์–ด์„œ ๋ฐœ์ƒํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • 5. SEMANTIC CHECK ๋‹ค์Œ ์˜ค๋ฅ˜๋Š” Semantic Check๋ฅผ ์‹คํŒจํ•œ ํ™”๋ฉด์ž…๋‹ˆ๋‹ค. ๊ฐ ๋‚˜๋ˆ„์–ด์ง„ ๊ตฌ๋ฌธ์—์„œ์˜ ์˜๋ฏธ๋ฅผ ์ฒดํฌํ•ฉ๋‹ˆ๋‹ค. ์œ„ ์˜ค๋ฅ˜๋Š” ํ…Œ์ด๋ธ” ์ด๋ฆ„์˜ ์˜๋ฏธ๊ฐ€ ์ž˜๋ชป๋˜์–ด(์™ผ์ชฝ), ํ…Œ์ด๋ธ”์„ ์ฐพ์„ ์ˆ˜ ์—†์–ด(์˜ค๋ฅธ์ชฝ) ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.
  • 6. SHARED POOL CHECK SQL ID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•˜๊ฑฐ๋‚˜ Execution Plan์˜ ํ•ด์‹œ๊ฐ’์„ ํ™•์ธํ•˜์—ฌ ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ ๋›ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • 7. EXECUTION PLAN Parsed ๋œ ์ฟผ๋ฆฌ๋ฅผ Execution Plan์œผ๋กœ ์ถœ๋ ฅํ•˜๋Š” ๊ณผ์ •์€ ์œ„์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • 8. EXECUTION PLAN ์ด๋ž€? SQL๋ฌธ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ตฌ์ฒด์ ์ธ ๊ณผ์ •์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ
  • 9. Displaying the Execution plan ยญยญย SH(Salesย History)ย Schemaย  SELECTย prod_category,ย AVG(amount_sold)ย  FROMย salesย s,ย productsย pย  WHEREย p.prod_idย =ย s.prod_idย  GROUPย BYย prod_categoryอพย 
  • 10. AUTOTRACE ์ผœ๊ธฐ ์˜ค๋ผํด ์„ค์น˜์‹œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์น˜ ๋˜์–ด ์žˆ์ง€๋งŒ Disable๋˜์–ด์žˆ๋‹ค.
  • 12. EXPLAIN FOR ๊ตฌ๋ฌธ์„ ์ด์šฉ ed๋ฅผ ๋ˆŒ๋Ÿฌ editํ™”๋ฉด์œผ๋กœ ๋“ค์–ด๊ฐ€๋ฉด
  • 13. EXECUTION PLAN ์ˆœ์„œ ์œ„์˜ ํ‘œ ํ˜•์‹์˜ Execution plan์€ ์•„๋ž˜์™€ ๊ฐ™์ด ํŠธ๋ฆฌ๊ตฌ์กฐ๋กœ ํ•ด์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • 14. ํŠธ๋ฆฌ๊ตฌ์กฐ์—์„œ Post-order traversal์˜ ์ˆœ์„œ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. A - C - E - D - B - H - I - G - F ๋”ฐ๋ผ์„œ ์•ž์˜ ํ‘œ์—์„œ Execution plan์˜ ์ˆœ์„œ๋ฅผ ID์ˆœ์œผ๋กœ ๋‚˜์—ดํ•˜๋ฉด 3 - 5 - 4 - 2 - 1 - 0
  • 15. COST๋ž€? Query์— ์˜ํ•ด ์‚ฌ์šฉ๋œ IO, CPU, ๋„คํŠธ์›Œํฌ ๋ฆฌ์†Œ์Šค๋ฅผ ์ ์œ ํ•œ ์ •๋„๋ฅผ ๊ฐ€์ง€๊ณ  Oracle Optimizer๊ฐ€ ์ •ํ•œ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ ๊ธฐ์ค€์œผ๋กœ, ๋ฆฌ์†Œ์Šค๊ฐ€ ๊ฐ€์žฅ ์ ๋‹ค๊ณ  ์‚ฐ์ •๋˜๋Š” Execution plan์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  • 16. OPTIMIZER๊ฐ€ EXECUTION PLAN์„ ๊ฒฐ์ •ํ•˜๋Š” ์š”์†Œ Component Description Cardinality ๊ฐ Operation์„ ์ˆ˜ํ–‰ ์‹œ ๋ฐ˜ํ™˜๋˜๋Š” ํ–‰์˜ ์ˆ˜ Access method ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ ํ…Œ์ด๋ธ” ๋˜๋Š” ์ธ๋ฑ์Šค์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ• Join method ํ…Œ์ด๋ธ”์„ ์กฐ์ธ ์‹œ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์†Œ๋“œ(e.g., hash, sort-merge, etc.) Join type ์กฐ์ธ์˜ ์œ ํ˜• (e.g., outer, anti, semi, etc.) Join order ๊ฐ ํ…Œ์ด๋ธ”์ด ์กฐ์ธ๋˜๋Š” ์ˆœ์„œ Partition pruning ํ…Œ์ด๋ธ”์ด๋‚˜ ์ธ๋ฑ์Šค๊ฐ€ ๋” ์ž‘์€ ์กฐ๊ฐ์œผ๋กœ ์ชผ๊ฐœ์งˆ ์ˆ˜ ์žˆ๋Š”๊ฐ€ (Pstart Pstop ํ•ญ๋ชฉ) Parallel Execution ๊ฐ Operation์ด ๋ณ‘๋ ฌ์ ์œผ๋กœ ์‹คํ–‰๋˜์—ˆ๋Š”๊ฐ€
  • 17. STATISTICS Data Dictionary์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ๋ชจ์ž„ USER_TAB_STATISTICS์— ์ ‘๊ทผํ•˜์—ฌ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • 18. STATISTICS Statistic Name Description recursive calls ์œ ์ €์™€ ์‹œ์Šคํ…œ ๋ ˆ๋ฒจ์—์„œ ๋ชจ๋‘ ์ƒ์„ฑ๋œ ์žฌ๊ท€ ํ˜ธ์ถœ ์ˆ˜. db block gets ํ˜„์žฌ ๋ธ”๋ก์ด ์š”์ฒญ๋œ ํšŸ์ˆ˜ consistent gets ์š”์ฒญ๋œ ๋ธ”๋ก์„ ์ผ๊ด€์ ์œผ๋กœ ์ฝ์€ ํšŸ์ˆ˜ physical reads ๋””์Šคํฌ๋กœ๋ถ€ํ„ฐ ์ฝ์€ ์ด ๋ฐ์ดํ„ฐ ๋ธ”๋ก ์ˆ˜ redo size ๋ฐ”์ดํŠธ๋กœ ์ƒ์„ฑ๋œ ๋ฆฌ๋‘์˜ ์ด๋Ÿ‰ bytes sent via SQL*Net to client ํฌ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ์ „์†ก๋œ ์ด ๋ฐ”์ดํŠธ ์ˆ˜ bytes received via SQL*Net from client Oracle Net์„ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์ด ๋ฐ”์ดํŠธ ์ˆ˜ SQL*Net roundtrips to/from client ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์ฃผ๊ณ  ๋ฐ›์€ Oracle Net์˜ ๋ชจ๋“  ๋ฉ”์‹œ์ง€๋“ค์˜ ์ˆ˜ sorts (memory) ์–ด๋– ํ•œ ๋””์Šคํฌ ์“ฐ๊ธฐ๋„ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์•„ ์™„์ „ํžˆ ๋ฉ”๋ชจ๋ฆฌ์—์„œ๋งŒ ์ฒ˜๋ฆฌํ•œ sort operation์˜ ์ˆ˜ sorts (disk) ํ•œ๋ฒˆ์ด๋ผ๋„ ๋””์Šคํฌ ์“ฐ๊ธฐ๋ฅผ ์š”๊ตฌํ•œ sort operation์˜ ์ˆ˜ rows processed ์ž‘์—… ์ค‘์— ์ฒ˜๋ฆฌ ๋œ ํ–‰์˜ ์ˆ˜
  • 19. REFERENCE [PDF] The Oracle Optimizer Explain the Explain Plan [PDF] Understanding Optimizer Statistics About SQL Processing The Query Optimizer Using EXPLAIN PLAN Using Autotrace in SQL*Plus