Son güncelleme tarihi: 18 Mart 2007
Merhaba arkadaþlar,
Veritabaný yöneticileri olarak bizlerin sýrtýndaki en aðýr yüklerden biri de performansýn
her zaman mümkün olduðunda en iyi þekilde kalmasýný saðlamaktýr. Bu nedenle sürekli
sistemi gözlemlemeli, gerekli analizleri yapmalý ve geleceðe yönelik tespitlerde
bulunmalýyýz. Bu sayede, ileride iþ yükünün artmasýyla birlikte karþýlaþacaðýmýz sorunlarý
önceden görmüþ oluruz ve buna göre tedbirler almýþ oluruz.
Gerçek hayat öyküsü
Büyük bir þirket, SQL Server Failover Cluster ve Active Directory + Exchange Server
sistemlerini kurmamýz için bize baþvurdu. Tahmin edeceðiniz gibi iþin SQL Server
tarafý bana aitti. Projeyi bitirdik, teslim ettik. Bu arada analizler yaptým, þimdiki
ve önlerindeki bir kaç aya dair bir de sonuç raporu çýkartarak kendilerine teslim
ettim. Öngördüðüm tüm sorunlarla da karþýlaþtýlar. Çünkü bu kaçýnýlmazdý. Önceden
kendilerine yaþayacaklarý sorunlarý gösterdiðim halde herhangi bir önlem almadýlar.
Sonucunda da gene yanlýþ kararlar verip, yanlýþ yatýrýmlar yaptýklarýný öðrendim.
Ama maalesef, bazý þirketler hâlâ profesyonelce çalýþmamakta diretiyor ve uðradýklarý
zararlar, alacaklarý önlemler için yapacaklarý yatýrýmdan daha maliyetli oluyor...
Giriþ
Makale baþlýðýnda da belirttiðim gibi, bu makalede size diskinizde geliþen etkinlikleri
nasýl izleyeceðiniz hakkýnda bilgi vereceðim. Ýþlemci ve Hafýza konularýndaki makaleleri
de baþka baþlýklar altýnda bulabileceksiniz.
SQL Server, diskinizdeki okuma ve yazma iþlemleri için Windows iþletim sisteminin
giriþ\çýkýþ çaðrýlarýný uygular. Bu giriþ\çýkýþ iþlemlerinin yönetim tarafýný SQL
Server halleder, fakat iþi Windows yapar. Bir sistemde yaþayacaðýnýz performans
sorunu büyük ihtimalle giriþ\çýkýþ iþlemlerinden kaynaklanýyor olacaktýr. Peki nedir
bu giriþ\çýkýþ iþlemleri? Þunlardýr: Sistem Yolu (System Bus), Disk Kontrol
Kartlarý (Disk Controller Cards), Diskler, Teyp Sürücüleri, CD-ROM sürücüleri ve
diðer giriþ\çýkýþ iþlemi yapan aygýtlar.
Sisteminizde geliþen bu olaylarý ise System Monitor adý verilen ve Windows iþletim
sistemi ile birlikte gelen araç ile izleyebilirsiniz. Bu araç SQL Server ile birlikte
kurulmaz, fakat SQL Server kurulurken System Monitor ile birlikte kullanabileceðimiz
yeni sayaçlar da ekler. Bahsini ettiðim sayaçlar ve konumuzla ilgisi olmayan diðerleri
bu makalede konu dýþý olduðu için onlara deðinmeyeceðim.
Disklerimizde gerçekleþen etkinlikleri iki ana dala ayýrabiliriz:
- Disk
giriþ\çýkýþýný izlemek ve fazla sayfalamayý (paging) algýlamak
- SQL Server' ýn neden olduðu disk etkinliklerini ayýklamak
Disk giriþ\çýkýþýný
izlemek ve fazla sayfalamayý (paging) algýlamak
Disk etkinliðini izlemek için aþaðýdaki iki sayacý kullanabilirsiniz.
- PhysicalDisk: % Disk Time
- PhysicalDisk: Avg. Disk Queue Length
"PhysicalDisk: % Disk Time" sayacý, diskin okuma\yazma ile meþgul olma yüzdesini
verir. Eðer "PhysicalDisk: % Disk Time" sayacý yüksekse (%90' dan fazla), o zaman
kaç tane sistem isteðinin sýrada beklediðini görmek için "PhysicalDisk: Avg. Disk
Queue Length" sayacýný kontrol edin. Girdi\çýktý isteklerinin sayýsý (diskteki mil
sayýsý baþýna) 1.5 - 2' yi geçmemelidir. Çoðu diskin bir mili vardýr, fakat RAID
cihazlarýnýn genellikle birden fazla mili vardýr. bir RAID cihazý System Monitor'
de tek bir fiziksel disk olarak görünür. Yazýlýmla yapýlan RAID cihazlarý System
Monitor' de çoklu olarak görünür.
Sisteminizdeki disk sistemleriyle ilgili performans sorunlarýný belirlemek için
"% Disk Time" ve "Current Disk Queue Length" sayaçlarýnýn verdikleri deðerleri kullanýn.
Eðer bu deðerler sürekli yüksekse o zaman disk sistemiyle ilgili bir performans
sorunu yaþýyorsunuz demektir. Bu durumda ise, aþaðýdaki çözümlerden birini uygulamayý
düþünebilirsiniz:
- Daha hýzlý bir disk sürücü kullanmak
- Bazý dosyalarý baþka fiziksel sürücülere veya sunucuya taþýmak
- Eðer RAID kullanýyorsanýz, RAID dizisine yeni
diskler eklemek
Eðer RAID cihazýný kullanýyorsanýz "% Disk Time" sayacý %100' den fazla bir deðer
gösterebilir. Eðer böyle bir þey olursa o zaman ortalama kaç sistem isteði olduðunu
görmek için "PhysicalDisk: Avg. Disk Queue Length" sayacýný kullanýn.
Giriþ\çýkýþ iþlemleri aðýrlýklý olan uygulamalar ve sistemler disklerinizi sürekli
meþgul edebilirler.
Disk iþlemlerinin sayfalamadan (paging) kaynaklanmadýðýndan emin olmak için de "Memory:
Page Faults/sec" sayacýný kullanabilirsiniz.
Windows' ta, sayfalama aþaðýdaki nedenlerden kaynaklanabilir:
- Çok fazla hafýza kullanmak için yapýlandýrýlan
iþlemler
- Dosya sistemi etkinlikleri
Eðer ayný sabit diskte birden fazla mantýksal bölüm varsa, "Physical Disk" sayaçlarýnýn
yerine "Logical Disk" sayaçlarýný kullanýn. Hangi dosyalarýn daha sýk kullanýldýðýný
belirlemeye yardýmcý olmasý için mantýksal disk sayaçlarýna bakýn. Büyük ölçüde
okuma\yazma iþlemlerinin yapýldýðý diskleri bulduktan sonra, her mantýksal sürücüdeki
yoðun etkinliðin okumadan mý yoksa yazmadan mý kaynaklandýðýný öðrenmek için okumaya
ve yazmaya yönelik sayaçlarý kullanýn. Meselâ "Logical Disk: Disk Write Bytes/sec."
gibi. Bu sayaç ile seçtiðiniz mantýksal sürücüde her saniyede gerçekleþen diske
yazma iþleminin deðerlerini alabilirsiniz.
SQL Server' ýn neden olduðu disk etkinliklerini ayýklamak
SQL Server bileþenlerinin neden olduðu giriþ\çýkýþ iþlemlerinin miktarýný aþaðýdaki
iki sayaç ile izleyebilirsiniz:
- SQL Server: Buffer Manager: Page reads/sec
- SQL Server: Buffer Manager: Page writes/sec
Eðer bu sayaçlarýn verdikleri
deðerler donanýmsal olarak giriþ\çýkýþ iþlemlerinin kapasite sýnýrýna yaklaþýrsa,
giriþ\çýkýþ iþlemlerini azaltmayý denemek için uygulamanýzý ve veritabanýnýzý gözden
geçirin. Meselâ daha iyi Index' ler veya Normalizasyon kullanabilirsiniz, disk donanýmýnýzýn
giriþ\çýkýþ kapasitesini arttýrabilir veya da daha fazla hafýza ekleyebilirsiniz.
Veritabanýnýz hakkýnda bir analiz yapmak için SQL Server 2005 Standard ve Enterprise
Edition ile birlikte gelen Database Tuning Advisor' ý kullanabilirsiniz.
RAID' ler
RAID sistemlere de çok özetle deðinmeden geçemeyeceðim, çünkü bu konuda habergruplarýndan
çok soru geliyor. RAID' lerin yapýlarýný anlatmayacaðým, ama genel kurallardan bahsedeceðim.
Kullanacaðýnýz RAID sistemi de giriþ\çýkýþ iþlemlerini doðrudan etkiler. Bazý arkadaþlar þuna benzer sorular soruyor: "5 tane diskimiz var, hangi RAID' i kursak daha iyi
olur?".
Maalesef buna cevap vermek çok zor, çünkü
önce RAID kurulmaz.
Önce sistem incelenir, hangi iþlemler daha aðýrlýklý, okuma mý yoksa yazma mý. Yeterli
disk var mý? Eðer varsa ve güçlü bir SQL Server gerekiyorsa, o zaman ideal olaný
veritabanýna ait veri ve kayýt dosyalarýný ayýrmaktýr. Kayýt (Transaction Log) dosyalarýna
daha ziyade yazma iþlemi yapýlýr. Yazma iþlemleri için en uygun RAID ise RAID1'
dir. Böylece hem otomatik yedeklemeniz olur, hem de bir diskinizin bozulmasý sisteminizin
çökmesine neden olmaz.
Veri dosyalarý için ise duruma göre RAID-5 veya RAID-10
önerilir. Neden "duruma göre" dedim? Çünkü bunun duruma göre deðiþtiðini gördüm.
RAID-5 okuma için iyidir, RAID-10 ise yazma\okuma iþlemlerinin karýþýk yapýldýðý
ortamlara en uygun RAID' tir. Ýki RAID' le de sisteminiz yedekli ve güvenilir çalýþýr
(Redundancy).
Bunlar genel kanýdýr, genelde de doðrudur. Fakat doðru
olmadýklarý yerleri de gördüm. Farklý kiþilerin farklý ortamlarda yaptýklarý analiz
raporlarýnda, bazý donanýmlarda RAID-5 ile daha iyi sonuç alýndýðýna þahit oldum.
Bu nedenle düz mantýk kararlar vermeden önce, eðer imkânýnýz varsa donanýmlarýnýzda
RAID testleri yapmanýzý tavsiye ederim.
Özet
System Monitor' de, bu makalede söz ettiðimden çok çok daha fazla sayaç bulunmaktadýr.
Bu sayaçlarý çeþitli amaçlar için kullanabilirsiniz. Sistem Monitor içerisinde her
sayaca ait kýsa bir açýklama da bulunmaktadýr. Sayaçlarý kurcalamanýzý tavsiye ederim.
Çok yararlý bir araç, sisteminizde performans sýkýntýsý yaþadýðýnýzda ilk baþvuracaðýnýz
temel araçlardandýr.
RAID' leri daha iyi anlayabilmek için doðrudan RAID' ler
hakkýnda yazýlan makaleleri okumanýzý öneririm. Böylece, RAID' lerin yapýlarý hakkýnda
daha fazla bilgi edinmiþ olursunuz. Tabi RAID için kullanýlan donanýmlar hakkýnda
da fikirler edinirsiniz.
Ekrem Önsoy
Yardýmcý Kaynak: BOL
|