1. ν΅κ³ μ 보μ λΉμ© κ³μ° μ리
볡μ‘ν λΉμ© κ³μ° μ리κΉμ§ νμ΅ν νμλ μμ§λ§, μ΅ν°λ§μ΄μ κ° ν΅κ³μ 보λ₯Ό μ΄λ»κ² νμ©νλμ§λ κ°λ΅νκ² μμμΌνλ―λ‘ μ 리ν¨
- μ νλμ μΉ΄λλ리ν°, ν΅κ³μ 보μ ꡬ체μ μΌλ‘ μ΄λ€ νλͺ©λ€μ΄ μλμ§ νμΈ
- μ΅ν°λ§μ΄μ κ° ν΅κ³μ 보λ₯Ό μ΄μ©ν΄ λΉμ©μ κ³μ°νλ μ리 κ°λ΅νκ² μ 리
μ νλμ μΉ΄λλ리ν°
β³οΈ μ νλ (Selectivity)
μ 체 λ μ½λ μ€μμ 쑰건μ μ μν΄ μ νλλ λ μ½λ λΉμ¨
π μ νλ = 1 / NDV*
* NDV (Number of Distinct Values) : μ»¬λΌ κ° μ’ λ₯ κ°μ
β³οΈ μΉ΄λλλ¦¬ν° (Cardinality)
μ 체 λ μ½λ μ€μμ 쑰건μ μ μν΄ μ νλλ λ μ½λ κ°μ
π μΉ΄λλλ¦¬ν° = μ΄ λ‘μ° μ x μ νλ = μ΄ λ‘μ° μ / NDV
π§ μλ₯Ό λ€μ΄, μν λΆλ₯ 컬λΌμ 'κ°μ ', 'μλ₯', 'μμλ£', 'μνκ°μ ' 4κ°μ κ°μ΄ μμ λ,
WHERE μνλΆλ₯='κ°μ 'μ λν μ νλλ 25%(=1/4)μ΄κ³ ,
μ 체 λ μ½λκ° 10λ§ κ±΄μ΄λ©΄ μΉ΄λλ리ν°λ 2λ§ 5μ²μ΄λ€.
π μ΅ν°λ§μ΄μ λ μ΄λ κ² μΉ΄λλ리ν°λ₯Ό ꡬνκ³ , κ·Έλ§νΌμ λ°μ΄ν°λ₯Ό μ‘μΈμ€νλ λ° λλ λΉμ©μ κ³μ°ν΄μ ν μ΄λΈ μ‘μΈμ€ λ°©μ, μ‘°μΈ μμ, μ‘°μΈ λ°©μ λ±μ κ²°μ
λΉμ©μ κ³μ°νλ μΆλ°μ μ μ νλμ΄λ―λ‘, NDVλ₯Ό ν΅κ³ μ 보 μμ§ κ³Όμ μμ μ νν ꡬνλ κ²μ΄ λ§€μ° μ€μ !
ν΅κ³ μ 보
πΉ μ€λΈμ νΈ ν΅κ³
- ν
μ΄λΈ ν΅κ³
- NUM_ROWS (μ΄ λ μ½λ μ)
- BLOCKS (ν μ΄λΈ λΈλ‘ μ)
- AVG_ROW_LEN (λ μ½λ λΉ νκ· κΈΈμ΄)
- SAMPLE_SIZE (μνλ§ν λ μ½λ μ)
- LAST_ANALYZED (ν΅κ³μ 보 μμ§μΌμ)
- μΈλ±μ€ ν΅κ³
- BLEVEL (λΈλμΉ λ 벨μ μ½μλ‘, μΈλ±μ€ 루νΈμμ 리ν λΈλ‘μ λλ¬νκΈ° μ§μ κΉμ§ μ½κ² λλ λΈλ‘ μ)
- LEAF_BLOCKS (μΈλ±μ€ 리ν λΈλ‘ μ΄ κ°μ)
- NUM_ROWS (μΈλ±μ€μ μ μ₯λ λ μ½λ κ°μ)
- DISTINCT_KEYS (μΈλ±μ€ ν€ κ°μ μ‘°ν©μΌλ‘ λ§λ€μ΄μ§λ κ°μ μ’ λ₯ κ°μ)
- AVG_LEAF_BLOCKS_PER_KEY (μΈλ±μ€ ν€ κ°μ λͺ¨λ '=' 쑰건μΌλ‘ μ‘°νν λ μ½κ² λ 리ν λΈλ‘ κ°μ)
- AVG_DATA_BLOCKS_PER_KEY (μΈλ±μ€ ν€ κ°μ λͺ¨λ '=' 쑰건μΌλ‘ μ‘°νν λ μ½κ² λ ν μ΄λΈ λΈλ‘ κ°μ)
- CLUSTERING_FACTOR (μΈλ±μ€ ν€ κ° κΈ°μ€μΌλ‘ ν
μ΄λΈ λ°μ΄ν°κ° λͺ¨μ¬ μλ μ λ)
- μ»¬λΌ ν΅κ³ : ν
μ΄λΈ ν΅κ³ μμ§ν λ ν¨κ» μμ§λ¨
- NUM_DISTINCT (μ»¬λΌ κ°μ μ’ λ₯ κ°μ)
- DENSITY ('=' 쑰건μΌλ‘ κ²μ ν λμ μ νλλ₯Ό 미리 κ΅¬ν΄ λμ κ°)
- AVG_COL_LEN (μ»¬λΌ νκ· κΈΈμ΄)
- LOW_VALUE (μ΅μ κ°)
- HIGH_VALUE (μ΅λ κ°)
- NUM_NULLS (κ°μ΄ NULLμΈ λ μ½λ μ)
β³οΈ μ»¬λΌ νμ€ν κ·Έλ¨
'=' 쑰건μ λν μ νλλ 1/NUM_DISTINCT 곡μμΌλ‘ ꡬνκ±°λ 미리 ꡬν΄λμ DENSITY κ°μ μ΄μ©νλ©΄ λ¨.
μΌλ°μ μΈ μ»¬λΌμλ μ΄ κ³΅μμ΄ λΉκ΅μ μ ν©νμ§λ§, λ°μ΄ν° λΆν¬κ° κ· μΌνμ§ μμ 컬λΌμλ κ·Έλ μ§ λͺ»ν¨.
π κ·Έλ¬λ―λ‘ μΌλ°μ μΈ μ»¬λΌ ν΅κ³ μΈμ νμ€ν κ·Έλ¨μ μΆκ°λ‘ νμ©
νμ€ν κ·Έλ¨μ μ νμΌλ‘λ
- λμλΆν¬ (FREQUENCY, κ°λ³λ‘ λΉλμ μ μ₯)
- λμ΄κ· ν (HEIGHT-BALANCED, κ° λ²ν·μ λμ΄κ° λμΌνλλ‘ λ°μ΄ν° λΆν¬ κ΄λ¦¬)
- μμλμλΆν¬ (TOP-FREQUENCY, λ§μ λ μ½λλ₯Ό κ°μ§ μμ nκ° κ°μ λν λΉλμ μ μ₯)
- νμ΄λΈλ¦¬λ (HYBRID, λμλΆν¬μ λμ΄κ· ν νμ€ν κ·Έλ¨μ νΉμ± κ²°ν©)
πΉ μμ€ν ν΅κ³
: μ΄ν리μΌμ΄μ λ° νλμ¨μ΄ μ±λ₯ νΉμ±μ μΈ‘μ ν κ²
- CPU μλ
- νκ· μ μΈ Single Block I/O μλ
- νκ· μ μΈ Multiblock I/O μλ
- νκ· μ μΈ Multiblock I/O κ°μ
- I/O μλΈμμ€ν μ μ΅λ μ²λ¦¬λ (Throughput)
- λ³λ ¬ Slaveμ νκ· μ μΈ μ²λ¦¬λ (Throughput)
λΉμ© κ³μ° μ리
λ¨μΌ ν μ΄λΈμ μΈλ±μ€λ‘ μ‘μΈμ€ν λμ λΉμ© (μμ I/O Call νμ) κ³μ° μ리λ₯Ό μ΄ν΄λ³΄μ.
μΈλ±μ€ ν€ κ°μ λͺ¨λ '=' 쑰건μΌλ‘ κ²μν λ μΈλ±μ€ ν΅κ³λ§μΌλ‘ μ½κ² λΉμ© κ³μ° κ°λ₯
π λΉμ©
= BLEVEL (μΈλ±μ€ μμ§μ νμ λΉμ©)
+ AVG_LEAF_BLOCKS_PER_KEY (μΈλ±μ€ μνμ νμ λΉμ©)
+ AVG_DATA_BLOCKS_PER_KEY (ν
μ΄λΈ λλ€ μ‘μΈμ€ λΉμ©)
μΈλ±μ€ ν€ κ°μ΄ λͺ¨λ '=' μ‘°κ±΄μ΄ μλ λλ ν΅κ³ 컬λΌκΉμ§ νμ©
π λΉμ©
= BLEVEL (μΈλ±μ€ μμ§μ νμ λΉμ©)
+ LEAF_BLOCKS x μ ν¨ μΈλ±μ€ μ νλ (μΈλ±μ€ μνμ νμ λΉμ©)
+ CLUSTERING_FACTOR x μ ν¨ ν μ΄λΈ μ νλ (ν μ΄λΈ λλ€ μ‘μΈμ€ λΉμ©)
μ ν¨ μΈλ±μ€ μ νλμ μ ν¨ ν μ΄λΈ μ νλλ μ»¬λΌ ν΅κ³ λ° νμ€ν κ·Έλ¨μ μ΄μ©ν΄ κ³μ°ν¨.
- μ ν¨ μΈλ±μ€ μ νλ : μ 체 μΈλ±μ€ λ μ½λ μ€ μ‘μΈμ€ 쑰건μ μν΄ μ νλ κ²μΌλ‘ μμλλ λ μ½λ λΉμ€ μλ―Έ
- μ ν¨ ν μ΄λΈ μ νλ : μ 체 μΈλ±μ€ λ μ½λ μ€ μΈλ±μ€ 컬λΌμ λν λͺ¨λ 쑰건μ μ μν΄ μ νλ κ²μΌλ‘ μμλλ λ μ½λ λΉμ€ μλ―Έ