_λλ¬Έ | λ°©λͺ λ‘ | μ΅κ·ΌκΈ | ννΌμκ° | μ£ΌμΈλ |
FrontPage › νλμμ μ°¨
|
|
Contents
[edit]
1 νλμ νμμ± #μ΄λ² μ₯μμλ νλμ μ μ°¨μ λν μ μ°¨λ₯Ό κ°λ΅νκ² μμλ³Ό κ²μ΄λ€. νλμ μ μ°¨κ° νμν κ²μ λΉμ°ν μ±κ³΅λ¦¬μ νλμ λ§μΉκΈ° μν¨μ΄λ€. κ°κ°μ νλͺ©μ μ΄ν΄λ³΄λ©΄μ μ κ°κ°μ λ¨κ³κ° νμνμ§ μμλ³Ό κ²μ΄λ€. λ§μ 컨μ€ν΄νΈλ€μ΄ νμμ λΉμ·ν νλ‘μΈμ€λ₯Ό λ°μκ°λ©°, νλμμ
μ νλ€. μν©μ λ°λΌ μ μ ν μμ©νλ©΄ λλ€. νΉμλ μ΄μ κ°μ κ³Όμ μ νμ μκ³ βλΉμ₯ μ΄ SQLμ 3μ΄ μμ λλκ² ν΄λ!β λΌκ³ ν μ μλ€. μ΄ μ¬λμ μ€μν κ²μ μκ³ μμμ΄ λΆλͺ
νλ€. νΉμ λΆλΆμ νλνλ€κ³ ν΄μ 무쑰건 λΉ¨λΌμ§κ³ , μ΅μ νλλ κ²μ μλλ€. λν νΉμ ν λΆλΆμ νλνλ©΄ λ€λ₯Έ κ³³μ΄ λλ €μ§ μλ μλ€. ν°λλ€κ³Ό λ°μ λ©μ΄λ¦¬λ€μ΄ λͺ¨μ¬ νμ°μ΄ λ κ²μ΄λ―λ‘ νλμ© μ‘μκ°λ κ²μ΄ μ’λ€. 미리 μΈκΈνμ§λ§ ν°λλ€μ μΈλ±μ€ μμ± λ° μ‘°μ μΌλ‘ κ±°μ ν΄κ²°λκ³ , λ°μ λ©μ΄λ¦¬λ€μ μ΄λ£¨λ§μ Έ μ€ μμ΄ νμνλ€. λ€μμ κ·Έλ¦Όμ 보μ.
μ΄ λͺ¨λ κ²μ΄ λ§μ‘±λλ €λ©΄ μμ€ν
μ 체λ₯Ό 보μμΌ νκΈ° λλ¬Έμ ν° κ·Έλ¦Όμ κ·Έλ €κ°λ©΄μ μΈλΆμ μΌλ‘ λ€μ΄κ°μΌ νλ€. μΌλ ¨μ κ³Όμ λ€μ μ²μ μ νλ μμ€ν
μ μκ³ λν ν¨μ¨μ μΈ νλμ μν¨μ΄κΈ°λ νλ€.
[edit]
2 μ μ ν κΆνμ νλκ³Ό νλ ₯μ μ½μ #νλμ ν λλ λ§μ μΈλ ₯μ΄ ν¬μ
λμ§ μλ κ²μ΄ μΌλ°μ μ΄λ€. κ·Έλ¬λ―λ‘ κ°λ°μλ€κ³Όμ νλ ₯κ³Ό μ μ ν κΆνμ΄ μ£Όμ΄μ ΈμΌλ§ νλμμ
μ μ±κ³΅λ¦¬μ λ§μΉ μ μλ€. λλΆλΆμ νλμμ
μ μμ€μ μμ μ΄ λΆκ°νΌν κ²½μ°κ° λ§μ΄ μμΌλ©°, μμ€ μμ μ μν΄ κ°λ°μλ€μ ν΅μ ν μ μλ κΆνμ΄ μ£Όμ΄μ§μΌλ‘ ν΄μ λΉμ©κ³Ό ν¨κ³Όλ₯Ό μ κ°ν μ μλ€. λν νλμΈλ ₯μ΄ λͺ¨λ μμ μ ν μ μμΌλ―λ‘ κ΅μ‘μ ν΅ν κ°λ°μ μ€μ€λ‘ μμ μ νλλ‘ μ λνλ κ²λ νλμ λ°©λ²μ΄λ€.
DBAλ λ°μ΄ν°λ² μ΄μ€μ λͺ¨λ μ
무λ₯Ό κ΄μ₯νλ μ¬λμ΄λ€. λ°μ΄ν°λ² μ΄μ€ μμ€ν
μ μ€μ μμλΆν° μ€κ³/ꡬν λ±μ κ°λ°μ μ΄λ₯΄κΈ°κΉμ§ λ§€μ° κ΄λ²μν μν μ κ°μ§κ³ μλ€. μ°λ¦¬λλΌμ DBAλΌκ³ νλ©΄ μ격μ¦μ μ·¨λνκ³ , μ μ°μ€μμ λ°±μ
κ³Ό 볡μ/볡ꡬλ₯Ό μν΄ ν
μ΄νλ₯Ό κ°μ λΌμ°λ μ¬λ μ λλ‘λ§ μκ°νλ κ²½μ°κ° λ§μ΄ μλ€. μ€μ λ‘ κ·Έλ° κ²½μ°κ° λ§μ΄ μκ³ , λ°±μ
/볡μμ νμ§ λͺ»νλ DBAλ μλ€. μ¬μ§μ΄λ βSELECT * FROM TABLE_NAMEβ μ SQLλ§ μκ³ μλ κ²½μ°λ μλ€. DBAλΌλ νμ΄νμ κ°μ§κ³ μμΌλ©΄μ μ§μ κ΄λ¦¬νμ§ μκ³ , λ€λ₯Έ μ
체μ μ μ§/보μ κ³μ½μ νλ κ²½μ°λ λ§μ΄ μλ€. κΈ°μ
μ μμ¬κ²°μ κΆμμ κ΄μ μμ 보면 μ΄μ€μΌλ‘ λ λλΉλ₯Ό νκ³ μλ μ
μ΄λ€.
κ·Έλ λ€λ©΄ λ°±μ
μ μ λ°λ μ¬λμ΄ DBAμΌκΉ? μμ μ€μλ κ΄λ¦¬μμ©, κ°λ°μμ©μ΄λΌκ³ ν΄μ μ±
μ 2κΆμΌλ‘ λλμ΄ λμ κ²½μ°λ μκ³ , βκ΄λ¦¬μμ μ
μ₯μμβ¦β λλ βκ°λ°μμ μ
μ₯μμβ¦βλΌλ λ§μ μ°κΈ°λ νλ€. (λ¬Όλ‘ νμμ λ λ€λ₯Έ μ±
μμ βκ΄λ¦¬μλ₯Ό μνβ μ΄λΌλ λ¨μ΄κ° λΆμ΄ μλ€. νμλ μλΉν λ§μ λ€μ§ μμμ§λ§ λμΈμκΈ°μ λ°λ₯΄λ κ²μ΄ λ«κ² λ€λ μκ°μ κ·Έ λΉμμλ κ·Έλ κ² νλ€.) κ³Όμ° κ°λ°μ, κ΄λ¦¬μλ‘ λλ νμκ° μμκΉ? κ·Έλ λ€λ©΄ DBAλ 무μμΌκΉ? λ§ κ·Έλλ‘ DBAλ λ°μ΄ν°λ² μ΄μ€μ κ΄λ ¨λ λͺ¨λ μ
무λ₯Ό λ₯μνκ² ν μ μλ μ¬λμ΄λΌκ³ ν μ μλ€. νλ‘κ·Έλ¨ μμ€λ μ΄λ μ λ λ³Ό μ€ μμμΌ νκ³ , 쿼리 μμ± λ₯λ ₯κ³Ό μ±λ₯ νλμ λν λ₯λ ₯λ κ°μΆμ΄μΌ νλ€. λν λ°μ΄ν°λ² μ΄μ€ μλ²μ μ΄μκ³Ό λ°μ΄ν°λ² μ΄μ€ λͺ¨λΈλ§κ³Ό μ€κ³μ λν λ₯λ ₯λ κ°μΆμ΄μΌ νλ€. κ²°κ΅ λ°μ΄ν°λ² μ΄μ€ κ΄λ¦¬μ λ°μ΄ν°λ² μ΄μ€ κ°λ°μ λμμ΄λ‘ λ΄μΌ ν κ²μ λΉμ°νλ€.
λ νκ°μ§ κ³ λ €ν΄μΌ ν κ²μ μ체κ°λ°μΈμ§ μλλ©΄ μμμμ±μΈμ§λ₯Ό μμμΌ νλ€. μΈλΆμ
체μμ κ°λ°ν νκ²½μ΄λΌλ©΄ μμ€ μμ μ΄ κ°λ₯νμ§μ λν μ°μ μ μΈ νμΈμ΄ νμνλ€. μ΄ν리μΌμ΄μ
νλμ λλΆλΆ μμ€ μμ μ μ λ°νκΈ° λλ¬Έμ΄λ€.
[edit]
3 κΈ°μ μ μμ€ν νκ²½ νμ λ° μλ£ μμ§ #κΈ°μ
μ μμ€ν
νκ²½μ νμ
νλ κ²μ΄ νλμ 첫 λ²μ§Έ λ¨κ³λΌκ³ ν μ μλ€. μ΄λ€ OSλ₯Ό μ¬μ©νκ³ μμΌλ©°, ν¨μΉλ μ΄λκΉμ§ μ μ©λμλμ§ λλ Storage RAID λ 벨 λ±μ νλμ¨μ΄ μ€νμ νμ
νλ λ¨κ³μ΄λ€. Windows μμ€ν
μμλ βμ±λ₯β λꡬλ₯Ό μ΄μ©νλ€. λ€μμ λͺ¨λν°λ§μ νμν μ 보λ€μ΄λ€. βProcessor Time <= 80%β μ μλ―Έλ νκ· 80% μ΄νμ¬μΌλ§ μ μμ΄λΌκ³ νλ¨ν μ μλ€λ κ²μ΄λ€. λ¬Όλ‘ νΌν¬νμμ΄ μ
무μ λ§€μ° μ€μν μν©μ΄λΌλ©΄ νΉμ μκ°μ κΈ°μ€μ λ§μΆμ΄μΌ ν κ²μ΄λ€. μ±λ₯κ°μ²΄λ νμμ λ°λΌμ λ μΆκ°νλ€. (μ°Έκ³ : κΈ°λ³Έμ μΌλ‘ μμ§ν΄μΌ ν λ°μ΄ν°μ μ)
μ΄λ¬ν μλ£ μ΄μΈμ ERD, μ½λκ·μΉμ§, μ΄ μ¬μ©μμ, λμ μ¬μ©μμ λ±κ³Ό κ°μ μ΄μ κΉμ§μ λͺ¨λ μμ€ν κ°λ° κ²°κ³Ό λ¬Έμλ₯Ό μμ§ν΄μΌ νλ€. μΌλ°μ μΌλ‘ μμ μ νμ¬κ° μλ μ΄μμ μ±λ₯νλμ μΈλΆμ 체μ 맑긴λ€λ κ² μμ²΄κ° λ¬Έμ λ€. μλ§λ λ¬Έμλ₯Ό μ°ΎκΈ°κ° μ½μ§ μμ κ²μ΄λ€. λ¬Έμκ° μ‘΄μ¬ν΄λ λ§€μ° μλ κ²μ΄λΌ ν° λμμ΄ λμ§λ μμ κ²μ΄λ€. (κ·Έλλ μλ κ²λ³΄λ€λ λ«λ€.) μ΄μ¨λ μ΅λν μμ€ν κ³Ό κ΄λ ¨λ λͺ¨λ λ¬Έμλ₯Ό μμ§νλ κ²μ λμμ΄ λλ€. μ±λ₯λͺ¨λν°λ§μ νμν κΈ°μ€κ°μ κ° S/W λ°΄λλ μΈν°λ·μ λλ € μμΌλ―λ‘ μ½κ² μ»μ μ μλ€. [edit]
4 μμ§λ μλ£μ κ°κ΄μ μΈ λΆμ #μμ€ν
νκ²½ νμ
λ¨κ³μμλ μμ€ν
μ λν κ°μ μ‘κΈ° μν μλ£ μμ§λ¨κ³λΌκ³ ν μ μλ€. μ±λ₯ λͺ¨λν°λ§ λꡬλ₯Ό μ΄μ©νμ¬ λΆμλ κ²°κ³Όλ₯Ό κ°μ§κ³ λͺ¨λ κ²μ νλ¨νλ κ²μ μ λ ν΄μλ μ λλ μ§μ΄λ€. λ€μμ μ€λ‘λ₯Ό 보μ. μ¬λ¬ κ°μ§ μμλ₯Ό λͺ¨λ κ³ λ €ν΄μΌ ν¨μ λνλ΄κΈ° μν μμ μ΄λ―λ‘ λͺ¨λ μ±λ₯κ°μ²΄μ λν μΈκΈμ μμ κ²μ΄λ€. μ¬λ‘λ₯Ό λ³΄κ³ μ€μ μμμΈ CPU, Memory, Diskμ λν΄μ μμ보λλ‘ νκ² λ€. ν΄μμ κ²°κ³Όλ μμμΌ λΏμ΄μ§ κ·Έλ λ€λ κ²°λ‘ μ΄ μλλ€. κ²°λ‘ μ μ ν΄λκ³ λ΅μ μ°Ύλ κ²μ μλͺ»λ κ²°κ³Όλ₯Ό κ°μ Έμ¬ μ μλ€.
μ±λ₯ λͺ¨λν°λ§ λꡬλ₯Ό μ΄μ©ν λ°μ΄ν° μμ§
ν΄μ
μ΄ μ¬λ‘λ₯Ό ν΅ν΄ μ€μν λͺ κ°μ§ λ¨μλ₯Ό μ‘μ μ μλ€. λ¬Όλ‘ λ λ§μ μ±λ₯ λͺ¨λν°λ§ κ°μ²΄λ₯Ό μ΄ν΄λ³΄μμΌ νκ² μ§λ§ μ΄ 3κ°μ§λ§μΌλ‘λ λ§μ κ²μ μ μ μλ€. μ΄λ―Έ μΈκΈ νλ°λ‘ μ΄ν리μΌμ΄μ νλμ΄ νμνλ€λ κ°μ μ‘μλ€. λν Readμ¨κ³Ό Writeμ¨λ μ»μ μ μμλ€. μ΄ μμ€ν μ μΌλ°μ μΈ OLTP μμ€ν μΈλ° μ°κΈ°κ° μ½ 40%λΌλ©΄ μ΄ν리μΌμ΄μ μμ μ°κΈ° μ°μ°μ΄ λ§μ΄ λ°μν κ²μ μ μ μλ€. λ§μ½ νΉμ μΌμ μ°κΈ° μμ μ΄ λ§μ λ°°μΉμμ μ νλ€λ©΄ λ¬Έμ κ° λμ§ μμ§λ§ νμμμλ μ΄λ¬ν κ²°κ³Όλ₯Ό μ»μλ€λ©΄ λ¬Έμ λ μλ€κ³ 보μλ λλ€. (μ΄λ° κ²½μ°λ νμμ κ²½νμ μνλ©΄ MSSQL Serverμ Tempdbλ₯Ό κ³Όλν μ¬μ©λ ν λͺ« λ¨λ¨ν νκ³ μλ κ²μ΄ λλΆλΆμ΄μλ€.) λν ν μμ€ν μμ RAID Levelμ΄ μ ν©νμ§λ₯Ό νλ¨ν μλ μλ€. λ§μ½ μ΄ μμ€ν μ΄ RAID5μλ€λ©΄ λΆμ ν©μ΄λ€. RAID5λ μ°κΈ°κ° 10% μ΄μμ΄λΌλ©΄ μ±λ₯μ νλ₯Ό κ°μ Έμ¨λ€. RAID λ λ²¨μ΄ κΆκΈνλ€λ©΄ Webμμ μ 보λ₯Ό μ»κ±°λ RAID λ 벨μ λν΄μλ λ°λ‘ λ€λ£¨λ μ₯μ μ°Έκ³ νλΌ. [edit]
5 CPU, Memory, Disk κΈ°λ³Έμ μΈ κ³ λ €μ¬ν #CPU
[edit]
6 DBMS Wait Event λͺ¨λν°λ§ #μ΄ μ λ μ§νλμλ€λ©΄ μ¬μ©μμ λͺ©μ리, κ°λ°μμ λͺ©μ리λ μ΄λ μ λ λ€μμ κ²μ΄λ€. μ΄μ μ΄λ€ λΆλΆμμ λ³λͺ©μ΄ μλμ§ νμ
ν νμκ° μλ€. Microsoft κΈ°μ μ§μλΆμμλ λ³λͺ©μ§μ νμ
μ μν 2κ°μ μ μ₯ νλ‘μμ λ₯Ό μ 곡νλ€. μ΄ νλ‘μμ λ MSSQL Serverμ Wait Typeμ μμ§νλ κ²μ΄λ€. μμ§λ μ 보λ₯Ό κ°μ§κ³ λΆμνλ€.
λ§μ½ μ 보 μμ§μκ°μ κΈ°λ³Έκ°μΈ 10λΆμ΄ λΆμ‘±νμλ€λ©΄ track_waitstats νλ‘μμ μ νλΌλ―Έν°μΈ
@num_samples int=10μ κ°μ 10μμ λ λλ €μ£Όλ©΄ λλ€. κ²°κ³Όλ λ€μκ³Ό κ°λ€. λκΈ°μ ν λΆμ'
CXPACKET
CXPACKETλ Parallel Process λκΈ°μ νμ΄λ€. μ΄κ²μ Parallel Queryμ μ€ν μ κ° Processκ° μ€νλλ ꡬκ°μ Lock Issueκ° μμ μλ μμμ μλ―Ένκ±°λ νΉμ νλμ¨μ΄μ λ³λͺ©μΌλ‘ μΈν΄ λ€λ₯Έ Processκ° λκΈ°νκ³ μλ Processκ° λλ λκΉμ§ λκΈ°νκ³ μμ μλ μμμ μλ―Ένλ€. DBMSκ° μ¬λ°λ₯Έ νλ¨μ νμ¬ λ³λ ¬μ²λ¦¬λ₯Ό νλμ§ μλλ©΄ νκ²½μ λ§λ€μ΄μ£Όμ§ μμμ ν μ μμ΄ λ³λ ¬μ²λ¦¬λ₯Ό νλ κ²μΈμ§ μ νλ¨ν΄μΌ νλ€. 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λ₯Ό μ»κΈ° μν΄ λκΈ°νλ μκ° NETWORKIOλ Network Input/Outputμ λκΈ°νλ μκ°. NICμ Bandwidthλ₯Ό 체ν¬ν΄μΌ νλ€. Latchλ₯Ό μ»μ λμμλ λ€λ₯Έ νλ‘μΈμ€κ° νμ΄μ§μ λ³κ²½ λ±μ νμ§ λͺ»νλλ‘ Lockμ κ±Έκ² λλ κ²μ΄λ€. κ·Έλ¬λ―λ‘ Latchλ₯Ό μ»κ³ Latchλ₯Ό ν΄μ ν λκΉμ§μ μκ°μ΄ λΉ λ₯΄λ©΄ λΉ λ₯Όμλ‘ μ±λ₯μ μ¦κ°λλ€. μ¦, Memoryμ Diskκ°μ λ°μ΄ν° μ μ‘μ΄ λΉ λ₯΄λ€λ©΄ LCK_M_S, PAGEIOLATCH_SHμ λκΈ° μκ°μ μ€μ΄λ€ κ²μ΄λ€. IO_COMPLETIONλ I/O μμ²μ μλ£νλλ° λκΈ°νλ μ νμ λ§νλ€. Query Planμ΄ λμ κ²½μ° λ°μνλ λκΈ° μ νμΌλ‘ Full Scan, Index Scanμ΄ μΌμ΄λλ 쿼리μ λν Query Plan μ‘°μ μ΄ νμνλ€. PAGEIOLATCH_EXλ LATCH_EX λκΈ° μ νκ³Ό ν¨κ» μΌμ΄λλ λκΈ° μ νμ΄λ€. μμ§λ λ°μ΄ν°λ‘ 보μ CXPACKET, PAGEIOLATCH_SH λκΈ°μ νμ΄ 70% μ΄μμ μ°¨μ§ νκ³ μλ€. μ΄ν΄λ³΄μμΌ ν κ²μ μ΄ μκ°λμ ν° μμ μ΄ μΌμ΄λ¬λμ§μ λν κ²κ³Ό λΈλ‘νΉμ λν μ΄μμ΄λ€. λ§μ½ μ€νκ³νμ΄ μλͺ»λμ΄μ 쿼리λ₯Ό μννλ μ΄ λΉμ©μ΄ MSSQL Serverμμ μ€μ ν κ°(κΈ°λ³Έκ°:5)λ³΄λ€ λ ν¬λ€λ©΄ λ³λ ¬μΏΌλ¦¬λ₯Ό μνν κ²μ΄λ€. μ€μν κ²μ κ³Όμ° λ³λ ¬μΏΌλ¦¬κ° νμνκ°μ λν νκ°μ΄λ€. λν Latchμ λν λκΈ°μ νλ λ§λ§μΉ μλ€. μ΄ μλ―Έλ λ κ°μ§λ‘ ν΄μν΄ λ³Ό μ μλ€. μ¦, Memory λΆμ‘±μ΄κ±°λ Disk I/O μ±λ₯μ κ΄λ ¨λ κ²μ΄λ€. λ¬Όλ‘ H/Wμ κ΄μ μμλ§ λ³΄λ©΄ κ·Έλ λ€. μ΄ν리μΌμ΄μ μ΄ μ λλ‘ μμ±λμλμ§μ μ¬λΆλ₯Ό νλ¨ ν Memoryμ Disk I/Oμ λν΄μ μ΄ν΄λ³΄μμΌ ν κ²μ΄λ€. [edit]
8 Index λΆμ #νλμμ
μ μλ’°κ° λ€μ΄μ¨λ€λ©΄ Indexμ λν μ΅μ νκ° μ΄λ£¨μ΄μ‘λ€λ κ²μ κΈ°λνκΈ° μ΄λ ΅λ€. κ·Έλ¬λ―λ‘ μ΄ν리μΌμ΄μ
λ€μ΄ μ μνλκ² νκΈ° μν΄μλ μ μ ν νκ²½μ μ‘°μ±μ΄ νμνλ€. μ¬μ©μλ€μ μ 보μꡬλ₯Ό λ§μ‘±μν€κΈ° μν μ μ ν μλ²μ μ©λμ΄ κ°μΆμ΄μ Έ μμ΄μΌ νλ©°, μ μ ν λ€νΈμν¬ λμνλ±μ νλμ¨μ΄ νκ²½κ³Ό μννΈμ¨μ΄μ μΈ μ μ ν μ€μ μ΄ νμνλ€. κ·Έλ¬λ―λ‘ μμ±λ λ§μ Queryλ€μ΄ μ΅μνμ μμμ μ΄μ©νμ¬ κ²°κ³Όμ§ν©μ λ§λ€κ² νκΈ° μν΄μ μ μ ν μΈλ±μ€μ μμ±μ΄ νμνλ€.
κ° DBMS λ²€λλ€μ μ μ μ¬λμ΄ ν μΌμ μ€μ΄κ³ μλ€. Microsoftμ¬λ κ·Έ μ€ λ μ¬νλ€. Oracleμ¬λ λ§μ°¬κ°μ§λ‘ DBAμ ν μΌμ μ€μ΄κ³ μλ€. κ·Έλ¬λ―λ‘ DBAμ μ 무λ μ°½μ‘°μ μΈ μ 무(Query, SPμμ±, Modeling & Design)λ‘ μ΄λλκ³ μλ μΆμΈμ΄λ€. Indexμ λν κ²λ MS-SQL Serverλ Index Tuning Wizard λΌλ ν΄μ λμ΄ κ½€ ν¨κ³Όμ μΌλ‘ Indexλ₯Ό μ μ νλ€. μ΄ ν΄λ§μ΄λΌλ μ λΉν μ μ΄μ©νλ©΄ κ·Έλλ§ μ±λ₯μ λν κ±±μ μ μ½κ° λ μ μλ€. κ·Έλ¬λ μ΄ ν΄λ μ±κ²©μ΄ μμ΄ λμ¨ κ²°κ³Όλ₯Ό DBAκ° νμΈνμ¬ μ μ ν μ‘°μ ν μλ²μ μ μ©ν΄μΌ νλ€. Index Tuning Wizardλ₯Ό μ¬μ©νκΈ° μν΄μλ μλ£μ μμ§μ΄ λ§€μ° μ€μνλ€. ChartNo + ColA + ColB ChartNo + ColB + ColC + ColD ChartNo + ColZWhereμ λͺ μν 쑰건μ λͺ¨λ κ²°ν©μΈλ±μ€λ‘ λ§λ€μ΄μ§ 격μ΄λ€. (μμ€λ₯Ό 보μ§λ μμμ§λ§ κ²½νμ Index Tuning Wizardλ 쑰건 μ μ λͺ μν 컬λΌκ³Ό μ νλλ₯Ό μ΄μ©νμ¬ Indexλ₯Ό μμ±νλ κ²μΌλ‘ νμ λλ€.) μμ κ²½μ° ChartNoλ λ§μμΌ 3건μμλ λΆκ΅¬νκ³ ChartNoλ‘ μμν κ²°ν©μΈλ±μ€κ° λ§μ΄ λ§λ€μ΄μ§ κ²μ λ³Ό μ μλ€. μ΄λ¬ν κ²μ Index Tuning Wizard λΏλ§ μλλΌ κ°λ°μλ μ΄λ¬ν κ²½ν₯μ 보μ΄λ κ²½μ°κ° λ§μ΄ μλ€. κ·Έλμ νμμ κ°μ κ²½μ° Tuning μμ μ ν λ νκ²½νμ μ΄ν Index μ 리μμ λΆν° νλ€. νμ μλ μΈλ±μ€λ₯Ό μ§μμ£Όκ±°λ λ€μ μμ±νλ κ²μ΄λ€. μμ κ°μ΄ μΈλ±μ€κ° μμ±λμ΄ μμ κ²½μ°λ μμ λμμ΄λ€. μ¦, ChartNo 컬λΌμ λ¨μΌ μΈλ±μ€λ‘ ꡬμ±νλ κ²μ΄ κ°μ₯ μ΅μ μ΄λΌλ κ²μ΄λ€. μ§κΈμ νλμ μ μ°¨λ₯Ό λ€λ£¨λ° μ€μ μ λκ³ μμΌλ―λ‘ μ μΈλ±μ€λ₯Ό μμ±νλ©°, μΈλ±μ€λ₯Ό μ‘°μ νκ³ , μΆκ°νμ¬ μ£Όμ΄μΌ νλμ§λ μΈλ±μ€ λΆλΆμμ μμΈν λ€λ£¨λλ‘ νκ² λ€. [edit]
9 λ°μ΄ν°λ² μ΄μ€ λμμΈ νλ #λ°μ΄ν°λ² μ΄μ€ λμμΈ νλμ λ§€μ° λ―Όκ°ν μ¬μμ΄λ€. μ μΉμ (?)μΌλ‘λ νλ‘μ νΈ μ λ°μ μΈ μν₯λλ λ§€μ° ν¬λ€. μ μΉμ μ΄λΌλ ννμ μ΄ κ²μ λ°μ΄ν°λ² μ΄μ€ λμμΈμ λμ΄ λ§μ κ΄λ¦¬μκΈμ νλ‘μ νΈ μ°Έκ°μκ° μ§ννκΈ° λλ¬Έμ΄λ€. λ§μ½ λμμΈμ λν΄μ μ΄λ€ μ§μ μ νλ©΄ λλΆλΆμ κ΄λ¦¬μλ€μ λκ°ν΄νκ³ , κΈ°λΆ λλΉ νκΈ° λλ¬Έμ λ§μ κ·λ₯Ό κΈ°μΈμ΄μ§ μλλ€. μμ¬μν΅μ΄ μλ μμ
μ λ§€μ° νλ€κΈ° λ§λ ¨μ΄λ€.
[edit]
10 SQL νλ λμ μμ§ #μ΄ λ¨κ³μμ λ
μλ€μ΄ μ½κ°μ νΌλ ν μλ μμ κ²μ΄λ€. Index μμ± λ° μ‘°μ μ μν λ°μ΄ν°λ₯Ό μμ§νλλ° λ λ¬΄μΌ μμ§νλ€λ λ§μΈκ°? λ§λ λ§μ΄λ€. μλ λͺ¨λ SQLμ λμμΌλ‘ νλ μ°μ μλλ κ²λ€μ λ¨Όμ λΆλ₯λ₯Ό νμλ κ²μ΄λ€. μ΄ μλ£λ νλμμ
μλ£ μ μΌλ§λ§νΌμ ν¨κ³Όλ₯Ό κ°μ§ μμ
μ΄μλμ§ νκ°ν λμμ μλ£κ° λκΈ°λ νλ€. λλ λ§λ μλ΅μκ° λλ μ 체 μ²λ¦¬μκ°μ΄ λ§μ κ²λΆν° νλλ μλλ©΄ μμμ μ¬μ©λμ΄ λ§μ κ²μ λμμΌλ‘ νλκ°μ λν λ¬Έμ μ΄λ€. λ€μμ νμκ° μ¬μ©νλ νμμ λ¬Έμμ΄λ€.
[edit]
11 Query λ° SP μ΅μ ν #λͺ¨λ λ°μ΄ν°κ° μμ§λμλ€λ©΄ μ΄μ λΆν°λ μ΄ν리μΌμ΄μ
νλμ νκ² λλ€. λ¬Όλ‘ μ΄μ μ λΉμ¦λμ€ λ‘μ§μ νλμ΄ μ΄λ£¨μ΄μ§λ€λ©΄ λμ± μ’λ€. μμ§λ μλ£λ₯Ό ν λλ‘ νλμ© μ±λ₯μ μ
μν₯μ λΌμΉλ κ²λ€μ μ κ±°ν΄ λκ°μΌλ‘μ¨ μ΄ λ¨κ³μ μμ
μ μ§νλλ€. μ΄ λ¨κ³μμλ νλ μμ
μμ SQL μμ± λ₯λ ₯κ³Ό κ΄κ³μλ€μ νμ‘°κ° νλ μμ
μ μ±κ³΅μμΈμΌλ‘ λ§€μ° μ€μνκ² μμ©νλ€. SQL νλμ λ€μμ 3κ°μ§ κ΄μ μμ νμ
λλ€.
SQL Tuningμ 3κ°μ§ κ΄μ
[edit]
12 νΈλμμ μ 보 μμ§ #Query λ° SPλ₯Ό μ΅μ ν νμμλ λΆκ΅¬νκ³ λλ¦° μΏΌλ¦¬κ° μκ±°λ μλ΅μκ°μ΄ μ€νμλ§λ€ νλ¦° κ²μ Blocking λ° Dead Lockμ μμ¬ν΄μΌ νλ€. νΉμλ λ°μ΄ν°λ² μ΄μ€ μλ²μμ μ΄λ»κ² ν΄ μ€ κ²μ κΈ°λνκ³ μμΌλ μ΄κ²μ μλͺ»λ κΈ°λμ΄λ€. μλνλ©΄ νΈλμμ
μ μ£ΌμΈμ μ΄ν리μΌμ΄μ
μ μκΈ° λλ¬Έμ΄λ€. νΈλμμ
λ¬Έμ λ 99%κ° μ΄ν리μΌμ΄μ
λλ μ€κ³μ μλͺ»μ΄λΌκ³ κ°ν λ§ν μ μλ€. (λλΆλΆμ μ΄ν리μΌμ΄μ
) μλ²μμ μ μ΄ν μ μλ κ²μ λ€λ§ μ΅μ μ Indexλ₯Ό λ§λ€μ΄ νΈλμμ
μ μν₯μ μ΅μνμν€κ³ , νλ‘μΈμ€λ₯Ό Killνκ±°λ κ³ λ¦½ν λ 벨μ μ‘°μ ν μ μλ κ²λΏμ΄λ€.
[edit]
13 νλμ¨μ΄ νλ #νλμ¨μ΄ νλ μ μλ² μΈ‘μμ μ΄ν리μΌμ΄μ
μ΄ μ λμκ° μ μλλ‘ νκ²½μ λ§λ€μ΄ μ€λ€. μλ₯Ό λ€μ΄ Index μ¬μμ± λ° μ‘°κ°λͺ¨μ, Disk μ‘°κ°λͺ¨μκ³Ό κ°μ μμ
μ΄λ€. λν μ μ ν Disk λΆμ°μΌλ‘ λΆνλ₯Ό λΆμ°μμΌμ£Όλ κ²μ΄ μ€μνλ€. λͺ¨λ λ¨κ³κ° λλ¬μμλ λΆκ΅¬νκ³ μ±λ₯μ΄ λ¨μ΄μ§λ€λ©΄ νλμ¨μ΄ μμμ λΆμ‘±μ΄κ±°λ μ€κ³μμ λ¬Έμ μ΄λ―λ‘ νλμ¨μ΄ μ¦μ€μ κ³ λ €νλ€. μ΄λλ μ±λ₯λͺ¨λν°λ§ λꡬμ MSSQL Server λ³λͺ©μ λͺ¨λν°λ§ ν μλ£λ₯Ό κ°μ§κ³ μ΄λ€ λΆλΆμ μμμ΄ λΆμ‘±νμ§λ₯Ό νμ
ν λ€ νλμ¨μ΄ μ¦μ€μ κ³ λ €ν΄μΌ νλ€. μ€μν κ²μ κ²½νμ μν νλ¨μ νμ§ λ§λΌλ κ²μ΄λ€. μ΄μ μ λ©λͺ¨λ¦¬λ₯Ό μ¦μ€νμλλ μ±λ₯μ΄ ν₯μλμλ€κ³ νμ¬ μ±λ₯ λ¬Έμ κ° λ°μνμ¬ λ λ€μ λ©λͺ¨λ¦¬λ₯Ό μ¦μ€νλ κ²μ λ§€μ° μλͺ»λ κ²μ΄λ€. μ΄λ ν κ³³μ΄ λ³λͺ©μ΄λΌλ©΄ μ κΈ°μ μΌλ‘ λ¬Άμ¬μ Έ μμ§μ΄κΈ° λλ¬Έμ μ±λ₯μ΄ λ¨μ΄μ§ μ μμμ μμμΌ νλ€.
[edit]
14 μ²λ¦¬μ μ°μ μμ κ²°μ #μ 보μμ€ν
μ C/S[1]νκ²½μ΄κ° 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()λ₯Ό μ΄μ©νλ©΄ λ§€μ° μ½λ€. λ€λ§ μλ² μΈ‘μμ μ²λ¦¬νκΈ°μλ (κ²°κ³Όλ λμ€μ§λ§) λΉν¨μ¨μ μΈ μ²λ¦¬μΈ κ²½μ° λ¬΄λ¦¬νκ² μλ² μ²λ¦¬λ₯Ό κ³ μ§νμ§ λ§κ³ , μ€κ°κ³μΈ΅μ΄λ ν΄λΌμ΄μΈνΈ νλ‘κ·Έλ¨μμ μ²λ¦¬νλλ‘ νλ κ²λ μμ μ¬μ©μ λΆμ°μΌλ‘ μΈν μ±λ₯ ν₯μν¨κ³Όκ° μλ€λ κ²μ μμλ¬λΌλ κ²μ΄λ€. μ 쿼리μ κ²½μ°λ μμμ μ¬μ©λμΌλ‘ λ³Ό λ ν΄λΌμ΄μΈνΈλ μ€κ°κ³μΈ΅μμ μ²λ¦¬νλ κ²μ΄ λ λ«λ€κ³ λ³Ό μ μμΌλ, κ°λ°μκ°κ³Ό κ°μ μν© μμλ κ³ λ €ν΄μΌ νλ€. [edit]
15 μΌκ΄μ μ© #μ΄ λΆλΆμ μ λ΅μ μΈ κ²μ΄λ€. λ¬Όλ‘ νλ μ /ν λΉκ΅μλ£λ₯Ό λ§λ€λ©΄ λμ§λ§ μ¬μ©μμκ² μ±λ₯ ν₯μ μμ
μΌλ‘ μ 보μ μ§μ΄ ν₯μλμλ€λ 보μ¬μ£ΌκΈ° μν΄μλ μ΄μ κΉμ§μ μμ
μ μ’
ν©νμ¬ μΌκ΄ μ μ©νλ κ²μ΄ μ€μνλ€. μ‘°κΈμ© μ±λ₯μ ν₯μμν€λ κ²μ μ¬μ©μκ° μΈμνκΈ° νλ€κΈ° λλ¬Έμ βμ΄? κ°μκΈ° λΉ¨λΌμ‘λ€β νκ² λ§λ€μ΄μΌ νλ€.
ο»Ώ
|
λΆκ°λ₯μ μμ¬νμμ νμμ΄μ λΉκ²ν μμ λνΌμ²μ΄λ€. (λν΄λ μΉ) |