22-08-17

Yu Riverยท2022๋…„ 8์›” 17์ผ
0

๊ณต๋ถ€ ์ผ์ง€

๋ชฉ๋ก ๋ณด๊ธฐ
12/28

๐Ÿ—“ 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๋ฒˆ
profile
๋„๊ด‘์–‘ํšŒ(้Ÿœๅ…‰้คŠๆ™ฆ) โ€˜๋น›์„ ๊ฐ์ถ”๊ณ  ์–ด๋‘ ์†์—์„œ ํž˜์„ ๊ธฐ๋ฅธ๋‹คโ€™

0๊ฐœ์˜ ๋Œ“๊ธ€