๐ 22-08-17
SQLP ์ด๋ก ๋ณต์ต
(1) ๊ณ ๋ํ
SQLP ์ค๊ธฐ ํ์ด
(1) [SQLP์ค๊ธฐํ์ด]4์ฅ ์กฐ์ธํ๋(4)-๊ณ ๊ธ์กฐ์ธ๊ธฐ๋ฒ 47๋ฒ
(2) [SQLP์ค๊ธฐํ์ด]4์ฅ ์กฐ์ธํ๋(4)-๊ณ ๊ธ์กฐ์ธ๊ธฐ๋ฒ 48๋ฒ
(3) [SQLP์ค๊ธฐํ์ด]4์ฅ ์กฐ์ธํ๋(4)-๊ณ ๊ธ์กฐ์ธ๊ธฐ๋ฒ 49๋ฒ
(4) [SQLP์ค๊ธฐํ์ด]4์ฅ ์กฐ์ธํ๋(4)-๊ณ ๊ธ์กฐ์ธ๊ธฐ๋ฒ 50๋ฒ
(5) [SQLP์ค๊ธฐํ์ด]4์ฅ ์กฐ์ธํ๋(4)-๊ณ ๊ธ์กฐ์ธ๊ธฐ๋ฒ 51๋ฒ
(6) [SQLP์ค๊ธฐํ์ด]5์ฅ SQL์ตํฐ๋ง์ด์ (3)-์ฟผ๋ฆฌ ๋ณํ 32๋ฒ
SQLP ํ๊ธฐ ํ์ด
(1) 1 ~ 16
[SQLPํ๊ธฐํ์ด]5์ฅ SQL์ตํฐ๋ง์ด์ (1)-SQL์ตํฐ๋ง์ด์ง ์๋ฆฌ
(2) 17 ~ 25
[SQLPํ๊ธฐํ์ด]5์ฅ SQL์ตํฐ๋ง์ด์ (2)-SQL๊ณต์ ๋ฐ ์ฌ์ฌ์ฉ
(3) 26 ~ 45
[SQLPํ๊ธฐํ์ด]5์ฅ SQL์ตํฐ๋ง์ด์ (3)-์ฟผ๋ฆฌ ๋ณํ
๐ 8/17 ๋ณต๊ธฐ
[1] โญ๏ธ ํํฐ์
๋ ํ
์ด๋ธ DML ํ๋์ ์ ์์
48๋ฒ
- โญ๏ธ ํํฐ์
๋ ํ
์ด๋ธ ์์์ ์ธ๋ฑ์ค ๊ฒ์์ 10% ๋น์ค์ด ๋์ด๊ฐ๋ฉด ๊ทธ ๋๋ ์ธ๋ฑ์ค๊ฐ ์๋๋ผ FULL SCAN์ ์คํํ๋ค.
[2] โญ๏ธ ์ธ๋ผ์ธ๋ทฐ DML ํ๋์ ์ ์์
[SQLP์ค๊ธฐํ์ด]4์ฅ ์กฐ์ธํ๋(4)-๊ณ ๊ธ์กฐ์ธ๊ธฐ๋ฒ 50๋ฒ
- โญ๏ธ ์ธ๋ผ์ธ ๋ทฐ ์์ ์ ๋ ฌ๋์ด์๋ ๋ฐ์ดํฐ๋ค์ด ํฉ์ด์ง์ง ์๋๋ก ์ธ๋ถ์์ ๋ค์ํ๋ฒ Order by๋ฅผ ์ํํ๋ค.
[3] ๋น์ฉ๊ธฐ๋ฐ ์ตํฐ๋ง์ด์ ์ ํ๊ณ
[SQLPํ๊ธฐํ์ด]5์ฅ SQL์ตํฐ๋ง์ด์ (1)-SQL์ตํฐ๋ง์ด์ง ์๋ฆฌ
- ๊ธฐ๋ณธ์ ์ผ๋ก ์บ์ฑ ํจ๊ณผ๋ฅผ ๊ณ ๋ คํ์ง ์๋๋ค. ์ฆ, ๋ชจ๋ ๋ธ๋ก์ ๋์คํฌ์์ ์ฝ๋๋ค๊ณ ๊ฐ์ ํ๊ณ ๋์คํฌ I/O Call ํ์๋ก ์คํ๊ณํ์ ์ ํํ๋ ๊ฒ์ "์ค๋ผํด ๋น์ฉ๊ธฐ๋ฐ ์ตํฐ๋ง์ด์ ์ ํ๊ณ"์ด๋ค.
- ๊ท์น๊ธฐ๋ฐ ์ตํฐ๋ง์ด์ ๋ง์ ๋จ์ ์ด๋ผ๊ณ ํ ์ ์๋ค.
[4] ์ค์ค๋ก ํ์ตํ๋ ์ตํฐ๋ง์ด์
- (Self-Learning Optimizer)
Adaptive Cursor Sharing
- ์ฒ์ ์คํ ์ ํน์ ์คํ๊ณํ์ผ๋ก ์คํํ๋ค๊ฐ ๋ฐ์ธ๋ ๋ณ์์ ๋ค๋ฅธ ๊ฐ์ด ์
๋ ฅ๋์ ๋
'์์๋ณด๋ค ๋ง์ I/O'๊ฐ ๋ฐ์ํ๋ฉด ๋ค๋ฅธ ์คํ๊ณํ์ ์ถ๊ฐ๋ก ์์ฑ
- ์ดํ๋ก ๋ฐ์ธ๋ ๋ณ์ ๊ฐ ๋ถํฌ์ ๋ฐ๋ผ ๋ค๋ฅธ ์คํ๊ณํ์ ์ ํ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ธฐ๋ฅ
Cardinality Feedback
๋๋ Statistics Feedback
- ์ต์ด ์คํ๊ณํ์ ์๋ฆฝํ ๋ ์ถ์ ํ๋ ์นด๋๋๋ฆฌํฐ์ '์ค์ ์คํ ๊ณผ์ ์ ์ฝ์ ๋ก์ฐ ์ ๊ฐ์ ์ฐจ์ด'๊ฐ ํฌ๋ค๊ณ ํ๋จ๋๋ฉด, ์กฐ์ ๋ ์นด๋๋๋ฆฌํฐ ๊ฐ์ ์ด๋๊ฐ์ ์ ์ฅํด ๋์๋ค๊ฐ ๋ค์๋ฒ ์คํ ์์ ๊ทธ๊ฒ์ ์ฌ์ฉํจ์ผ๋ก์จ ๋ค๋ฅธ ์คํ๊ณํ์ด ์๋ฆฝ๋๋๋ก ํ๋ ๊ธฐ๋ฅ์ด๋ค.
Adaptive Plans
- ๋ฐํ์์ ์คํ๊ณํ์ ๋ณ๊ฒฝ
[5] ์ตํฐ๋ง์ด์ ์ ํ๊ณ
- ์๊ฐ๊ณผ ๊ณต๊ฐ์ ํท๊ฐ๋ฆฌ์ง ๋ง ๊ฒ !!! โญ๏ธ
- โญ๏ธ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์ ๊ณต๊ฐ์ ํฌ๊ธฐโญ๏ธ๋ ์ตํฐ๋ง์ด์ ๊ฐ ์์ฑํ๋ ์คํ๊ณํ์๋ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
- ๋ค๋ง, ๊ณต๊ฐ์ด ๋ถ์กฑํ๋ฉด SQL ์คํ๊ณํ์ด ์บ์์์ ์์ฃผ ๋ฐ๋ ค๋๋ฏ๋ก ํ์ฑ๊ณผ ์ต์ ํ๋ฅผ ์์ฃผ ์ํํจ์ผ๋ก ์ธํ ๋ถํ๊ฐ ๋์ด๋ ๋ฟ์ด๋ค.
- โญ๏ธ์ต์ ํ ์๊ฐ์ ํ์ฉ๋ ์๊ฐ ์ ์ฝโญ๏ธ์ ์ตํฐ๋ง์ด์ ์ ํ๊ณ๊ฐ ๋ง๋ค.
[6] I/O ๋น์ฉ ๋ชจ๋ธ vs. CPU ๋น์ฉ ๋ชจ๋ธ
- I/O ๋น์ฉ ๋ชจ๋ธ์ ๋น์ฉ์ ์์๋๋ ๋ธ๋ก ๊ฐ์๊ฐ ์๋๋ผ ๋์คํฌ I/O Call ํ์๋ค.
- CPU ๋น์ฉ ๋ชจ๋ธ์์ ๋น์ฉ(Cost)
- ์์ I/O ์๊ฐ๊ณผ ์์ CPU ์ฌ์ฉ์๊ฐ์ ๊ตฌํ ํ Single Block I/O ์๊ฐ์ผ๋ก ๋๋ ๊ฐ์ด๋ค.
- IO์์ฒญ ํ์์ ์๊ฐ์ ๋ํด ๋น์ฉ์ ์ฐ์ ํ์ฌ ์คํ๊ณํ์ ํ๊ฐํ๋ค.
- Single Block I/O์ ์์๋๋ ์๊ฐ๊ณผ์ ์๋์ ์ธ ์๊ฐ์ ํํ
- ์๋ฅผ ๋ค์ด, ์คํ๊ณํ ์ Cost๊ฐ 100์ผ๋ก ํ์๋๋ค๋ฉด, โ์ฐ๋ฆฌ ์์คํ
์์ 100๋ฒ Single Block I/O ํ๋ ์ ๋์ ์๊ฐ์ด ์์๋ ๊ฒ์ผ๋ก ์ตํฐ๋ง์ด์ ๊ฐ ์์ํ๋ค"๋ ๋ป์ด๋ค.
[7] ์ค๋ผํด ํ์คํ ๊ทธ๋จ ์ ํ
โ ๋์๋ถํฌ(Frequency) : '๊ฐ๋ณ๋ก ๋น๋์' ์ ์ฅ
โ ์์๋์๋ถํฌ(Top-Frequency) : ๋ง์ ๋ ์ฝ๋๋ฅผ ๊ฐ์ง ์์ n๊ฐ ๊ฐ์ '๋น๋์' ์ ์ฅ
โ ๋์ด๊ท ํ(Height-Balanced) : ๊ฐ ๋ฒํท์ ๋์ด๊ฐ ๋์ผํ๋๋ก ๋ฐ์ดํฐ ๋ถํฌ ๊ด๋ฆฌ
โ ํ์ด๋ธ๋ฆฌ๋(Hybrid) : ๋์๋ถํฌ์ ๋์ด๊ท ํ ํ์คํ ๊ทธ๋จ์ ํน์ฑ์ ๊ฒฐํฉ
[8] ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํ ํ
์ด๋ธ ์ก์ธ์ค ๋น์ฉ
โญ๏ธ๋น์ฉโญ๏ธ
= ๋ธ๋์น ๋ ๋ฒจ+(ํด๋ฌ์คํฐ๋ง ํฉํฐ x ์ ํจ ํ
์ด๋ธ ์ ํ๋)+(๋ฆฌํ ๋ธ๋ก ์ x ์ ํจ ์ธ๋ฑ์ค ์ ํ๋)
[9] ๋ฐ์ธ๋ ๋ณ์
- ํค์๋ : โญ๏ธ์ต์ ํโญ๏ธ
- ๋ฐ์ธ๋ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ต์ ํ ๊ณผ์ ์ ์ปฌ๋ผ ํ์คํ ๊ทธ๋จ์ ์ฌ์ฉํ์ง ๋ชปํ๋ค.
- ์กฐ๊ฑด์ ์ ์์ ๊ฐ์ ์ฌ์ฉํ๋ฉด ์ปฌ๋ผ ํ์คํ ๊ทธ๋จ์ ์ฌ์ฉํ ์ ์์ด SQL ์ต์ ํ์ ๋์์ด ๋๋ค.
[10] ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์ ์ต์ ํ ๋ฐฉ์
- ๋์ ๊ณผ๋ํ ํ์ฑ ๋ถํ > ํด๊ฒฐ : ์ปค์ ์บ์ฑ ๋๋ ์ปค์ ๊ณต์
- open_cursors ํ๋ผ๋ฏธํฐ๋ ์ธ์
๋น Open ํ ์ ์๋ ์ปค์ ๊ฐ์๋ฅผ '์ ํ'ํ๋ ํ๋ผ๋ฏธํฐ๋ค. ์ฆ , ์ธ์
์ปค์ ์บ์ฑ,์ ํ๋ฆฌ์ผ์ด์
์ปค์ ์บ์ฑ์์์ '์ปค์'์๋ ์๊ด์๋ค.
[11] ์๋ธ์ฟผ๋ฆฌ unnesting ์คํ๊ณํ
-
-
unnest๋ฌธ์ ์ธ๋ผ์ธ๋ทฐ๊ฐ ์๋ ์๋ธ์ฟผ๋ฆฌ์์ ๋์จ๋ค.(์๋ฅผ๋ค์ด Exists๋ฌธ)
-
์๋ธ์ฟผ๋ฆฌ unnest๋ฅผ ์ ํ์ ๋ (์กฐ์ธ ์ํ์ ๋) : Filter ๋ฌธ์ด ๋์จ๋ค.
-
์๋ธ์ฟผ๋ฆฌ unnest๋ฅผ ํ์ ๋ (์กฐ์ธ ํ์ ๋)
-
31๋ฒ
- UNNEST(@subq) LEADING(๊ฑฐ๋@subq) use_nl(c)
[11] ์๋ธ์ฟผ๋ฆฌ ์ธ๋ผ์ธ ๋ทฐ
- ์ธ๋ผ์ธ ๋ทฐ๋ฅผ Merging ํ๋ฉด ๋ถ๋ถ๋ฒ์ ์ฒ๋ฆฌ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค.
- ๋ถ๋ถ๋ฒ์ ์ฒ๋ฆฌ๋ฅผ ์ด์ฉํด์ ๋น ๋ฅธ ์๋ต ์๋๋ฅผ ๋ด๊ณ ์ถ๋ค๋ฉด, โญ๏ธ ๋ทฐ๋ฅผ Merging ํ์ง ์์ ์ํ์์ ๊ณ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ธ๋ผ์ธ ๋ทฐ ์งํฉ๊ณผ NL ๋ฐฉ์์ผ๋ก ์กฐ์ธ โญ๏ธํ๋ฉด ๋๋ค.
- 35๋ฒ
- no_merge ์๋ธ์ฟผ๋ฆฌ๋ ์คํ๊ณํ์ VIEW๊ฐ ๋์จ๋ค.
- no_merge ์๋ธ์ฟผ๋ฆฌ๋ ์คํ๊ณํ์ VIEW๊ฐ ๋์ค๊ณ ์ธ๋ฑ์ค๋ฅผ ์ ์ดํด๋ด์ผํ๋ค.
- push_pred ์ฌ๋ถ๋ฅผ ์ ๋ฐ์ ธ์ผํ๋ค.
[12] ํํธ ์ ๋ฆฌ
use_concat
: โCONCATENATION' ์คํผ๋ ์ด์
์ ํตํด OR Expansion์ด ์๋
no_merge
: ์ธ๋ผ์ธ๋ทฐ ๋ฐ๋ก ์ํ
- ์คํ๊ณํ์ 'VIEW' ์๊น
- push_pred ํํธ ๊ฐ์ด ์ธ ์ ์์
merge
: ์ธ๋ผ์ธ๋ทฐ ํฉ์นจ
- ์คํ๊ณํ์ 'VIEW' ์์ผ๋ฉด ์ ๋จ
- push_pred ํํธ ๊ฐ์ด ์ธ ์ ์์
no_unnest
: ์๋ธ์ฟผ๋ฆฌ ๋ฐ๋ก
- ์คํ๊ณํ์ 'Filter' ์์
unnest
: ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์กฐ์ธ๋ฌธ์ผ๋ก ํฉ์นจ
- ์คํ๊ณํ์ '์กฐ์ธ' ์์ (์ธ๋ฏธ , ํด์ , NL ๋
ธ์๊ด)
- nl_sj , hash_aj ๋ฑ๋ฑ ๋ง์ด ์
๋ด์ผ : 33๋ฒ