1 νλμ νμμ± #
μ΄λ² μ₯μμλ νλμ μ μ°¨μ λν μ μ°¨λ₯Ό κ°λ΅νκ² μμλ³Ό κ²μ΄λ€. νλμ μ μ°¨κ° νμν κ²μ λΉμ°ν μ±κ³΅λ¦¬μ νλμ λ§μΉκΈ° μν¨μ΄λ€. κ°κ°μ νλͺ©μ μ΄ν΄λ³΄λ©΄μ μ κ°κ°μ λ¨κ³κ° νμνμ§ μμλ³Ό κ²μ΄λ€. λ§μ 컨μ€ν΄νΈλ€μ΄ νμμ λΉμ·ν νλ‘μΈμ€λ₯Ό λ°μκ°λ©°, νλμμ
μ νλ€. μν©μ λ°λΌ μ μ ν μμ©νλ©΄ λλ€. νΉμλ μ΄μ κ°μ κ³Όμ μ νμ μκ³ βλΉμ₯ μ΄ SQLμ 3μ΄ μμ λλκ² ν΄λ!β λΌκ³ ν μ μλ€. μ΄ μ¬λμ μ€μν κ²μ μκ³ μμμ΄ λΆλͺ
νλ€. νΉμ λΆλΆμ νλνλ€κ³ ν΄μ 무쑰건 λΉ¨λΌμ§κ³ , μ΅μ νλλ κ²μ μλλ€. λν νΉμ ν λΆλΆμ νλνλ©΄ λ€λ₯Έ κ³³μ΄ λλ €μ§ μλ μλ€. ν°λλ€κ³Ό λ°μ λ©μ΄λ¦¬λ€μ΄ λͺ¨μ¬ νμ°μ΄ λ κ²μ΄λ―λ‘ νλμ© μ‘μκ°λ κ²μ΄ μ’λ€. 미리 μΈκΈνμ§λ§ ν°λλ€μ μΈλ±μ€ μμ± λ° μ‘°μ μΌλ‘ κ±°μ ν΄κ²°λκ³ , λ°μ λ©μ΄λ¦¬λ€μ μ΄λ£¨λ§μ Έ μ€ μμ΄ νμνλ€. λ€μμ κ·Έλ¦Όμ 보μ.
μ΄ λͺ¨λ κ²μ΄ λ§μ‘±λλ €λ©΄ μμ€ν
μ 체λ₯Ό 보μμΌ νκΈ° λλ¬Έμ ν° κ·Έλ¦Όμ κ·Έλ €κ°λ©΄μ μΈλΆμ μΌλ‘ λ€μ΄κ°μΌ νλ€. μΌλ ¨μ κ³Όμ λ€μ μ²μ μ νλ μμ€ν
μ μκ³ λν ν¨μ¨μ μΈ νλμ μν¨μ΄κΈ°λ νλ€.
2 μ μ ν κΆνμ νλκ³Ό νλ ₯μ μ½μ #
νλμ ν λλ λ§μ μΈλ ₯μ΄ ν¬μ
λμ§ μλ κ²μ΄ μΌλ°μ μ΄λ€. κ·Έλ¬λ―λ‘ κ°λ°μλ€κ³Όμ νλ ₯κ³Ό μ μ ν κΆνμ΄ μ£Όμ΄μ ΈμΌλ§ νλμμ
μ μ±κ³΅λ¦¬μ λ§μΉ μ μλ€. λλΆλΆμ νλμμ
μ μμ€μ μμ μ΄ λΆκ°νΌν κ²½μ°κ° λ§μ΄ μμΌλ©°, μμ€ μμ μ μν΄ κ°λ°μλ€μ ν΅μ ν μ μλ κΆνμ΄ μ£Όμ΄μ§μΌλ‘ ν΄μ λΉμ©κ³Ό ν¨κ³Όλ₯Ό μ κ°ν μ μλ€. λν νλμΈλ ₯μ΄ λͺ¨λ μμ μ ν μ μμΌλ―λ‘ κ΅μ‘μ ν΅ν κ°λ°μ μ€μ€λ‘ μμ μ νλλ‘ μ λνλ κ²λ νλμ λ°©λ²μ΄λ€.
μ€μ λ‘ μμ μ μ§κΈμ΄λ κ°λ°μμ μμ‘΄μ¬ λλ¬Έμ νλμμ
μ΄ μ λλ‘ μ΄λ£¨μ§μ§ μμ μλ μλ€. κ·Έλ¬λ―λ‘ νλμμ
μ μλ§νκ² μ§ννκΈ° μν΄μ μμ μ΄ μ΄λ€ μμ
μ ν κ²μ΄λ λ°λΌμ€ κ²μ 미리 μ½μ λ°λ κ²μ λ§€μ° μ€μνλ€. μ°μ€μ΄ κ²μ κ°λ°νκ²½μ λ°λΌμ DBAμ κΆνμ΄ μ°¨μ΄κ° λλ€λ κ²μ΄λ€. κΆνμ΄ μ λμ€κ³μ΄μ λ§€μ° λ§κ°νλ° λΉν΄ MSκ³μ΄μ DBAμ κΆνμ΄ κ·Έμ κ·Έλ λ€. λ¬Όλ‘ λͺ¨λκ° κ·Έλ μ§λ μμ§λ§ λλ΅ κ·Έλ λ€. κ°λ°νκ²½μ΄ λ¬Έμ λ μλ κ²μ΄λ€. DBAκ° νλ‘μ νΈμ μ€ν¨κ° λμ 보μ΄μ§ μμμ μ¦, μ€λ ₯μ΄ λΆμ‘±μκ±°λ DBAλ³΄λ€ λ λ§κ°ν κΆνμ μ§λμκ° νλ‘μ νΈλ₯Ό λ§μ³ λμμμ§λ..
DBAλ λ°μ΄ν°λ² μ΄μ€μ λͺ¨λ μ
무λ₯Ό κ΄μ₯νλ μ¬λμ΄λ€. λ°μ΄ν°λ² μ΄μ€ μμ€ν
μ μ€μ μμλΆν° μ€κ³/ꡬν λ±μ κ°λ°μ μ΄λ₯΄κΈ°κΉμ§ λ§€μ° κ΄λ²μν μν μ κ°μ§κ³ μλ€. μ°λ¦¬λλΌμ DBAλΌκ³ νλ©΄ μ격μ¦μ μ·¨λνκ³ , μ μ°μ€μμ λ°±μ
κ³Ό 볡μ/볡ꡬλ₯Ό μν΄ ν
μ΄νλ₯Ό κ°μ λΌμ°λ μ¬λ μ λλ‘λ§ μκ°νλ κ²½μ°κ° λ§μ΄ μλ€. μ€μ λ‘ κ·Έλ° κ²½μ°κ° λ§μ΄ μκ³ , λ°±μ
/볡μμ νμ§ λͺ»νλ DBAλ μλ€. μ¬μ§μ΄λ βSELECT * FROM TABLE_NAMEβ μ SQLλ§ μκ³ μλ κ²½μ°λ μλ€. DBAλΌλ νμ΄νμ κ°μ§κ³ μμΌλ©΄μ μ§μ κ΄λ¦¬νμ§ μκ³ , λ€λ₯Έ μ
체μ μ μ§/보μ κ³μ½μ νλ κ²½μ°λ λ§μ΄ μλ€. κΈ°μ
μ μμ¬κ²°μ κΆμμ κ΄μ μμ 보면 μ΄μ€μΌλ‘ λ λλΉλ₯Ό νκ³ μλ μ
μ΄λ€.
κ·Έλ λ€λ©΄ λ°±μ
μ μ λ°λ μ¬λμ΄ DBAμΌκΉ? μμ μ€μλ κ΄λ¦¬μμ©, κ°λ°μμ©μ΄λΌκ³ ν΄μ μ±
μ 2κΆμΌλ‘ λλμ΄ λμ κ²½μ°λ μκ³ , βκ΄λ¦¬μμ μ
μ₯μμβ¦β λλ βκ°λ°μμ μ
μ₯μμβ¦βλΌλ λ§μ μ°κΈ°λ νλ€. (λ¬Όλ‘ νμμ λ λ€λ₯Έ μ±
μμ βκ΄λ¦¬μλ₯Ό μνβ μ΄λΌλ λ¨μ΄κ° λΆμ΄ μλ€. νμλ μλΉν λ§μ λ€μ§ μμμ§λ§ λμΈμκΈ°μ λ°λ₯΄λ κ²μ΄ λ«κ² λ€λ μκ°μ κ·Έ λΉμμλ κ·Έλ κ² νλ€.) κ³Όμ° κ°λ°μ, κ΄λ¦¬μλ‘ λλ νμκ° μμκΉ? κ·Έλ λ€λ©΄ DBAλ 무μμΌκΉ? λ§ κ·Έλλ‘ DBAλ λ°μ΄ν°λ² μ΄μ€μ κ΄λ ¨λ λͺ¨λ μ
무λ₯Ό λ₯μνκ² ν μ μλ μ¬λμ΄λΌκ³ ν μ μλ€. νλ‘κ·Έλ¨ μμ€λ μ΄λ μ λ λ³Ό μ€ μμμΌ νκ³ , 쿼리 μμ± λ₯λ ₯κ³Ό μ±λ₯ νλμ λν λ₯λ ₯λ κ°μΆμ΄μΌ νλ€. λν λ°μ΄ν°λ² μ΄μ€ μλ²μ μ΄μκ³Ό λ°μ΄ν°λ² μ΄μ€ λͺ¨λΈλ§κ³Ό μ€κ³μ λν λ₯λ ₯λ κ°μΆμ΄μΌ νλ€. κ²°κ΅ λ°μ΄ν°λ² μ΄μ€ κ΄λ¦¬μ λ°μ΄ν°λ² μ΄μ€ κ°λ°μ λμμ΄λ‘ λ΄μΌ ν κ²μ λΉμ°νλ€.
λ νκ°μ§ κ³ λ €ν΄μΌ ν κ²μ μ체κ°λ°μΈμ§ μλλ©΄ μμμμ±μΈμ§λ₯Ό μμμΌ νλ€. μΈλΆμ
체μμ κ°λ°ν νκ²½μ΄λΌλ©΄ μμ€ μμ μ΄ κ°λ₯νμ§μ λν μ°μ μ μΈ νμΈμ΄ νμνλ€. μ΄ν리μΌμ΄μ
νλμ λλΆλΆ μμ€ μμ μ μ λ°νκΈ° λλ¬Έμ΄λ€.
3 κΈ°μ
μ μμ€ν
νκ²½ νμ
λ° μλ£ μμ§ #
κΈ°μ
μ μμ€ν
νκ²½μ νμ
νλ κ²μ΄ νλμ 첫 λ²μ§Έ λ¨κ³λΌκ³ ν μ μλ€. μ΄λ€ OSλ₯Ό μ¬μ©νκ³ μμΌλ©°, ν¨μΉλ μ΄λκΉμ§ μ μ©λμλμ§ λλ Storage RAID λ 벨 λ±μ νλμ¨μ΄ μ€νμ νμ
νλ λ¨κ³μ΄λ€. Windows μμ€ν
μμλ βμ±λ₯β λꡬλ₯Ό μ΄μ©νλ€. λ€μμ λͺ¨λν°λ§μ νμν μ 보λ€μ΄λ€. βProcessor Time <= 80%β μ μλ―Έλ νκ· 80% μ΄νμ¬μΌλ§ μ μμ΄λΌκ³ νλ¨ν μ μλ€λ κ²μ΄λ€. λ¬Όλ‘ νΌν¬νμμ΄ μ
무μ λ§€μ° μ€μν μν©μ΄λΌλ©΄ νΉμ μκ°μ κΈ°μ€μ λ§μΆμ΄μΌ ν κ²μ΄λ€. μ±λ₯κ°μ²΄λ νμμ λ°λΌμ λ μΆκ°νλ€. (μ°Έκ³ :
κΈ°λ³Έμ μΌλ‘ μμ§ν΄μΌ ν λ°μ΄ν°μ μ)
- CPU μ±λ₯(Processor κ°μ²΄)
- Processor Time <= 80%
- Privileged Time <= 80%
- User Time <= 80%
- Application μ±λ₯(Process κ°μ²΄)
- Processor Time <= 200%
- Memory μ±λ₯(Memory κ°μ²΄)
- Available Bytes >= 5MB
- Pages/sec ---- Between 0 and 20
- Page Reads/sec <= 5
- Page Writes/sec <= 5
- System μ±λ₯(System κ°μ²΄)
- Processor Queue Length <= 2
- Disk I/O μ±λ₯(PhysicalDisk κ°μ²΄)
- Disk Read Time <= 40%
- Disk Write Time < 40%
- Disk Time <= 80%
μ΄λ¬ν μλ£ μ΄μΈμ ERD, μ½λκ·μΉμ§, μ΄ μ¬μ©μμ, λμ μ¬μ©μμ λ±κ³Ό κ°μ μ΄μ κΉμ§μ λͺ¨λ μμ€ν
κ°λ° κ²°κ³Ό λ¬Έμλ₯Ό μμ§ν΄μΌ νλ€. μΌλ°μ μΌλ‘ μμ μ νμ¬κ° μλ μ΄μμ μ±λ₯νλμ μΈλΆμ
체μ 맑긴λ€λ κ² μμ²΄κ° λ¬Έμ λ€. μλ§λ λ¬Έμλ₯Ό μ°ΎκΈ°κ° μ½μ§ μμ κ²μ΄λ€. λ¬Έμκ° μ‘΄μ¬ν΄λ λ§€μ° μλ κ²μ΄λΌ ν° λμμ΄ λμ§λ μμ κ²μ΄λ€. (κ·Έλλ μλ κ²λ³΄λ€λ λ«λ€.) μ΄μ¨λ μ΅λν μμ€ν
κ³Ό κ΄λ ¨λ λͺ¨λ λ¬Έμλ₯Ό μμ§νλ κ²μ λμμ΄ λλ€. μ±λ₯λͺ¨λν°λ§μ νμν κΈ°μ€κ°μ κ° S/W λ°΄λλ μΈν°λ·μ λλ € μμΌλ―λ‘ μ½κ² μ»μ μ μλ€.
4 μμ§λ μλ£μ κ°κ΄μ μΈ λΆμ #
μμ€ν
νκ²½ νμ
λ¨κ³μμλ μμ€ν
μ λν κ°μ μ‘κΈ° μν μλ£ μμ§λ¨κ³λΌκ³ ν μ μλ€. μ±λ₯ λͺ¨λν°λ§ λꡬλ₯Ό μ΄μ©νμ¬ λΆμλ κ²°κ³Όλ₯Ό κ°μ§κ³ λͺ¨λ κ²μ νλ¨νλ κ²μ μ λ ν΄μλ μ λλ μ§μ΄λ€. λ€μμ μ€λ‘λ₯Ό 보μ. μ¬λ¬ κ°μ§ μμλ₯Ό λͺ¨λ κ³ λ €ν΄μΌ ν¨μ λνλ΄κΈ° μν μμ μ΄λ―λ‘ λͺ¨λ μ±λ₯κ°μ²΄μ λν μΈκΈμ μμ κ²μ΄λ€. μ¬λ‘λ₯Ό λ³΄κ³ μ€μ μμμΈ CPU, Memory, Diskμ λν΄μ μμ보λλ‘ νκ² λ€. ν΄μμ κ²°κ³Όλ μμμΌ λΏμ΄μ§ κ·Έλ λ€λ κ²°λ‘ μ΄ μλλ€. κ²°λ‘ μ μ ν΄λκ³ λ΅μ μ°Ύλ κ²μ μλͺ»λ κ²°κ³Όλ₯Ό κ°μ Έμ¬ μ μλ€.
μ±λ₯ λͺ¨λν°λ§ λꡬλ₯Ό μ΄μ©ν λ°μ΄ν° μμ§
κ·Έλ¦Ό1: Page reads/sec | |
κ·Έλ¦Ό2:Page writes/sec | |
κ·Έλ¦Ό3:Free pages | |
ν΄μ
Page reads/secλ DBMS μ μ© μμ€ν
μ΄λΌ κ°μ ν λμ SQL Serverμμ μμ²μ λν΄ νμν λ©λͺ¨λ¦¬λ₯Ό ν λΉν κ²μΌλ‘ μ΄λΉ νμ΄μ§μ μ½κΈ° μμ² μλ₯Ό μλ―Ένλ€. μκ° λμ΄ μ¬λΌκ°λ μμΉκ° λ§μ κ²μ λ³Ό μ μλλ°, μ΄κ²μ μμ€ν
μ λ©λͺ¨λ¦¬λ₯Ό μΆκ°μν€κ±°λ Query νλμ νμμ±μ΄ μμ μλ μμμ λνλΈλ€. μ¦, νΉμ μ΄ν리μΌμ΄μ
μ΄ λ§μ λ©λͺ¨λ¦¬λ₯Ό μꡬν μ μλ€λ κ²μ΄λ€. μ€μ λ‘ λ§μ λ©λͺ¨λ¦¬λ₯Ό μꡬνλμ§, μ΄ν리μΌμ΄μ
μ μλͺ» μμ±ν κ²μΈμ§λ νμΈμ ν΄λ³΄μμΌ νλ€. λ©λͺ¨λ¦¬κ° λΆμ‘±νκ±°λ μ΄ν리μΌμ΄μ
νλμ΄ νμνκ°λ λ©λͺ¨λ¦¬μ λν λͺ¨λν°λ§μ κ²°κ³Όκ° νμνλ€. κ·Έλ¬λ μμ§λ μλ£λ‘ 보μμλ Memoryλ μΆ©λΆν κ²μΌλ‘ 보μ΄λ©°, Query νλμ΄ νμν κ²μΌλ‘ νλ¨λλ€. Free Pagesλ λ¨μμλ λ©λͺ¨λ¦¬μ λ²νΌ μλ₯Ό λνλΈλ€. μ΄ κ°μ΄ μ§μμ μΌλ‘ μμμ§κ±°λ 0μ΄λ©΄ μλ²μ λ©λͺ¨λ¦¬κ° μμμ λνλ΄λλ° νκ· 2561μ λνλ΄κ³ μ΅μκ° 129λ‘ 0 μ΄μμ΄λ―λ‘ Memoryλ μΆ©λΆ(2561 * 8KB > 5MB)ν κ²μΌλ‘ νλ¨λλ€. Page writes/secλ SQL Serverμ μν΄ λ°κΈλ μ΄λΉ 물리μ μΈ λ°μ΄ν°λ² μ΄μ€ νμ΄μ§μ μ°κΈ° μλ₯Ό λ§νλ€. νκ· μ μμΉλ‘ λ΄€μ λ μ½κΈ° μ(124 / (124 + 87) * 100)λ μ½ 58.77%μ΄λ©° μ°κΈ°(87 / (124 + 87) * 100)μ κ²½μ° μ½ 41% μ΄λ€. |
μ΄ μ¬λ‘λ₯Ό ν΅ν΄ μ€μν λͺ κ°μ§ λ¨μλ₯Ό μ‘μ μ μλ€. λ¬Όλ‘ λ λ§μ μ±λ₯ λͺ¨λν°λ§ κ°μ²΄λ₯Ό μ΄ν΄λ³΄μμΌ νκ² μ§λ§ μ΄ 3κ°μ§λ§μΌλ‘λ λ§μ κ²μ μ μ μλ€. μ΄λ―Έ μΈκΈ νλ°λ‘ μ΄ν리μΌμ΄μ
νλμ΄ νμνλ€λ κ°μ μ‘μλ€. λν Readμ¨κ³Ό Writeμ¨λ μ»μ μ μμλ€. μ΄ μμ€ν
μ μΌλ°μ μΈ OLTP μμ€ν
μΈλ° μ°κΈ°κ° μ½ 40%λΌλ©΄ μ΄ν리μΌμ΄μ
μμ μ°κΈ° μ°μ°μ΄ λ§μ΄ λ°μν κ²μ μ μ μλ€. λ§μ½ νΉμ μΌμ μ°κΈ° μμ
μ΄ λ§μ λ°°μΉμμ
μ νλ€λ©΄ λ¬Έμ κ° λμ§ μμ§λ§ νμμμλ μ΄λ¬ν κ²°κ³Όλ₯Ό μ»μλ€λ©΄ λ¬Έμ λ μλ€κ³ 보μλ λλ€. (μ΄λ° κ²½μ°λ νμμ κ²½νμ μνλ©΄ MSSQL Serverμ Tempdbλ₯Ό κ³Όλν μ¬μ©λ ν λͺ« λ¨λ¨ν νκ³ μλ κ²μ΄ λλΆλΆμ΄μλ€.) λν ν μμ€ν
μμ RAID Levelμ΄ μ ν©νμ§λ₯Ό νλ¨ν μλ μλ€. λ§μ½ μ΄ μμ€ν
μ΄
RAID5μλ€λ©΄ λΆμ ν©μ΄λ€.
RAID5λ μ°κΈ°κ° 10% μ΄μμ΄λΌλ©΄ μ±λ₯μ νλ₯Ό κ°μ Έμ¨λ€. RAID λ λ²¨μ΄ κΆκΈνλ€λ©΄ Webμμ μ 보λ₯Ό μ»κ±°λ RAID λ 벨μ λν΄μλ λ°λ‘ λ€λ£¨λ μ₯μ μ°Έκ³ νλΌ.
μ€μν κ²μ "ν μν©" μμμ΄λ€. μ¦, μ΄ν리μΌμ΄μ
μ΄ μ΅μ νλμλλ°λ λΆκ΅¬νκ³ μ°κΈ°κ° 40%λΌλ©΄ μ΄ μ‘°μ§μ μ
λ¬΄κ° μ°λ μ°μ°μ λ§μ΄ νλ μ
무μ΄κ±°λ, μ€κ³μ λΆμ€λ‘ μΈν μ΄μ© μ μλ μν©μ΄κ±°λ μ΄ν리μΌμ΄μ
μ΄ λΆμ€ν κ²½μ°μ΄λ€. κ²°κ΅μ λͺ¨λ κ²½μ°μ μμ΄μ§λ§ μ΄ν리μΌμ΄μ
νλ νμ μ°κΈ°μ¨μ΄ 10% μ΄νλ‘ λ¨μ΄μ§κ±°λ λΉμ·ν΄μ§λ€λ©΄ RAID λ 벨μ μλͺ»λ κ²μ΄ μλλΌκ³ νλ¨λ μ μλ€. λ€μ νλ² μΈκΈνμ§λ§
νλμ¨μ΄λ μμμ΄λ€. μμλ₯Ό 건λ리λ κ²μ μ΅νμλ νλ μΌμ΄λ€.
λ§μ½ μ±λ₯λͺ¨λν°λ§μ μ κ°ν μ μλ κ°λ°μ΄κΈ° λ¨κ³λΌλ©΄ μ
무λΆμμλ₯Ό κ°μ§κ³ νλ¨ν΄μΌ νλ€. μΌλ°μ μΌλ‘ μλ² κ΅¬μΆμ H/W λ°΄λμ μμ§λμ΄κ° μμ νκ² λλλ°, κ°λ° μ΄κΈ°λ¨κ³λΌλ©΄ μ΄μ λν μ μ ν μ‘°μ λ νμν κ²μ΄λ€. H/W μ€νμ΄ μλ² μ©λ μ°μ μ μν κ²μΈμ§λ νλ¨ν΄μΌ νλ€. μ©λ μ°μ μ λ°©λ²μ λ€μμ μλ£λ₯Ό μ°Έκ³ νλΌ.
6 DBMS Wait Event λͺ¨λν°λ§ #
μ΄ μ λ μ§νλμλ€λ©΄ μ¬μ©μμ λͺ©μ리, κ°λ°μμ λͺ©μ리λ μ΄λ μ λ λ€μμ κ²μ΄λ€. μ΄μ μ΄λ€ λΆλΆμμ λ³λͺ©μ΄ μλμ§ νμ
ν νμκ° μλ€. Microsoft κΈ°μ μ§μλΆμμλ λ³λͺ©μ§μ νμ
μ μν 2κ°μ μ μ₯ νλ‘μμ λ₯Ό μ 곡νλ€. μ΄ νλ‘μμ λ MSSQL Serverμ Wait Typeμ μμ§νλ κ²μ΄λ€. μμ§λ μ 보λ₯Ό κ°μ§κ³ λΆμνλ€.
SQL Server 2000 λκΈ°μ ν λΆμ μ¬λ‘
- μ€ν¬λ¦½νΈ1, μ€ν¬λ¦½νΈ2λ₯Ό μνμμΌ 2κ°μ μ μ₯ νλ‘μμ λ₯Ό μμ±
- 쿼리λΆμκΈ°λ₯Ό 2κ° λμ°κ±°λ 쿼리λΆμκΈ°μμ κ°κ° λ€λ₯Έ μΈμ
μ κ°μ§ μ°½μ μ€λΉ
- μΈμ
1μμ exec track_waitstats λ₯Ό μν(κΈ°λ³Έκ° : 10λΆ μν)
- track_waitstatsμ μνμ΄ λλλ©΄ μΈμ
2μμ exec get_waitstatsμ μννμ¬ μ 보λ₯Ό μμ§
λ§μ½ μ 보 μμ§μκ°μ κΈ°λ³Έκ°μΈ 10λΆμ΄ λΆμ‘±νμλ€λ©΄ track_waitstats νλ‘μμ μ νλΌλ―Έν°μΈ
@num_samples int=10μ κ°μ 10μμ λ λλ €μ£Όλ©΄ λλ€. κ²°κ³Όλ λ€μκ³Ό κ°λ€.
λκΈ°μ ν λΆμ'
CXPACKET
CXPACKETλ Parallel Process λκΈ°μ νμ΄λ€. μ΄κ²μ Parallel Queryμ μ€ν μ κ° Processκ° μ€νλλ ꡬκ°μ Lock Issueκ° μμ μλ μμμ μλ―Ένκ±°λ νΉμ νλμ¨μ΄μ λ³λͺ©μΌλ‘ μΈν΄ λ€λ₯Έ Processκ° λκΈ°νκ³ μλ Processκ° λλ λκΉμ§ λκΈ°νκ³ μμ μλ μμμ μλ―Ένλ€. DBMSκ° μ¬λ°λ₯Έ νλ¨μ νμ¬ λ³λ ¬μ²λ¦¬λ₯Ό νλμ§ μλλ©΄ νκ²½μ λ§λ€μ΄μ£Όμ§ μμμ ν μ μμ΄ λ³λ ¬μ²λ¦¬λ₯Ό νλ κ²μΈμ§ μ νλ¨ν΄μΌ νλ€.
PAGEIOLATCH_SH
PAGEIOLATCH_SHλ SELECT 쿼리 μ Shared Latchλ₯Ό μ»κΈ° μν΄ λκΈ°νκ³ μμμ μλ―Ένλ€. Latchμ κ°λ
μ λ€μκ³Ό κ°λ€. (Disk-to-Memory transfers)
ν΄λΌμ΄μΈνΈμ μμ²μ λ°λΌ κ΄κ³ν μμ§μ OLEDB APIλ₯Ό μ΄μ©νμ¬ λ°μ΄ν°μ μμ²μ νκ² λλ€. μ΄ μμ²μ λ°λΌ μ μ₯μμμ§μ Latchλ₯Ό μ»κ³ , κ΄κ³ν μμ§μΌλ‘ μ μ‘ν λ€μ Latchλ₯Ό ν΄μ νλ€. (λ©λͺ¨λ¦¬ λ³΄νΈ λͺ©μ , λ©λͺ¨λ¦¬μ μΊμλ Pageλ₯Ό κ³ μΉλ μ°λ λ(?)λ 1κ°μ΄μ΄μΌ νλ€. λμ€ν¬μμ λ©λͺ¨λ¦¬λ‘ λ°μ΄ν°λ₯Ό μ¬λ¦¬λ λμ€μ λ©λͺ¨λ¦¬μ pageλ₯Ό μ½μΌλ©΄ μλκΈ° λλ¬Έμ μμ ν λμ€ν¬μμ λ©λͺ¨λ¦¬λ‘ λ°μ΄ν°λ₯Ό μ μ¬νκΈ° μ κΉμ§λ λ€λ₯Έ μμ²μ λκΈ°ν΄μΌ νλ€. μ΄κ² latch wait μ΄λ€)
WRITELOG
λ‘κ·Έλ₯Ό μ°κΈ° μν΄ λκΈ°νκ³ μλ μκ°. Diskμ μ°κΈ° μ±λ₯μ μ§μ μν₯μ λ―ΈμΉ¨. Temp Tableμ μμ±νμ¬ Temp Tableμ Insert, Delete, Update μμ
μ νκ±°λ Tableμ μ΄λ¬ν μμ
μ΄ λ§μ΄ μΌμ΄λλ€λ©΄ λ³λͺ©μ§μ μ΄ λ μ μλ€.
LATCH_EX
LATCH_EXλ λ°°νμ μΈ LATCHλ₯Ό μ»κΈ° μν΄ λκΈ°νλ μκ°
NETWORKIO
NETWORKIOλ Network Input/Outputμ λκΈ°νλ μκ°. NICμ Bandwidthλ₯Ό 체ν¬ν΄μΌ νλ€.
LCK_M_S
Latchλ₯Ό μ»μ λμμλ λ€λ₯Έ νλ‘μΈμ€κ° νμ΄μ§μ λ³κ²½ λ±μ νμ§ λͺ»νλλ‘ Lockμ κ±Έκ² λλ κ²μ΄λ€. κ·Έλ¬λ―λ‘ Latchλ₯Ό μ»κ³ Latchλ₯Ό ν΄μ ν λκΉμ§μ μκ°μ΄ λΉ λ₯΄λ©΄ λΉ λ₯Όμλ‘ μ±λ₯μ μ¦κ°λλ€. μ¦, Memoryμ Diskκ°μ λ°μ΄ν° μ μ‘μ΄ λΉ λ₯΄λ€λ©΄ LCK_M_S, PAGEIOLATCH_SHμ λκΈ° μκ°μ μ€μ΄λ€ κ²μ΄λ€.
IO_COMPLETION
IO_COMPLETIONλ I/O μμ²μ μλ£νλλ° λκΈ°νλ μ νμ λ§νλ€. Query Planμ΄ λμ κ²½μ° λ°μνλ λκΈ° μ νμΌλ‘ Full Scan, Index Scanμ΄ μΌμ΄λλ 쿼리μ λν Query Plan μ‘°μ μ΄ νμνλ€.
PAGEIOLATCH_EX
PAGEIOLATCH_EXλ LATCH_EX λκΈ° μ νκ³Ό ν¨κ» μΌμ΄λλ λκΈ° μ νμ΄λ€.
λΆμμμ½
μμ§λ λ°μ΄ν°λ‘ 보μ CXPACKET, PAGEIOLATCH_SH λκΈ°μ νμ΄ 70% μ΄μμ μ°¨μ§ νκ³ μλ€. μ΄ν΄λ³΄μμΌ ν κ²μ μ΄ μκ°λμ ν° μμ
μ΄ μΌμ΄λ¬λμ§μ λν κ²κ³Ό λΈλ‘νΉμ λν μ΄μμ΄λ€. λ§μ½ μ€νκ³νμ΄ μλͺ»λμ΄μ 쿼리λ₯Ό μννλ μ΄ λΉμ©μ΄ MSSQL Serverμμ μ€μ ν κ°(κΈ°λ³Έκ°:5)λ³΄λ€ λ ν¬λ€λ©΄ λ³λ ¬μΏΌλ¦¬λ₯Ό μνν κ²μ΄λ€. μ€μν κ²μ κ³Όμ° λ³λ ¬μΏΌλ¦¬κ° νμνκ°μ λν νκ°μ΄λ€. λν Latchμ λν λκΈ°μ νλ λ§λ§μΉ μλ€. μ΄ μλ―Έλ λ κ°μ§λ‘ ν΄μν΄ λ³Ό μ μλ€. μ¦, Memory λΆμ‘±μ΄κ±°λ Disk I/O μ±λ₯μ κ΄λ ¨λ κ²μ΄λ€. λ¬Όλ‘ H/Wμ κ΄μ μμλ§ λ³΄λ©΄ κ·Έλ λ€. μ΄ν리μΌμ΄μ
μ΄ μ λλ‘ μμ±λμλμ§μ μ¬λΆλ₯Ό νλ¨ ν Memoryμ Disk I/Oμ λν΄μ μ΄ν΄λ³΄μμΌ ν κ²μ΄λ€.
λ‘κ·Έλ₯Ό μ°λ κ²λ μ½ 9%μ λκΈ°μ νμ 보μλ€. νΈλμμ
μ λν λ‘κ·Έλ₯Ό κΈ°λ‘νκΈ° μν΄μ νλ‘μΈμ€κ° λκΈ°ν λΉμ¨μ΄ μ½ 9%λΌλ κ²μ΄λ€. μ΄κ²μΌλ‘ 보μλ Diskμ λκ° μ μ’μ ꡬμ±μ΄ μμ μ μλ€λ κ°μ μ‘μ μ μλ€. λν Diskμ λ³λͺ©μ΄ μμλ μ μ μλ€. κ·Έλ¬λ μ€μν κ²μ μ΄ν리μΌμ΄μ
μ΄ μ΅μ νλμλμ§μ μ¬λΆκ° λ¨Όμ νλ¨λμ΄μΌ νλ κ²μ΄λ€.
8 Index λΆμ #
νλμμ
μ μλ’°κ° λ€μ΄μ¨λ€λ©΄ Indexμ λν μ΅μ νκ° μ΄λ£¨μ΄μ‘λ€λ κ²μ κΈ°λνκΈ° μ΄λ ΅λ€. κ·Έλ¬λ―λ‘ μ΄ν리μΌμ΄μ
λ€μ΄ μ μνλκ² νκΈ° μν΄μλ μ μ ν νκ²½μ μ‘°μ±μ΄ νμνλ€. μ¬μ©μλ€μ μ 보μꡬλ₯Ό λ§μ‘±μν€κΈ° μν μ μ ν μλ²μ μ©λμ΄ κ°μΆμ΄μ Έ μμ΄μΌ νλ©°, μ μ ν λ€νΈμν¬ λμνλ±μ νλμ¨μ΄ νκ²½κ³Ό μννΈμ¨μ΄μ μΈ μ μ ν μ€μ μ΄ νμνλ€. κ·Έλ¬λ―λ‘ μμ±λ λ§μ Queryλ€μ΄ μ΅μνμ μμμ μ΄μ©νμ¬ κ²°κ³Όμ§ν©μ λ§λ€κ² νκΈ° μν΄μ μ μ ν μΈλ±μ€μ μμ±μ΄ νμνλ€.
μΈλ±μ€ μμ±μλ λ§μ κ³ λ €κ° νμνλ€. νΉμ νλμ Queryλ₯Ό μ΅μ ν μν€κΈ°λ λ§€μ° μ½μ§λ§ μ¬λ¬ κ°μ Queryκ° λͺ¨λ μ λλ‘ λμνκ² νκΈ° μν΄μλ μ’
ν©μ μΈ νλ¨μ΄ νμνλ€. λ¬Όλ‘ μ΄μ μ°μ νμ¬ μΈλ±μ€μ λν μ νν μ΄ν΄κ° νμνλ€. λ¬Όλ‘ μ΄μ μ λμ± κ³ λ €λμ΄μΌ νλ μ¬νμ λΉμ°ν μ€κ³μ΄μ μ λ¨κ³μ΄λ€. μΈλ±μ€ μ€κ³λ λ
Όλ¦¬ λͺ¨λΈμ μ§μ μ μΈ μν₯μ λ―ΈμΉλ€. μ΄μ λν μ¬λ‘λ βμ€κ³μ μ€μμ±β λ¨κ³μμ μμΈν λ€λ£¨κΈ°λ‘ νκ² λ€.
μμ§λ μ 보λ₯Ό μ΄μ©νμ¬ Index μ μ
κ° DBMS λ²€λλ€μ μ μ μ¬λμ΄ ν μΌμ μ€μ΄κ³ μλ€. Microsoftμ¬λ κ·Έ μ€ λ μ¬νλ€. Oracleμ¬λ λ§μ°¬κ°μ§λ‘ DBAμ ν μΌμ μ€μ΄κ³ μλ€. κ·Έλ¬λ―λ‘ DBAμ μ
무λ μ°½μ‘°μ μΈ μ
무(Query, SPμμ±, Modeling & Design)λ‘ μ΄λλκ³ μλ μΆμΈμ΄λ€. Indexμ λν κ²λ MS-SQL Serverλ Index Tuning Wizard λΌλ ν΄μ λμ΄ κ½€ ν¨κ³Όμ μΌλ‘ Indexλ₯Ό μ μ νλ€. μ΄ ν΄λ§μ΄λΌλ μ λΉν μ μ΄μ©νλ©΄ κ·Έλλ§ μ±λ₯μ λν κ±±μ μ μ½κ° λ μ μλ€. κ·Έλ¬λ μ΄ ν΄λ μ±κ²©μ΄ μμ΄ λμ¨ κ²°κ³Όλ₯Ό DBAκ° νμΈνμ¬ μ μ ν μ‘°μ ν μλ²μ μ μ©ν΄μΌ νλ€. Index Tuning Wizardλ₯Ό μ¬μ©νκΈ° μν΄μλ μλ£μ μμ§μ΄ λ§€μ° μ€μνλ€.
Index Tuning Wizardλ ProfilerλΌλ ν΄λ‘ μμ§λ μλ£λ₯Ό μ΄μ©νκ±°λ 쿼리λΆμκΈ°μμ νΉμ Queryλ₯Ό μμ±νμ¬ μ΄λ₯Ό ν λλ‘ λΆμν λ€μ Indexμ λν μ‘°μΈν΄ μ€λ€. μ¬μ©λ²μ μ¬μ°λ 맀λ΄μΌμ΄λ λ€λ₯Έ μ°Έκ³ μμ μ μ°Έκ³ νμ. Index Tuning Wizardλ μ£Όλ‘ κ²°ν©μΈλ±μ€λ₯Ό μμ±νλ €κ³ λ§μ λ
Έλ ₯μ κΈ°μΈμΈλ€. 쑰건 μ μ ν΄μνμ¬ μ΄μ¬ν κ²°ν©μΈλ±μ€λ₯Ό λ§λ€λ €κ³ νλ€. λ§μ μλ£λ₯Ό μμ§νμ¬ Index Tuning Wizardλ₯Ό μννλ©΄ νμ μλ μΈλ±μ€ λ§λ€μ΄μ§ μλ μλ€λ κ²μ΄λ€. (λ
Ένμ¬μμ μ΄μΌκΈ° νμ§λ§ μ΄ λ§μ μλ£λ₯Ό μ‘°κΈ μμ§νλΌλ λ§μ΄ μλλ€. ν΄μ νκ³λ₯Ό μ€λͺ
νλ κ²μ΄λ€.) μλ₯Ό λ€μ΄, λ³μμ κ²½μ°
ChartNo(μ°¨νΈλ²νΈ)λΌλ 컬λΌμ΄ λλΆλΆμ Query 쑰건μ μνκ² λλ€. κ²½μ°μ λ°λΌ ν리μ§λ§ νλμ ν
μ΄λΈμ κ°μ
ChartNoλ 1~3건 μ λμΌ κ²μ΄λ€. μλ§λ μλ£λ₯Ό μμ§νμ¬ Index Tuning Wizardλ₯Ό μ€ννλ©΄ λ€μκ³Ό κ°μ ννμ Index μμ±μ μ‘°μΈν κ²μ΄λ€.
ChartNo + ColA + ColB
ChartNo + ColB + ColC + ColD
ChartNo + ColZ
Whereμ λͺ
μν 쑰건μ λͺ¨λ κ²°ν©μΈλ±μ€λ‘ λ§λ€μ΄μ§ 격μ΄λ€. (μμ€λ₯Ό 보μ§λ μμμ§λ§ κ²½νμ Index Tuning Wizardλ 쑰건 μ μ λͺ
μν 컬λΌκ³Ό μ νλλ₯Ό μ΄μ©νμ¬ Indexλ₯Ό μμ±νλ κ²μΌλ‘ νμ
λλ€.) μμ κ²½μ°
ChartNoλ λ§μμΌ 3건μμλ λΆκ΅¬νκ³
ChartNoλ‘ μμν κ²°ν©μΈλ±μ€κ° λ§μ΄ λ§λ€μ΄μ§ κ²μ λ³Ό μ μλ€. μ΄λ¬ν κ²μ Index Tuning Wizard λΏλ§ μλλΌ κ°λ°μλ μ΄λ¬ν κ²½ν₯μ 보μ΄λ κ²½μ°κ° λ§μ΄ μλ€. κ·Έλμ νμμ κ°μ κ²½μ° Tuning μμ
μ ν λ νκ²½νμ
μ΄ν Index μ 리μμ
λΆν° νλ€. νμ μλ μΈλ±μ€λ₯Ό μ§μμ£Όκ±°λ λ€μ μμ±νλ κ²μ΄λ€. μμ κ°μ΄ μΈλ±μ€κ° μμ±λμ΄ μμ κ²½μ°λ μμ λμμ΄λ€. μ¦,
ChartNo 컬λΌμ λ¨μΌ μΈλ±μ€λ‘ ꡬμ±νλ κ²μ΄ κ°μ₯ μ΅μ μ΄λΌλ κ²μ΄λ€. μ§κΈμ νλμ μ μ°¨λ₯Ό λ€λ£¨λ° μ€μ μ λκ³ μμΌλ―λ‘ μ μΈλ±μ€λ₯Ό μμ±νλ©°, μΈλ±μ€λ₯Ό μ‘°μ νκ³ , μΆκ°νμ¬ μ£Όμ΄μΌ νλμ§λ μΈλ±μ€ λΆλΆμμ μμΈν λ€λ£¨λλ‘ νκ² λ€.
9 λ°μ΄ν°λ² μ΄μ€ λμμΈ νλ #
λ°μ΄ν°λ² μ΄μ€ λμμΈ νλμ λ§€μ° λ―Όκ°ν μ¬μμ΄λ€. μ μΉμ (?)μΌλ‘λ νλ‘μ νΈ μ λ°μ μΈ μν₯λλ λ§€μ° ν¬λ€. μ μΉμ μ΄λΌλ ννμ μ΄ κ²μ λ°μ΄ν°λ² μ΄μ€ λμμΈμ λμ΄ λ§μ κ΄λ¦¬μκΈμ νλ‘μ νΈ μ°Έκ°μκ° μ§ννκΈ° λλ¬Έμ΄λ€. λ§μ½ λμμΈμ λν΄μ μ΄λ€ μ§μ μ νλ©΄ λλΆλΆμ κ΄λ¦¬μλ€μ λκ°ν΄νκ³ , κΈ°λΆ λλΉ νκΈ° λλ¬Έμ λ§μ κ·λ₯Ό κΈ°μΈμ΄μ§ μλλ€. μμ¬μν΅μ΄ μλ μμ
μ λ§€μ° νλ€κΈ° λ§λ ¨μ΄λ€.
λν λ°μ΄ν°λ² μ΄μ€ λμμΈ λ³κ²½μ νλ‘κ·Έλ¨ μμ€μ λ³κ²½μ μ λ°νκΈ° λλ¬Έμ κ²°ν©λκ° κ°ν νλ‘κ·Έλ¨μ λ§λ€μλ€λ©΄ λμμΈ λ³κ²½μ λν μν₯μ λ§€μ° ν¬λ€. κ·Έλ¬λ―λ‘ λμμΈμ λ³κ²½μ μ μ€μ μ μ€μ κΈ°ν΄μΌ νκ³ , λ³κ²½μν₯ λΆμμ λ°λμ ν΄μΌ νλ€.
λ§μ½ κ°λ° μ΄κΈ° λ¨κ³λΌλ©΄ νλ‘κ·Έλ¨ μμ€μ λν μμ μ 그리 λ§μ§λ μμ κ²μ΄λ―λ‘ λ³κ²½μ λν μν₯μ μ λ€. μ΄λ¬ν νμμ λ§€μ° λ°λμ§ν νμμ΄λ©°, νλ‘μ νΈ κ΄λ¦¬μλ λ§€μ° νλͺ
ν μ¬λμμλ λΆλͺ
νλ€. λμμΈ νλμ νλ €λ λ
Έλ ₯μ νλ‘μ νΈμ κ°λ°κΈ°κ°μ λ¨μΆνκ³ , μ’μ μ§μ μ 보λ₯Ό μ¬μ©μμκ² μ 곡ν μ μλ μ΄μμ΄ λ κ²μμλ λΆλͺ
νλ€.
11 Query λ° SP μ΅μ ν #
λͺ¨λ λ°μ΄ν°κ° μμ§λμλ€λ©΄ μ΄μ λΆν°λ μ΄ν리μΌμ΄μ
νλμ νκ² λλ€. λ¬Όλ‘ μ΄μ μ λΉμ¦λμ€ λ‘μ§μ νλμ΄ μ΄λ£¨μ΄μ§λ€λ©΄ λμ± μ’λ€. μμ§λ μλ£λ₯Ό ν λλ‘ νλμ© μ±λ₯μ μ
μν₯μ λΌμΉλ κ²λ€μ μ κ±°ν΄ λκ°μΌλ‘μ¨ μ΄ λ¨κ³μ μμ
μ μ§νλλ€. μ΄ λ¨κ³μμλ νλ μμ
μμ SQL μμ± λ₯λ ₯κ³Ό κ΄κ³μλ€μ νμ‘°κ° νλ μμ
μ μ±κ³΅μμΈμΌλ‘ λ§€μ° μ€μνκ² μμ©νλ€. SQL νλμ λ€μμ 3κ°μ§ κ΄μ μμ νμ
λλ€.
SQL Tuningμ 3κ°μ§ κ΄μ
- 쿼리 λΆμκΈ°λ₯Ό ν΅ν λΉμ© μ‘°μ
- μ¬λ°λ₯Έ μΈλ±μ€ μ¬μ©
- μ‘°μΈ μμ μ‘°μ
- ννΈμ μ¬μ©
- LOGIC νλ
- CASE WHEN λ¬Έ
- OUTER JOIN
- νλ‘μμ λ° ν¨μ
- BATCH μμ
νλ
- μ΅μ μ
/μΆλ ₯μ΄ κ°λ₯νκ² μ‘°μ
- LOOPλ΄ μΏΌλ¦¬λ μ΅λν νλ
- μ΄μ© κ°λ₯ν μμμ μ μ ν μ¬μ©νλλ‘ μ‘°μ
ORACLEμ μ΅ν°λ§μ΄μ μ κ²½μ° λΉμ© κΈ°λ°μ μ΅ν°λ§μ΄μ μ κ·μΉ κΈ°λ°μ μ΅ν°λ§μ΄μ λ₯Ό λͺ¨λ κ°μ§κ³ μλ€.(10gλ κ·μΉκΈ°λ°μ μ΅ν°λ§μ΄μ λ₯Ό λ²λ Έλ€.) ORACLEμ λΉμ©κΈ°λ° μ΅ν°λ§μ΄μ λ λ κ°μ§μ μ΅ν°λ§μ΄μ λͺ¨λλ₯Ό κ°μ§κ³ μλλ°, κ·Έκ²μ FIRST_ROWλ°©μκ³Ό ALL_ROWλ°©μμ΄λ€. MSSQL SERVERλ λΉμ©κΈ°λ°μ μ΅ν°λ§μ΄μ λ§ μ§μνλ€. κΈ°λ³Έμ μΌλ‘ MSSQL SERVERλ μ 체 κ²°κ³Όλ₯Ό 리ν΄νκΈ° μν ALL_ROWλ°©μμ μ¬μ©νλ€. FIREST_ROW λ°©μμ OPTION(FAST N) μ ννΈλ₯Ό μ£Όλ―λ‘ ν΄μ νλ΄λ₯Ό λΌ μ μλ€. MSSQL SERVERμμ OPTION(FAST N)μ λΆμ΄μ§ μμΌλ©΄ HASH JOIN, MERGER JOINμ κ²½ν₯μ κ°μ§λ©°, OPTION(FAST N)μ λΆμ΄λ©΄ NESTED LOOP JOINμ κ²½ν₯μ κ°μ§λ€. (OPTION(FAST N)μΌλ‘ λΆμ΄λ©΄ κ°λμ© μ€νκ³νμ΄ λ°λλ κ²½μ°κ° μμμ μ΄μΌκΈ° νλ€.) μμΈν κ²μ μ΄ν리μΌμ΄μ
νλλ¨κ³μμ μμλ³Ό κ²μ΄λ€.
13 νλμ¨μ΄ νλ #
νλμ¨μ΄ νλ μ μλ² μΈ‘μμ μ΄ν리μΌμ΄μ
μ΄ μ λμκ° μ μλλ‘ νκ²½μ λ§λ€μ΄ μ€λ€. μλ₯Ό λ€μ΄ Index μ¬μμ± λ° μ‘°κ°λͺ¨μ, Disk μ‘°κ°λͺ¨μκ³Ό κ°μ μμ
μ΄λ€. λν μ μ ν Disk λΆμ°μΌλ‘ λΆνλ₯Ό λΆμ°μμΌμ£Όλ κ²μ΄ μ€μνλ€. λͺ¨λ λ¨κ³κ° λλ¬μμλ λΆκ΅¬νκ³ μ±λ₯μ΄ λ¨μ΄μ§λ€λ©΄ νλμ¨μ΄ μμμ λΆμ‘±μ΄κ±°λ μ€κ³μμ λ¬Έμ μ΄λ―λ‘ νλμ¨μ΄ μ¦μ€μ κ³ λ €νλ€. μ΄λλ μ±λ₯λͺ¨λν°λ§ λꡬμ MSSQL Server λ³λͺ©μ λͺ¨λν°λ§ ν μλ£λ₯Ό κ°μ§κ³ μ΄λ€ λΆλΆμ μμμ΄ λΆμ‘±νμ§λ₯Ό νμ
ν λ€ νλμ¨μ΄ μ¦μ€μ κ³ λ €ν΄μΌ νλ€. μ€μν κ²μ κ²½νμ μν νλ¨μ νμ§ λ§λΌλ κ²μ΄λ€. μ΄μ μ λ©λͺ¨λ¦¬λ₯Ό μ¦μ€νμλλ μ±λ₯μ΄ ν₯μλμλ€κ³ νμ¬ μ±λ₯ λ¬Έμ κ° λ°μνμ¬ λ λ€μ λ©λͺ¨λ¦¬λ₯Ό μ¦μ€νλ κ²μ λ§€μ° μλͺ»λ κ²μ΄λ€. μ΄λ ν κ³³μ΄ λ³λͺ©μ΄λΌλ©΄ μ κΈ°μ μΌλ‘ λ¬Άμ¬μ Έ μμ§μ΄κΈ° λλ¬Έμ μ±λ₯μ΄ λ¨μ΄μ§ μ μμμ μμμΌ νλ€.
14 μ²λ¦¬μ μ°μ μμ κ²°μ #
μ 보μμ€ν
μ C/Sνκ²½μ΄κ° n-Tier νκ²½μ΄λ€. μλ₯Ό λ€μ΄ ν΄λΌμ΄μΈνΈ, λ―Έλ€μ¨μ΄, λ°μ΄ν°λ² μ΄μ€μ κ°μ 3λ¨κ³ ꡬ쑰λ₯Ό κ°μ§κ³ μλ€κ³ κ°μ νμ λμ μ΄λ Layerμμ μ²λ¦¬λ₯Ό νλ κ²μ΄ κ°μ₯ μ’μμ§λ₯Ό νλ¨ν΄μΌ νλ€. λ―Έλ€μ¨μ΄λ λ°μ΄ν°λ² μ΄μ€μμ ꡬνμ κ°λ₯νμ§λ§ ν΄λΌμ΄μΈνΈμμ μ²λ¦¬νλ κ²μ΄ λ λ°λμ§ ν μλ μλ€λ μ리λ€. λ무 DBλ§μ κ³ μ§νμ§ λ§κ³ , κ³Όκ°ν λ²λ¦΄ κ²μ λ²λ €λΌ. μλ₯Ό λ€μ΄ λ€μκ³Ό κ°μ νμμΌλ‘ λ°μ΄ν°λ₯Ό λΏλ €μ£Όκ³ μΆλ€λ μꡬμ¬νμ΄ μλ€κ³ κ°μ νμ. (λ°λ³΅λλ κ°μ κ°μ§ κ²μ 첫 νλ§ λ³΄μ¬μ£Όλ κ²)
SELECT
CASE WHEN FLAG = 2 THEN TYPE ELSE '' END TYPE
, TITLE
FROM (
SELECT
MIN(CASE WHEN FLAG = 1 THEN TYPE END) TYPE
, MIN(CASE WHEN FLAG = 1 THEN TITLE END) TITLE
, MIN(CASE WHEN FLAG = 2 THEN FLAG END) FLAG
FROM (
SELECT
MIN(TYPE) TYPE
, MIN(TITLE) TITLE
, MIN(TITLE_ID) TITLE_ID
, MIN(ID) FLAG
FROM TITLES A CROSS JOIN (SELECT 1 ID UNION ALL SELECT 2) B
GROUP BY
CASE WHEN ID = 1 THEN TITLE_ID ELSE TYPE END
) T
GROUP BY TITLE_ID
) T
λ¬Όλ‘ μΏΌλ¦¬ κ²°κ³Όλ μμμ μνλ ννλ‘ λμλ€. λ¬Όλ‘ λ€λ₯Έ λ°©μλ μλ€. DBMSκ° μ€λΌν΄μ΄λΌλ©΄ λΆμμ© ν¨μλ₯Ό μ΄μ©νμ¬ κ°λ¨ν ν΄κ²°ν μ μμμ κ²μ΄λ€. SQL Server 2005λΌλ©΄ ROW_NUMBER()λ₯Ό μ΄μ©νλ©΄ λ§€μ° μ½λ€. λ€λ§ μλ² μΈ‘μμ μ²λ¦¬νκΈ°μλ (κ²°κ³Όλ λμ€μ§λ§) λΉν¨μ¨μ μΈ μ²λ¦¬μΈ κ²½μ° λ¬΄λ¦¬νκ² μλ² μ²λ¦¬λ₯Ό κ³ μ§νμ§ λ§κ³ , μ€κ°κ³μΈ΅μ΄λ ν΄λΌμ΄μΈνΈ νλ‘κ·Έλ¨μμ μ²λ¦¬νλλ‘ νλ κ²λ μμ μ¬μ©μ λΆμ°μΌλ‘ μΈν μ±λ₯ ν₯μν¨κ³Όκ° μλ€λ κ²μ μμλ¬λΌλ κ²μ΄λ€. μ 쿼리μ κ²½μ°λ μμμ μ¬μ©λμΌλ‘ λ³Ό λ ν΄λΌμ΄μΈνΈλ μ€κ°κ³μΈ΅μμ μ²λ¦¬νλ κ²μ΄ λ λ«λ€κ³ λ³Ό μ μμΌλ, κ°λ°μκ°κ³Ό κ°μ μν© μμλ κ³ λ €ν΄μΌ νλ€.
λ νκ°μ§ μλ₯Ό λ€μ΄λ³΄μ. νμκ° μλ μ μ‘°μ
체λ λκΈ°μ
μμ ν맀νκ³ μλ ERPν¨ν€μ§λ₯Ό λμ
νμλ€. μ¬μ©μλ€μ μ±λ₯μ λν λΆλ§μ ν ν΄λλ€. κ·Έλμ νμλ νλμ νκΈ° μν΄ μ΄ν΄λ³΄μλ€. DBμλ²λ RDBMSμλλ° μ ν κ΄κ³κ° λ§Ίμ΄μ Έ μμ§ μμλ€. λν κΈ°λ³Έμ μΌλ‘ μλ μμ±λλ Primary Key μΈλ±μ€λ§μ μ¬μ©νκ³ μμλ€. κ²λ€κ° λ³λ ¬μ²λ¦¬κ° νμ μλλ° λΆκ΅¬νκ³ λ³λ ¬μ²λ¦¬λ₯Ό λ§κ΅¬ νκ³ , μκ΄μλΈμΏΌλ¦¬λ₯Ό λͺ λ²μ© ν΄κ°λ©΄μ 1000건, 5000건 μ© λ§κ΅¬ κ°μ Έκ°λ κ²μ΄λ€. κ·Έλμ νμλ λ¬Όμλ€. βμ΄κ±° 5000κ±΄μ© κ°μ Έλ€κ° λμ μ°μλ €κ΅¬μ?β λΌκ³ νλλ λͺ¨λ₯΄κ² λ¨λ€. μ΄μ΄κ° μλ λ
Έλ¦μ΄λ€. μ¬μ©μλ€μ μ΄μ©λ©΄ ν΄ μ¬μ©λ²μ μ΅νκΈ° μν κ², μ»΄ν¨ν°μ λν λ§μ°ν λλ €μ λ±μ΄ κ²Ήμ³ μ
무ν¨κ³Όκ° λ λ¨μ΄μ§ μλ μμ κ²μ΄λ€.