π 22-08-07
SQLP 3κ³Όλͺ© μ΄λ‘ 볡μ΅
SQLP νκΈ° νμ΄
[SQLPνκΈ°νμ΄]6μ₯ κ³ κΈSQLνλ(5) νν°μ
λ
- 26λ² , 27 , 28 , 29 , 30 , 31 , 32
33 , 34 ,35 ,36 , 37 , 38 , 39 , 40
41 , 42λ²
π 8/7 볡기
[1] λ°°μΉ νλ‘κ·Έλ¨μ μ μ
β
λ°°μΉ νλ‘κ·Έλ¨
- μΌλ ¨μ μμ
λ€μ νλμ μμ
λ¨μλ‘ λ¬Άμ΄ μ°μμ μΌλ‘ μΌκ΄ μ²λ¦¬νλ κ²
- μ¨λΌμΈ νλ‘κ·Έλ¨μμλ μ¬λ¬ μμ
μ λ¬Άμ΄ μ²λ¦¬νλ κ²½μ°κ° μμΌλ―λ‘ μ΄μ ꡬλΆνλ €λ©΄ 'μ¬μ©μμμ μνΈμμ©(Interaction) μ¬λΆ' νΉμ§μ λ μΆκ°ν΄μΌνλ€.
- μ¬μ©μμμ μνΈμμ© μμ΄ λλμ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ μΌλ ¨μ μμ
λ€μ λ¬Άμ΄ μ κΈ°μ μΌλ‘ λ°λ³΅ μννκ±°λ
- μ¬μ©μμμ μνΈμμ© μμ΄ λλμ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ μΌλ ¨μ μμ
λ€μ λ¬Άμ΄ μ ν΄μ§ κ·μΉμ λ°λΌ μλμΌλ‘ μννλ€.
- κΈ°μ
λ§λ€ μ
무 μκ±΄μ΄ μλ λ³΅μ‘ λ€μνλ―λ‘ μ΄ μΈμλ μ¬λ¬ κ°μ§ ννκ° μ‘΄μ¬ν μ μλ€.
- μ κΈ° λ°°μΉ ννκ° κ°μ₯ μΌλ°μ μ΄λ€.
[2] λ°°μΉ νλ‘κ·Έλ¨μ μ’
λ₯
β
λ°°μΉ νλ‘κ·Έλ¨μ μ’
λ₯ (μνμ£ΌκΈ° κΈ°μ€)
- On-Demand λ°°μΉ :: λ°°μΉ νλ‘κ·Έλ¨μ΄ μλμΌλ‘ μνλλ μ£ΌκΈ°λ μλ¨μ, μ£Όλ¨μ, μΌλ¨μκ° λ³΄ν΅μ΄μ§λ§, μμ¦μ μ£ΌκΈ°κ° μ μ 짧μμ Έ μ’
μ’
μ€μκ°μ΄ μꡬλκΈ°λ νλ€. μ¬μ©μκ° μμ²ν μμ μ λ°λ‘ μμ
μ μμνλ€
- μ κΈ° λ°°μΉ : μ ν΄μ§ μμ (μ£Όλ‘ μΌκ°)μ μ€νλλ€.
- μ΄λ²€νΈμ± λ°°μΉ : μ¬μ μ μ μν΄ λ μ‘°κ±΄μ΄ μΆ©μ‘±λλ©΄ μλμΌλ‘ μ€ν
β
λ°°μΉ νλ‘κ·Έλ¨μ μ’
λ₯ (μμ± νν κΈ°μ€)
- μ μ°¨νμΌλ‘ μμ±λ νλ‘κ·Έλ¨
- SQL κ²°κ³Όμ§ν©μ 루ν λ΄μμ νκ±΄μ© Fetchνλ€.
- SQLμ λ°λ³΅ν΄μ μννλ νν
- μΈλ±μ€ ꡬμ±μ΄ μ€μνλ€.
- One SQL μμ£Όλ‘ μμ±λ νλ‘κ·Έλ¨
[3] λ°°μΉ νλ‘κ·Έλ¨μ νΉμ§
- λ°°μΉ νλ‘κ·Έλ¨μ DW/OLAP μμ€ν
λΏλ§ μλλΌ OLTP(μ¨λΌμΈ νΈλμμ
μ²λ¦¬) μμ€ν
μμλ λ§μ΄ νμ©νλ€.
- μ€μκ°μ κ°κΉμ΄(Near Real Time) μ 보 μλΉμ€ μκ΅¬κ° λλ©΄μ On-Demand λ°°μΉκ° λκ³ , νΈλμμ
μ μΌμ λ λͺ¨μλ€κ° μ§μ°(deferred) μ²λ¦¬νλ λ°°μΉ νλ‘κ·Έλ¨μ νμ©λ λλ μΆμΈλ€.
- βοΈμΌκ° λ°°μΉ νλ‘κ·Έλ¨μ νλν λλ κ°λ³ νλ‘κ·Έλ¨ μνμκ°μ λ¨μΆνκΈ°λ³΄λ€ μ 체 νλ‘κ·Έλ¨ μνμκ°μ λ¨μΆνλ λ° λ ν° λͺ©νλ₯Ό λμ΄μΌ νλ€βοΈ
- λ°°μΉ νλ‘κ·Έλ¨μ νμ μ 체 μ²λ¦¬μλ μ΅μ νμ λͺ©νλ₯Ό λκ³ νλν΄μΌ νλ€.
[4] λ³λ ¬ μ²λ¦¬μμμ λ°μ΄ν° μ¬λΆλ°° λ°©μ
β
λ°μ΄ν° μ¬λΆλ°° λ°©μμ μ’
λ₯
- λ°μ΄ν° μ¬λΆλ°°λ λ³λ ¬ μλ² νλ‘μΈμ€ κ°μ λ°μ΄ν°λ₯Ό μ¬λΆλ°°νλ λ°©μμ΄λ€.
- RANGE λ°©μ
- order by λλ sort group byλ₯Ό λ³λ ¬λ‘ μ²λ¦¬ν λ μ¬μ©λλ€.
- 첫 λ²μ§Έ μλ² μ§ν©μ λ°μ΄ν°λ₯Ό μ½μ΄ κ° νλ‘μΈμ€λ§λ€ μ²λ¦¬ λ²μ(μλ₯Ό λ€μ΄, A~G, H~M, N~S, T~Z)λ₯Ό μ§μ νμ¬ κ·Έ λ λ²μ§Έ μλ² μ§ν©μ μ ν΄μ§ νλ‘μΈμ€μκ² βμ λ ¬ ν€ κ°μ λ°λΌ λΆλ°°νλ€.
- λ λ²μ§Έ μλ² μ§ν©μ μ λ ¬ μμ
μ 맑λλ€.
- QCλ κ° μλ² νλ‘μΈμ€μκ² μμ
λ²μλ₯Ό ν λΉνκ³ μ λ ¬ μμ
μλ μ§μ μ°Έμ¬νμ§ μλλ€.
μ λ ¬μ΄ μλ£λκ³ λλ©΄ μμλλ‘ κ²°κ³Όλ₯Ό λ°μμ μ¬μ©μμκ² μ μ‘νλ€.
- BROADCAST λ°©μ
- QC λλ 첫 λ²μ§Έ μλ² μ§ν©μ μν νλ‘μΈμ€λ€μ΄ κ°κ° μ½μ λ°μ΄ν°λ₯Ό λ λ²μ§Έ μλ² μ§ν©μ μν βλͺ¨λ β λ³λ ¬ νλ‘μΈμ€μκ² μ μ‘νλ λ°©μμ΄λ€.
- λ³λ ¬ μ‘°μΈμμ ν¬κΈ°κ° λ§€μ° μμ ν
μ΄λΈμ΄ μμ λ μ¬μ©νλ€.
- KEY λ°©μ
- νΉμ μΉΌλΌ(λ€)μ κΈ°μ€μΌλ‘ ν
μ΄λΈ λλ μΈλ±μ€λ₯Ό νν°μ
λν λ μ¬μ©νλ λΆλ°° λ°©μμ΄λ€.
- ROUND-ROBIN λ°©μ
- νν°μ
ν€, μ λ ¬ ν€, ν΄μ ν¨μ λ±μ μμ‘΄νμ§ μκ³ λ°λνΈ λ³λ ¬ μλ²μ 무μμλ‘ λ°μ΄ν°λ₯Ό λΆλ°°ν λ μ¬μ©νλ€.
- HASH λ°©μ
- μ‘°μΈμ΄λ hash group byλ₯Ό λ³λ ¬λ‘ μ²λ¦¬ν λ μ¬μ©λλ€.
- μ‘°μΈ ν€λ group by ν€ κ°μ ν΄μ ν¨μμ μ μ©νκ³ λ¦¬ν΄λ κ°μ λ°λΌ λ°μ΄ν°λ₯Ό λΆλ°°νλ λ°©μμ΄λ€.
[5] λ³λ ¬ μ²λ¦¬μμμ Granule
β
λ³λ ¬μ²λ¦¬μμμ Granule
- λ°μ΄ν°λ₯Ό λ³λ ¬λ‘ μ²λ¦¬ν λ μΌμ μ΅μ λ¨μλ₯Ό 'Granule'μ΄λΌκ³ νλ€.
- λ³λ ¬ μλ²λ ν λ²μ νλμ Granuleμ©λ§ μ²λ¦¬νλ€.
- λΈλ‘ κΈ°λ° Granule(=λΈλ‘ λ²μ Granule)
- QCκ° ν
μ΄λΈλ‘λΆν° μ½μ΄μΌ ν μΌμ λ²μ(Range)μ λΈλ‘μ κ° λ³λ ¬ νλ‘μΈμ€μκ² ν λΉνλ€.
- λ³λ ¬ νλ‘μΈμ€κ° ν Granuleμ λν μΌμ λλ§μΉλ©΄ μ΄μ΄μ λ€λ₯Έ Granuleμ ν λΉνλ€.
- λ°λΌμ νλ‘μΈμ€ κ° μ²λ¦¬λμ νΈμ°¨κ° κ±°μ λ°μνμ§ μλλ€.
- βοΈνν°μ
μ¬λΆ, νν°μ
κ°μμ 무κ΄νκ² λ³λ ¬λλ₯Ό μ§μ ν μ μλ€.βοΈ
- βοΈλ³λ ¬ Full Table Scanμ λΈλ‘ κΈ°λ° Granuleμ΄λ―λ‘ νν°μ
κ°μλ³΄λ€ ν° λ³λ ¬λλ₯Ό μ§μ ν΄λ μκ΄μλ€.βοΈ
- νν°μ
κΈ°λ° Granule(νν°μ
Granule)
- ν νν°μ
μ λν μμ
μ ν νλ‘μΈμ€κ° λͺ¨λ μ²λ¦¬νλ€.
- Partition-Wise μ‘°μΈ μ
- νν°μ
μΈλ±μ€λ₯Ό λ³λ ¬λ‘ μ€μΊν λ(Index Range Scan, Index Full Scan)
- νν°μ
μΈλ±μ€λ₯Ό λ³λ ¬λ‘ κ°±μ ν λ
- νν°μ
ν
μ΄λΈ λλ νν°μ
μΈλ±μ€λ₯Ό λ³λ ¬λ‘ μμ±ν λ
- ν νν°μ
μ λ κ° νλ‘μΈμ€κ° ν¨κ» μ²λ¦¬ν μ μλ€.
- λ³λ ¬λλ₯Ό νν°μ
κ°μλ³΄λ€ ν¬κ² μ§μ νλ©΄ μλ² λ¦¬μμ€λ₯Ό λλΉνκ² λλ€.
- λ³λ ¬λλ₯Ό νν°μ
κ°μ μ΄νλ‘ μ§μ ν λλ λΈλ‘ κΈ°λ° Granuleκ³Ό λ§μ°¬κ°μ§λ‘ λ¨Όμ μΌμ λ§μΉ νλ‘μΈμ€μκ² λ€μ νν°μ
μ ν λΉνλ€.
- μ²λ¦¬ν νν°μ
μ΄ μμ λ λ¨Όμ μΌμ λλ§μΉ νλ‘μΈμ€λ λ€λ₯Έ νλ‘μΈμ€κ° μΌμ λ§μΉ λκΉ
μ§ κΈ°λ€λ¦¬κ² λλ―λ‘ νν°μ
κ° λ°μ΄ν°μμ νΈμ°¨κ° μ¬ν λ 리μμ€λ₯Ό λλΉνκ² λλ€.
[6] λ³λ ¬ μ‘°μΈ μ’
λ₯
μ°Έκ³ λ§ν¬
β
Full Partition Wise μ‘°μΈ
- κ°μ κΈ°μ€μΌλ‘ νν°μ
λ λ ν
μ΄λΈμ μ‘°μΈν λ μ¬μ©νλ λ³λ ¬ μ‘°μΈ λ°©μ
- μμͺ½ ν
μ΄λΈμ κ°μ κΈ°μ€μΌλ‘ νν°μ
νκΈ° μν΄ λ°μ΄ν°λ₯Ό μ¬λΆλ°°ν νμκ° μλ€.
- λ³λ ¬ νλ‘μΈμ€λ₯Ό 2λ°°μλ‘ ν λΉνμ§ μλλ€. μ¦ , νλμ μλ²μ§ν©λ§ νμνλ€.
- νν°μ
κΈ°λ° λ³λ ¬μ²λ¦¬μ΄λ―λ‘ νν°μ
κ°―μ μ΄νλ‘ λ³λ ¬λλ₯Ό μ ννλ€.
β
Partial Partition Wise μ‘°μΈ
- 첫 μλ² μ§ν©μ΄ λΉ νν°μ
ν
μ΄λΈμ νν°μ
ν
μ΄λΈ κΈ°μ€μΌλ‘ λμ νν°μ
λνλ€.
- λ κ°μ μλ²μ§ν©μ΄ νμνλ€.(Partition degree * 2 κ° Process)
- κ° μλ²μ§ν© κ° λ°μ΄ν° ν΅μ μ΄ λ°μνλ€.
[6] λ³λ ¬ μ²λ¦¬μ νν°μ
λ ννΈ
β
pq_distribute μ¬μ©λ²
- pq_distribute(inner, none, none)
- Full-Partition Wise JoinμΌλ‘ μ λν λ μ¬μ©
- λΉμ°ν, μμͺ½ ν
μ΄λΈ λͺ¨λ μ‘°μΈ μΉΌλΌμ λν΄ κ°μ κΈ°μ€μΌλ‘ νν°μ
λ(equi-partitioning) λΌ μμ λλ§ μλνλ€.
- pq_distribute(inner, partition, none)
- Partial-Partition Wise JoinμΌλ‘ μ λν λ μ¬μ©
- outer ν
μ΄λΈμ inner ν
μ΄λΈ νν°μ
κΈ°μ€μ λ°λΌ νν°μ
λνλΌλ λ»μ΄λ€.
- λΉμ°ν, inner ν
μ΄λΈμ΄ μ‘°μΈ ν€ μΉΌλΌμ λν΄ νν°μ
λ λΌ μμ λλ§ μλνλ€.
- pq_distribute(inner, none, partition)
- Partial-Partition Wise JoinμΌλ‘ μ λν λ μ¬μ©
- inner ν
μ΄λΈμ outer ν
μ΄λΈ νν°μ
κΈ°μ€μ λ°λΌ νν°μ
λνλΌλ λ»μ΄λ€.
- λΉμ°ν, outer ν
μ΄λΈμ΄ μ‘°μΈ ν€ μΉΌλΌμ λν΄ νν°μ
λ λΌ μμ λλ§ μλνλ€.
- pq_distribute(inner, hash, hash)
- μ‘°μΈ ν€ μΉΌλΌμ ν΄μ ν¨μμ μ μ©νκ³ κ±°κΈ°μ λ°νλ κ°μ κΈ°μ€μΌλ‘ μμͺ½ ν
μ΄λΈμ λμ μΌλ‘ νν°μ
λνλΌλ λ»μ΄λ€.
- μ‘°μΈλλ ν
μ΄λΈμ λ λ€ νν°μ
λν΄μ νν°μ
μ§(Partition Pair)μ ꡬμ±νκ³ μ Partition Wise Joinμ μννλ€.
- pq_distribute(inner, broadcast, none)
- outer ν
μ΄λΈμ Broadcast νλΌλ λ»μ΄λ€.
- pq_distribute(inner, none, broadcast)
- inner ν
μ΄λΈμ Broadcast νλΌλ λ»μ΄λ€.