SQL Server 2008 Performance Data Collection
Performance Data Collection SQL Server 2008 ile gelen bir feature dır. Express sürümü hariç bütün Edition larda bulunmaktadır. Adından da anlaşılacağı üzere DB ler için performance dataları toplamaya ve toplanan bu dataları raporlamaya yarayan bir yapıdır. Özel bir veritabanı data warehouse olarak kullanılmakta ve toplanan datalar bu veritabanına yazılmaktadır. Periyodik(Default u 15 dakika) olarak bilgileri topladığı için geriye dönük olarak belirli bir zaman aralığı için rapor alınabilmektedir. Örneğin Disk Usage Report, Query Report veya server side trace bilgileri raporlanabilmektedir. Konu hakkında özet bir bilgi geçtikten sonra şimdi örneğimizi yapmaya başlayalım. Ben bu örneğimde aşağıdaki adımlar üzerinde duracağım.
Data Warehouse un kurulumu.
Windows login in create edilmesi.
SQL Agent Service Account ların değiştirilmesi
Collection Set lerin ayarlanması
Raporların İzlenmesi
Data Warehouse Kurulumu
Daha öncede bahsettiğim gibi toplanan datalar ayrı bir veritabanında tutulmaktadır. Bu veritabanı verinin toplandığı server ın üzerinde olabileceği gibi başka bir server da da bulunabilmektedir. Biz yapımızı geniş kapsamlı düşüneceğiz. Örneğin sisteminizde ki bütün server lardan veri toplayıp farklı bir serverdaki datawarehouse a yazdığımızı düşünelim.
Örneğimizde S10Ent instance ından verileri toplayıp TS2008_1 instance ında ki datawarehouse a yazacağız.
TS2008_1 instance ındaki datewarehouse kurulumuna geçelim.
Management >> Data Collection a sağ tıklayıp Configure Management Datawarehouse yazısını tıklayalım ve çıkan ekrana next diyerek bir sonraki ekrana geçelim.
Gelen ekranda Create or upgrade a management data warehouse seçeneği seçerek next e basalım.
Gelen ekranda new butonuna basarak create edeceğimiz data warehouse için bir isim girelim. Örneğin DataCollectionDW ismini kullanalım ve OK e basarak bir önceki ekrana geçelim.
Bu ekranda Next e basarak user seçimini yapacağımız ekrana geçelim.
Bu ekranda NT AUTHORITY\SYSTEM account unu seçip next e basalım. Siz diğer hesaplardan kullanacaklarınızı da seçebilirsiniz.
Finish e basarak işlemi sonlandıralım.
TS2008_1 instance de data warehouse hazırlıkları tamamlanmış oldu.
Windows Login Create Edilmesi
Farklı serverlardan veri toplayıp bunları tek bir data warehouse server ına yazacağımız için SQL Server Agent service account u olarak kullanmak üzere bir windows yada domain account u oluşturmanızı tavsiye ederim.
Oluşturacağınız bu account administrator haklarına sahip olursa ekstra bir ayar yapmanıza gerek kalmayacaktır. Ama administrator olmaz ise Logon Account as a Service e bu account ın her data toplanan server için eklenmesi gerekmektedir. Ayrıca her server da açılan, collect edilen dataların tutuldukları folder larda bu account un yetkilendirilmesi gerekmektedir.
Biz bu örneğimizde administrator haklarına sahip bir windows user kullanacağız. UserDataCollect isimli bir windows user create ederek bir sonraki adıma geçiyoruz.
SQL Agent Service Account ların Değiştirilmesi
Bir önceki adımda dediğim gibi SQL Server Service account ların yeni tanımladığımız windows user olan UserDataCollect ile değiştireceğiz.
Bunun için SQL Server Configuration Manager daki S10Ent ve TS2008_1 instance larında ki SQL Server Agent service lerinde değişiklik yapacağız.
SQL Server Configuration Manager ı açıyoruz ve değiştirmek istediğimiz service ın üzerine sağ tık yapıp properties ekranına geçiyoruz.
Gelen ekranı resimde görüldüğü gibi düzenliyoruz yani service account olarak UserDataCollect windows account unu kullanıyoruz.
Aynı işlemi diğer service ya da servis ler içinde yapıyoruz. Dediğim gibi bütün data toplanacak server ların agent larında ve data warehouse un olduğu server ın agent ında bu service account değişikliğini yapmamız gerekmekte.
Ayrıca bu windows user ı server larda sysAdmin yapmanızda gerekecektir. Bu noktaya da dikkat etmenizi öneririm.
Collection Setlerin Ayarlanması
Artık Data toplanacak server larda tanımlamaları yapma vakti geldi.
Bunun için data toplanacak server da(S10ENT instance ı) Management >> Data Collection a sağ tıklayıp Configure Management Data Warehouse yazısını tıklayalım.
Gelen ekrana next diyelim ve bir sonraki ekrana geçelim. Bu ekranda bu sefer Set up Data Collection yazısını seçeceğiz. Çünkü artık data toplama ayarlarını yapmaya başlıyoruz.
Next e basarak bir sonraki ekrana geçelim. Bu ekranda Data Warehouse için ayarladığımız server için bilgiler gireceğiz.ServerName ve Database name seçimini yapalım. Bu bilgiler Data Warehouse un bulunduğu server ve DB adı. Yani bizim örneğimiz için TS2008_1 instance ında DataCollectionDW database i.
Cache Directory kısmında da toplanan verilen yazılması için bir folder seçeceğiz. Bu folder data toplanan server da yani S10ENT instance ının çalıştığı serverda olacak.
C:\ de yeni bir klasör açalım. DataCollectTemp adını verelim ve Cache Directory kısmına C:\DataCollectTemp yazıp next e basalım.
Bilgileri doldurduktan sonra ekran aşağıdaki ekrana benzer olacaktır.
Not: Daha öncede söylediğim gibi; eğer SQL Server Agent Service Account u olarak bir administrator account u kullanmazsanız, bu account u bu folder ı yetkilendirmeniz gerekmektedir.
Finish e basarak işlemi sonlandıralım.
İşlem tamamlandıktan sonra Data Collection altında aşağıda ki resimde görüldüğü gibi Data Collection Set ler oluşacaktır.
Aynı zamanda Data Collection setler için oluşan jobları SQL Server Agent >> Jobs un altında görebilirsiniz.
Raporların İzlenmesi
Dediğimiz gibi Data Collector default olarak 15 dakikada bir server dan bilgileri toplayacak ve data warehouse a yazacaktır. Peki biz bu bilgileri nasıl raporlayacağız.
Bunun için Data toplanan server da (S10ENT) Management >> Data Collection >> Sağ Tık >> Reports >> Management Data Warehouse kısmından istediğimiz report u seçebiliriz.
Disk Usage Report
Örneğin Disk Usage Report a bakalım. Management >> Data Collection >> Sağ Tık >> Reports >> Management Data Warehouse >> Disk Usage Report u tıklayalım.
Gelen rapor da server da bulunan DB lerin disk tekapladıkları alanların detayı görülmekte.
Database bazında, data file için başlangıç boyutu, büyüme trend i, şu anki boyutu ve günlük büyüme değerlerini görebiliriz. Aynı değerleri log file ların içinde alabiliriz.
Bu raporda AdventureWorks DB sine tıklayalım. Gelen raporda AdventureWorks DB sinin data ve log file larının hangi bileşenlerden oluştuğu görülmekte.
Aynı raporda Data/Log Files Autogrow/Autoshrink Events kısmına dikkatinizi çekmek istiyorum. Bu kısım data ve log file larının auto growth olduğu zamanları ve ne kadar sürdüğünü göstermekte. Eğer çok sık auto growth oluyorsa auto growth değerini performans amaçlı büyütmekte fayda var. bu işlemin nasıl yapıldığı Database ve Database File lar makalemizde inceleyeceğiz.
Server Activity Report
Bu raporda ise Server ın aktivitelerini görüyoruz. CPU, Memory, Disk ve Network kullanım grafikleri ile beraber beklemelerin nereden kaynaklandığını tarih aralığı vererek raporlayabiliriz.
Query Statistics History
Son olarak Query İstatistik Tarihçesi raporuna bakalım. Bu rapor vasıtasıyla da CPU, Duration, Total I/O, Physical Reads, Logical Writes bazından bize en pahalı 10 query i görebiliriz.
Özetle ; Data Collection SQL Server 2008 ile gelen güzel özelliklerden biri. Server lardaki aktiviteleri raporlayabilir ve performans sıkıntıları çözümünde kullanabiliriz.