2023. 12. 2. 18:09γDatabase/DB μ€ν°λ
Databaseκ° μΏΌλ¦¬μμ μꡬνλ λ°μ΄ν°λ₯Ό κ²μνκΈ° μν΄ ν μ΄λΈμ μ κ·Όνλ λ°©μμλ λ€μν μ’ λ₯κ° μλ€.
ν¬κ²λ μΈλ±μ€μ νμ© μ¬λΆμ λ°λΌ κ°λ¦¬κ³ , μΈλ±μ€λ₯Ό μ΄λ€ λ°©μμΌλ‘ μ€μΊν μ§μ λν΄μλ μ’ λ₯κ° λλλ€. μ΄λ κ² λλ ν μ΄λΈ μ€μΊ λ°©μμ λλ΅ μλμ κ°μ΄ λνλΌ μ μλ€.
- Table Full Scan(Sequential Scan)
- Index Range Scan
- Index Full Scan
- Index Unique Scan
- Index Skip Scan
- Index Fast Full Scan
μ΄ λ κ° μ€μΊ λ°©μλ€μ λ΄λΆμ μΈ μλ λ°©μμ λ°λΌ μλ‘ λ€λ₯Έ Block IO μ λ΅μ κ°κ² λλλ°, μ΄λ¬ν λ΄λΆ μλμ μ°¨μ΄λ₯Ό μ΄ν΄νλ©΄ μ DBκ° ν΄λΉ λ°©μμ μ¬μ©νλμ§μ λν μ΄ν΄λλ₯Ό λμΌ μ μλ€.
λ°λΌμ ν΄λΉ κΈμμλ μ΄μ λν΄ λ€λ€λ³΄λ €κ³ νλ€.
Block IOλ?
λ³Έλ¬ΈμΌλ‘ λ€μ΄κ°κΈ° μ μ Block IOμ λν κ°λ μ λ¨Όμ λ€λ£¨λ €κ³ νλ€.
Databaseλ κΈ°λ³Έμ μΌλ‘ λ°μ΄ν°λ€μ Diskμ μ μ₯νκ³ , μ½μ΄ μ¬ λ λ΄λΆ λ²νΌ μΊμμ λ°μ΄ν°κ° μλ κ²½μ° Disk IOλ₯Ό λ°μμμΌ λ°μ΄ν°λ₯Ό μ½μ΄μ¨ λ€ μ΄λ₯Ό DB λ΄λΆ λ²νΌ μΊμμ μ μ¬νμ¬ λ€μν μ²λ¦¬λ₯Ό μ§ννλ€. μ΄ λ Disk IOμ μ΅μ λ¨μκ° λλ κ²μ΄ λ°λ‘ Blockμ΄λ€. ν μ΄λΈ λ΄ λ°μ΄ν°λ μΈλ±μ€κ° μ΄μ μ μ₯λλ€. μΌλ°μ μΌλ‘ νλμ Blockμ ν¬κΈ°λ 8KBλ₯Ό κ°λλ€. (Mysqlμ κ²½μ°μ 16KBκ° κΈ°λ³Έ μ€μ )
μ¦, λμ€ν¬μμ Block λ¨μλ‘ λ°μ΄ν°λ₯Ό μ½μ΄μμ λ²νΌ μΊμμ μ μ¬νλ κ³Όμ μ Block IOλΌκ³ μΉνλ€.
Single Block IO vs Multi Block IO
Block IOκ° λ¬΄μμΈμ§ μ€λͺ νκΈ° λλ¬Έμ, Singleκ³Ό Multiμ μ°¨μ΄λ₯Ό μ΄ν΄νλ κ²μ κ°λ¨νλ€.
λ§κ·Έλλ‘ SingleμΌ κ²½μ°μ νλ²μ μμ€ν μ½μμ νλμ Blockλ§μ μ½λ κ²μ μλ―Ένκ³ , Multiμ κ²½μ°μ νλ²μ μμ€ν μ½μμ μ¬λ¬ Blockμ μ½λ κ²μ μλ―Ένλ€.
μμ€ν μ½μ΄ λ°μν λλ§λ€ νλ‘κ·Έλ¨μ μ΄μ체μ μ CPU μ μ΄κΆμ λκ²¨μ£Όκ³ μ¬μ€μ λ©μΆ°μμ΄μΌ νκΈ° λλ¬Έμ(wait) νλ²μ μ¬λ¬ λΈλ‘μ μ½μ΄μ€λ Multi Block IOκ° λ¬΄μ‘°κ±΄ μ’μ κ² μλκ°λΌκ³ μκ°ν μ μλ€.
μ Single Block IO λ°©μμ΄ λ°λ‘ μ‘΄μ¬νλμ§ μ΄ν΄νκΈ° μν΄ μ΄λ€ μ€μΊ λ°©μμ΄ Single Block IOλ₯Ό μ¬μ©νλμ§ μ νμκ° μλ€.
Single Block IOλ₯Ό μ¬μ©νλ μ€μΊ λ°©μ
μλ‘ μμ μΈκΈν μ€μΊ λ°©μλ€ μ€, Single Block IOλ₯Ό μ¬μ©νλ μ€μΊ λ°©μμ μλμ κ°λ€.
μ΄λ€ μ€μΊ λ°©μμλ μ΄λ€ 곡ν΅μ μ΄ μμκΉ?
- Index Range Scan
- Index Full Scan(λ¨, μΈλ±μ€λ₯Ό ν΅ν΄ μΆκ°μ μΈ ν μ΄λΈ μ€μΊ μμκ° μλ κ²½μ°μ νν¨)
- Index Unique Scan
- Index Skip Scan
λ°λ‘ μΈλ±μ€μ λ Όλ¦¬μ ꡬ쑰μ μμ‘΄ν μ± μ λ ¬λ μΈλ±μ€λ₯Ό μμ°¨μ μΌλ‘ νμνλ μ€μΊ λ°©μμ΄λΌλ μ μ΄λ€.
μΈλ±μ€λ νμ μ λ ¬λ μνλ₯Ό μ μ§νλ μλ£κ΅¬μ‘°λ₯Ό κ°λλ°, μ¬κΈ°μμ λνλλ μ λ ¬μ κ°λ μ΄ νΉμ λΈλ‘ λ 벨(물리μ κ°λ )μμλ 무μλ―Έν΄μ§λ€. (λ Όλ¦¬μ μ λ ¬ ꡬ쑰 != 물리μ ꡬ쑰)
μ¦, νλμ μΈλ±μ€ ꡬ쑰μ λν μμλ€μ μ¬λ¬ Blockμ λλμ΄ μ μ₯λκ³ μ΄λ μΈλ±μ€κ° λ Όλ¦¬μ μΌλ‘ μ λ ¬λ μμμ μκ΄μ΄ μλ€λ μλ―Έμ΄λ€.
λ°λΌμ λ Όλ¦¬μ μΌλ‘ μ λ ¬λ μΈλ±μ€ ꡬ쑰λ₯Ό λ°λΌ νμμ μ§ννλ €λ©΄ νλ²μ νλμ Block λ§μ μ½μ΄κ°λ©° νμΈμ ν΄μΌνλ€.
Single Block IOλ‘ μΈν νκ³
λ§μ½ Single Block IO λ°©μμ ν΅ν΄ μ½μ΄λ΄μΌν λ°μ΄ν°μ μκ° λ§λ€λ©΄, μμ€ν μ½ κ±΄λΉ λΉν¨μ¨μ΄ λμ λλ€. λ°λΌμ μ½μ΄λ΄μΌν λ°μ΄ν°κ° μ 체 λ°μ΄ν°μ λΉν΄ κ½€ λ§λ€λ©΄ ν΄λΉ λ°©μμ μ¬μ©νλ κ²μ΄ μ€νλ € λ λ릴 μ μλ€.
μΈλ±μ€λ₯Ό μ΄μ©ν μ€μΊμ΄ λͺ¨λ κ²½μ°μ λν΄ λ λΉ λ₯Έ μ νμ§κ° μλ μ΄μ κ° λ°λ‘ μ΄ κ²μ΄λ€.
μ΄λ° κ²½μ°μ Multi Block IOλ₯Ό ν΅ν΄ μμ€ν μ½ νΈμΆ νμλ₯Ό μ€μ΄λ κ²μ΄ λ λΉ λ₯Έ μ νμ§κ° λλ€.
μΈλ±μ€κ° νμ©ν μ μλ κ²½μ°μμλ μ’ μ’ DBκ° μ 체 ν μ΄λΈμ μ½λ μ΄μ λ, DB λ΄λΆμ μ΅ν°λ§μ΄μ κ° μ λ Όλ¦¬μ λ°λΌ νλ¨νκΈ° λλ¬Έμ΄λ€.
Index Fast Full Scan
μΈλ±μ€λ₯Ό νμ©νλ©΄μλ Multi Block I/O λ°©μμ μ¬μ©νλ κ²½μ°λ μλλ°, λ°λ‘ Index Fast Full Scan λ°©μμ΄λ€.
μ΄ λ°©μμ μΈλ±μ€μ λ Όλ¦¬μ μ λ ¬ ꡬ쑰λ₯Ό μμ ν 무μν μ±, μ¬λ¬ Blockμ νλ²μ λ²νΌμ κ°μ Έμ μ½μ΄λ΄λ λ°©μμ΄λ€.
μ λ ¬ ꡬ쑰λ₯Ό 무μνκΈ° λλ¬Έμ λ²νΌμ μ½μ΄μμ λ μ λ ¬ μνκ° μ μ§λμ§ μλλ€λ λ¨μ μ΄ μλ€.
μ λ ¬μ΄ μ μ§λμ§ μλ μΈλ±μ€ μ€μΊμ΄λΌλ©΄ λ¬΄μ¨ μλ―Έκ° μμκΉ μΆμ μ μμ§λ§,
쿼리μ ν¬ν¨λ λͺ¨λ μΉΌλΌμ΄ μΈλ±μ€μ μ‘΄μ¬νλ κ²½μ°μ μ΄λ₯Ό Multi Block IO λ°©μμΌλ‘ μ½μ΄μ¬ μ μκΈ° λλ¬Έμ νμ©λλ λ°©μμ΄λ€.
'Database > DB μ€ν°λ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λ±νΈ μ°μ°μμ LIKE μ°μ°μ κ° λΉκ΅ (1) | 2023.12.17 |
---|---|
Buffer Pinning κΈ°λ² (in Oracle) (0) | 2023.12.09 |
DB μΈλ±μ€ μμ±μ μ¬μ΄λ μ΄ννΈ(with Mysql) (1) | 2023.11.25 |
DB μ€νκ³ν νμΈλ²(in PostgreSQL) (1) | 2023.11.11 |
RDB vs NoSQL (0) | 2023.02.18 |