๐ 22-08-23
SQLP ์ด๋ก ๋ณต์ต
(1) ๊ณ ๋ํ
SQLP ์ค๊ธฐ ํ์ด
(1) [SQLP์ค๊ธฐํ์ด]4์ฅ ์กฐ์ธํ๋(4)-๊ณ ๊ธ์กฐ์ธ๊ธฐ๋ฒ 51๋ฒ
(2) [SQLP์ค๊ธฐํ์ด]4์ฅ ์กฐ์ธํ๋(4)-๊ณ ๊ธ์กฐ์ธ๊ธฐ๋ฒ 52๋ฒ
(3) [SQLP์ค๊ธฐํ์ด]4์ฅ ์กฐ์ธํ๋(4)-๊ณ ๊ธ์กฐ์ธ๊ธฐ๋ฒ 53๋ฒ
(4) [SQLP์ค๊ธฐํ์ด]4์ฅ ์กฐ์ธํ๋(4)-๊ณ ๊ธ์กฐ์ธ๊ธฐ๋ฒ 54๋ฒ
SQLP ํ๊ธฐ ํ์ด
(1) [SQLPํ๊ธฐํ์ด]2์ฅ SQL ๋ถ์ ๋๊ตฌ
๐ 8/23 ๋ณต๊ธฐ
[1] ํ๋ ์ฟผ๋ฆฌ์ ๊ดํธ๊ฐ ๋๋ฌด ๋ง์ผ๋ฉด ์ค์ฌ์ผ ํ๋ค.
[SQLP์ค๊ธฐํ์ด]4์ฅ ์กฐ์ธํ๋(4)-๊ณ ๊ธ์กฐ์ธ๊ธฐ๋ฒ 52๋ฒ
- index fast full scan์ ๊ฒฝ์ฐ ๊ทธ๋ฅ ํด์์กฐ์ธํ๊ณ ๋์ group by ํด๋ ๊ด์ฐฎ๋ค.
- group by ๋ฅผ ํ๊ธฐ ์ํด ์๋ธ์ฟผ๋ฆฌ๋ก ํ๋ฒ ๋ ๊ฐ์ธ์ 2๊ฐ ์ด์์ ๊ดํธ๋ฅผ ๋ง๋ค์ง ๋ง๊ณ ๊ทธ๋ฅ ํฉ์น ๊ฒ !
[2] NVL2๋ฌธ๊ณผ DECODE๋ฌธ
[SQLP์ค๊ธฐํ์ด]4์ฅ ์กฐ์ธํ๋(4)-๊ณ ๊ธ์กฐ์ธ๊ธฐ๋ฒ 53๋ฒ
- nvl2๋ฌธ : NVL2 ํจ์๋ NULL์ด ์๋ ๊ฒฝ์ฐ ์ง์ ๊ฐ1์ ์ถ๋ ฅํ๊ณ , NULL์ธ ๊ฒฝ์ฐ ์ง์ ๊ฐ2๋ฅผ ์ถ๋ ฅํ๋ค.
NVL2("๊ฐ", "์ง์ ๊ฐ1", "์ง์ ๊ฐ2")
NVL2("๊ฐ", "NOT NULL", "NULL")
DECODE(์ปฌ๋ผ, ์กฐ๊ฑด1, ๊ฒฐ๊ณผ1, ์กฐ๊ฑด2, ๊ฒฐ๊ณผ2, ์กฐ๊ฑด3, ๊ฒฐ๊ณผ3..........)
[3] ์กฐ๊ฑด ๊ตฌ๋ถ๊ฐ์ ๋ฐ๋ผ ์กฐ์ธ ๋์ ํ
์ด๋ธ์ด ๋ฐ๋ ๋
[SQLP์ค๊ธฐํ์ด]4์ฅ ์กฐ์ธํ๋(4)-๊ณ ๊ธ์กฐ์ธ๊ธฐ๋ฒ 53๋ฒ
- union all์ ์ด์ฉํ๋ค.
- ๋ฌธ์ ์กฐ๊ฑด ๊ฐ์ ๊ผญ ์ฝ์ด๋ผ!!( ์ด๊ฑด ํํธ ์ฌ์ฉ๊ณผ ์ธ๋ฑ์ค ์ฌ๊ตฌ์ฑ์ ๋ชปํ๊ฒ ํ๋ค.)
[4] ์ค๋ผํด AutoTrace์์ ํ์ธํ ์ ์๋ ์ ๋ณด
โ
์ค๋ผํด AutoTrace์์ ํ์ธํ ์ ์๋ ์ ๋ณด
- ์์ ์คํ๊ณํ
- ์ค์ ๋์คํฌ์์ ์ฝ์ ๋ธ๋ก ์
- ์ค์ ๊ธฐ๋กํ Redo ํฌ๊ธฐ

- โญ๏ธ ์ค๋ผํด AutoTrace์์ ์ค์ ์ฌ์ฉํ CPU Time์ ์ ์ ์๋ค.
โ
์ค๋ผํด ๊ธฐ๋ณธ Trace์์ ํ์ธํ ์ ์๋ ์ ๋ณด

- ์์ ์คํ๊ณํ
- ์ค์ ๋์คํฌ์์ ์ฝ์ ๋ธ๋ก ์
- ์ค์ ์ฌ์ฉํ CPU Time
- ์ค๋ผํด์ ๊ธฐ๋ณธ SQL ํธ๋ ์ด์ค(10046 ํธ๋ ์ด์ค)์์ ์ค์ ๊ธฐ๋กํ Redo ํฌ๊ธฐ๋ ์ ์ ์๋ค.
- autotrace์์๋ ์ค์ ์ฌ์ฉํ CPU Time์ ์ ์ ์๊ณ ์ค๋ผํด์ ๊ธฐ๋ณธ SQL ํธ๋ ์ด์ค์์๋ ์ค์ ๊ธฐ๋กํ Redo ํฌ๊ธฐ๋ฅผ ์ ์ ์๋ค.
[5] ์ค๋ผํด AutoTrace์์ ์ฌ์ฉํ ์ ์๋ ์ต์
โ
AutoTrace์์ ์ฌ์ฉํ ์ ์๋ ์ต์
[ํค์๋ ๋ค์ฏ๊ฐ์ง๋ฅผ ์กฐํฉํ๋ ๊ฒ์ด๋ค.]
- ๊ณตํต ๋ฌธ๋ฒ : set autotrace
- ์ ํ ๋ฌธ๋ฒ1(๊ฒฐ๊ณผ์ถ๋ ฅ ์ฌ๋ถ)
- ๊ฒฐ๊ณผ ์ถ๋ ฅ : on
- ๊ฒฐ๊ณผ ๋ฏธ์ถ๋ ฅ : traceonly
- ์ ํ ๋ฌธ๋ฒ2(์คํ๊ณํ/์คํํต๊ณ)
- ์คํ๊ณํ : explain
- ์คํํต๊ณ : statistics
[๊ฒฐ๊ณผ ์ถ๋ ฅ O (๋น์ฐํ SQL ์คํ)]
- set autotrace on
- SQL์ ์คํ
- ๊ฒฐ๊ณผ์งํฉ ์์
- ์์ ์คํ๊ณํ ๋ฐ ์คํํต๊ณ๋ฅผ ์ถ๋ ฅ
- set autotrace on explain
- SQL์ ์คํ
- ๊ฒฐ๊ณผ์งํฉ ์์
- ์์ ์คํ๊ณํ์ ์ถ๋ ฅ
- set autotrace on statistics
- SQL์ ์คํํ๊ณ
- ๊ฒฐ๊ณผ์งํฉ ์์
- ์คํํต๊ณ๋ฅผ ์ถ๋ ฅ
[๊ฒฐ๊ณผ ์ถ๋ ฅ X]
- set autotrace traceonly
- SQL์ ์คํํ๊ณ
- ๊ฒฐ๊ณผ๋ ์ถ๋ ฅํ์ง ์๊ณ
- ์์ ์คํ๊ณํ๊ณผ ์คํํต๊ณ ์ถ๋ ฅ
- set autotrace traceonly explain
- โญ๏ธ SQL์ ์ค์ ๋ก ์คํํ์ง ์๊ณ
- ์์ ์คํ๊ณํ๋ง ์ถ๋ ฅ
- set autotrace traceonly statistics
- SQL์ ์คํํ๊ณ
- ๊ฒฐ๊ณผ๋ ์ถ๋ ฅํ์ง ์๊ณ
- ์คํํต๊ณ๋ง ์ถ๋ ฅ
[6] ์ค๋ผํด SGA ๋ฉ๋ชจ๋ฆฌ์ ๊ธฐ๋กํ SQL ํธ๋ ์ด์ค ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๊ธฐ
- SQL์ gather_plan_statistics ํํธ๋ฅผ ์ง์ ํ๋ฉด, SQL ํธ๋ ์ด์ค ์ ๋ณด๋ฅผ ์๋ฒ ํ์ผ์ด ์๋ SGA ๋ฉ๋ชจ๋ฆฌ์ ๊ธฐ๋กํ๋ค.
- SGA ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ํธ๋ ์ด์ค ์ ๋ณด๋ฅผ dbms_xplan.display_cursor ํจ์๋ฅผ ์ด์ฉํ๋ฉด ๋ถ์ํ๊ธฐ ์ฌ์ด ํํ๋ก ํฌ๋งคํ
ํด ์ค๋ค.
- ์ฒซ ๋ฒ์งธ์ ๋ ๋ฒ์งธ ์ธ์์๋ SQL ์ปค์์ ID์ CHILD_NUMBER๋ฅผ ์
๋ ฅํด์ผ ํ๋ค.
- ์ฒซ ๋ฒ์งธ์ ๋ ๋ฒ์งธ ์ธ์์ null, null์ ์
๋ ฅํ๋ฉด ๋ฐ๋ก ์ง์ ์ ์ํํ ์ปค์ ID์ CHILD_NUMBER๋ฅผ ๋ด๋ถ์์ ์๋ ์ ํํด ์ค๋ค.
[7] _DBMS_XPLAN.DISPLAY_CURSOR์ SQL ํธ๋ ์ด์ค ํญ๋ชฉ ๋น๊ต
โ
_DBMS_XPLAN.DISPLAY_CURSOR ํจ์๋ฅผ ํตํด ์ถ์ถํ SQL ํธ๋ ์ด์ค ์ ๋ณด
- Starts : ๊ฐ ์คํผ๋ ์ด์
๋จ๊ณ๋ณ ์คํ ํ์
- E-Rows : ์ตํฐ๋ง์ด์ ๊ฐ ์์ํ Rows
- A-Rows : ๊ฐ ์คํผ๋ ์ด์
๋จ๊ณ์์ ์ฝ๊ฑฐ๋ ๊ฐฑ์ ํ ๋ก์ฐ ์
- SQL ํธ๋ ์ด์ค ํญ๋ชฉ์์๋ rows
- A-Times : ๊ฐ ์คํผ๋ ์ด์
๋จ๊ณ๋ณ ์์์๊ฐ
- SQL ํธ๋ ์ด์ค ํญ๋ชฉ์์๋ times
- Buffers : ์บ์์์ ์ฝ์ ๋ฒํผ ๋ธ๋ก ์
- SQL ํธ๋ ์ด์ค ํญ๋ชฉ์์๋ query(=cr) , current
- Reads : ๋์คํฌ์์ ์ฝ์ ๋ธ๋ก์
- SQL ํธ๋ ์ด์ค ํญ๋ชฉ์์๋ pr
[8] sql server์์ SQL ํธ๋ ์ด์ค ์ต์
โ
sql server์์ SQL ํธ๋ ์ด์ค๋ฅผ ํ์ธํ๊ณ ์ ์ค์ ํ๋ ์ต์
- ๊ณตํต ๋ฌธ๋ฒ : set statistics ? on
- ์ ํ ๋ฌธ๋ฒ
- ์ ํ ๋ฌธ๋ฒ2(์คํ๊ณํ/์คํํต๊ณ)
- ์คํ๊ณํ : explain
- ์คํํต๊ณ : statistics
- set statistics profile on
- ๊ฐ ์ฟผ๋ฆฌ๊ฐ ์ผ๋ฐ ๊ฒฐ๊ณผ์งํฉ์ ๋ฐํํ๊ณ ๊ทธ ๋ค์๋ ์ฟผ๋ฆฌ ์คํ
- ํ๋กํ์ ๋ณด์ฌ ์ฃผ๋ ์ถ๊ฐ ๊ฒฐ๊ณผ์งํฉ์ ๋ฐํ
- ์ถ๋ ฅ์๋ ๋ค์ํ ์ฐ์ฐ์์์ ์ฒ๋ฆฌํ ํ ์ ๋ฐ ์ฐ์ฐ์์ ์คํ ํ์์ ๋ํ ์ ๋ณด๋ ํฌํจ
- set statistics io on
- Transact-SQL ๋ฌธ์ด ์คํ๋๊ณ ๋์ ํด๋น ๋ฌธ์์ ๋ง๋ค์ด์ง ๋์คํฌ ๋์ ์์ ๋ํ ์ ๋ณด๋ฅผ ํ์
- set statistics time on
-๊ฐ Transact-SQL ๋ฌธ์ ๊ตฌ๋ฌธ ๋ถ์, ์ปดํ์ผ ๋ฐ ์คํํ๋ ๋ฐ ์ฌ์ฉ ํ ์๊ฐ์ ๋ฐ๋ฆฌ์ด (0.001์ด) ๋จ์๋ก ํ์
[9] ๋๊ธฐ์ด๋ฒคํธ
- ํ๋ก์ธ์ค๊ฐ ๋ฒํผ์บ์, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์ ๋ฑ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์์ ๋์น๋ฅผ ํ๋ํ ๋๋ง๋ค ๋ํ๋๋ค. ๐ โ
- ๋์น๋ฅผ ํ๋ํ๋ ๊ณผ์ ์ ๊ฒฝํฉ์ด ๋ฐ์ํ๋ฉด ๋๊ธฐ ์ด๋ฒคํธ๊ฐ ๋ํ๋์ง๋ง, ๊ฒฝํฉ์์ด ๋ฐ๋ก ์ฝ์ผ๋ฉด ๋๊ธฐ ์ด๋ฒคํธ๊ฐ ๋ํ๋์ง ์๋๋ค.
- library cache lock , library cache pin ๋๊ธฐ์ด๋ฒคํธ๋ ์ฃผ๋ก SOL ์ํ ๋์ค DDL์ ์ํํ ๋ ๋ํ๋๋ค.
- free buffer waits ๋๊ธฐ ์ด๋ฒคํธ๋ ์๋ฒ ํ๋ก์ธ์ค๊ฐ ๋ฒํผ ์บ์์์ Free Buffer๋ฅผ ์ฐพ์ง๋ชปํด DBWR์๊ฒ ๊ณต๊ฐ์ ํ๋ณดํด ๋ฌ๋ผ๊ณ ์ ํธ๋ฅผ ๋ณด๋ธ ํ ๋๊ธฐํ ๋ ๋ํ๋๋ค.
- log file sync ๋๊ธฐ ์ด๋ฒคํธ๋ ์ปค๋ฐ ๋ช
๋ น์ ์ ์ก๋ฐ์ ์๋ฒ ํ๋ก์ธ์ค๊ฐ LGWR์๊ฒ ๋ก๊ทธ ๋ฒํผ๋ฅผ ๋ก๊ทธ ํ์ผ์ ๊ธฐ๋กํด ๋ฌ๋ผ๊ณ ์ ํธ๋ฅผ ๋ณด๋ธ ํ ๋๊ธฐํ ๋ ๋ํ๋๋ค.
- Latch: shared pool ๋๊ธฐ ์ด๋ฒคํธ๋ shared pool ๋์น๋ฅผ ํ ๋น๋ฐ๋ ๊ณผ์ ์ ๋ฐ์ํ๋ ๊ฒฝํฉ๊ณผ ๊ด๋ จ ์์ผ๋ฉฐ, ํ๋ ํ์ฑ์ ๋์์ ์ฌํ๊ฒ ์ผ์ผํฌ ๋ ์ฃผ๋ก ๋ํ๋๋ค.
[10] ์ธ์คํด์ค ํจ์จ์ฑ ํญ๋ชฉ๋ค
- Soft Parse : ์คํ๊ณํ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์์์ ์ฐพ์์ ธ ํ๋ํ์ฑ์ ์ผ์ผํค์ง ์๊ณ SQL ์์ํํ ๋น์จ์ด๋ค. ๊ตฌํ๋ ๊ณต์์ ์๋์ ๊ฐ๋ค.
(์ ์ฒด Parse Call ํ์ - ํ๋ํ์ฑ ํ์) / (์ ์ฒด Parse Call ํ์)* 100
- Execute to Parse : Parse Call ์์ด ๊ณง๋ฐ๋ก SQL์ ์ํํ ๋น์จ, ์ฆ ์ปค์๋ฅผ ์ ํ๋ฆฌ์ผ์ด์
์์ ์บ์ฑํ ์ฑ ๋ฐ๋ณต ์ํํ ๋น์จ์ด๋ค.
- Parse CPU to Parse Elapsed : ํ์ฑ ์ด ์์ ์๊ฐ ์ค CPU time์ด ์ฐจ์งํ ๋น์จ์ด๋ค. ํ์ฑ์ ์์๋ ์๊ฐ ์ค ์ค์ ์ผ์ ์ํํ ์๊ฐ ๋น์จ์ ๋งํ๋ฉฐ, ์ด ๊ฐ์ด ๋ฎ๋ค๋ฉด ํ์ฑ ๋์ค ๋๊ธฐ๊ฐ ๋ง์ด ๋ฐ์ํ์์ ์๋ฏธํ๋ค.