Blog
3 İpucu ile SQL Server Performans Ayarını (Performance Tuning) İyileştirin
- 24 Eylül 2021
- Yayınlayan: svahabi
- Kategori: Genel
Veritabanlarını yöneten herkesin çok iyi bildiği gibi, SQL Server performans ayarı, optimum performansı sağlamak için kritik bir işlevdir. Performans, bellek, yapılandırma, sorgu tasarımı ve kaynak kullanımı gibi çeşitli faktörlere bağlı olduğundan, performans düşüşünün temel nedenini yalıtmak küçük bir başarı değildir.
Performans sorunlarının oluşmasını beklemek yerine, SQL Server’ı proaktif olarak ayarlamak, SQL’in sorgu sonuçlarınızı teslim etmek için en hızlı giriş ve çıkış yolunu bulmasına yardımcı olarak SQL ifadelerinizin olabildiğince verimli çalışmasını sağlayacaktır.
Yavaş performansla mücadele ediyorsanız veya sorunların ortaya çıkmasını bekleyecek biri değilseniz, optimum performans ve daha sağlıklı sistemler elde etmek için SQL Server performans ayarlarınızı odaklamanız gereken üç temel alan bu makalede inceleniyor.
İpucu #1: TempDB’yi optimize edin
Yanlış yapılandırılmış TempDB, performans düşüşüne bakıldığında yaygın bir suçludur. TempDB’nizi sık sık dolduruyorsanız, neyin değişmesi gerektiğine bakmanın zamanı geldi.
İlk önce TempDB boyutunu kontrol edin. Ne kadar büyük olması gerektiğine dair kesin ve hızlı bir kural yoktur, ancak iyi bir kural, TempDB’yi en büyük veritabanınızın yüzde 25’inde veya en büyük indeksinizle aynı boyutta tutmaktır. Bu, yeniden oluşturmalar sırasında TempDB’yi artırma zorunluluğunu ortadan kaldırır.
TempDB ile sürücü ne kadar hızlı olursa o kadar iyidir. TempDB, yavaş bir sürücüye veya işletim sistemi ile aynı sürücüye yerleştirildiğinde, verita banı performans sorunlarıyla karşılaşacağınızdan emin olabilirsiniz. Mümkünse TempDB’yi özel bir yerel SSD’de tutun. Bu mümkün değilse, bir sonraki en iyi seçeneğiniz, onu önceden ayrılmış yeterli disk alanıyla kendi ayrılmış biriminde tutmaktır.
Verileri ve günlük dosyalarını ayrı tutmak ve TempDB otomatik büyümesi için büyük bir sabit değer ayarlamak da önemlidir. Aksi takdirde, TempDB her dolduğunda gereksiz ek yük ile karşılaşacaksınız.
TempDB veri dosyalarının sayısının kontrol edilmesi TempDB optimizasyonuna katkıda bulunur. Ancak asıl soru şu ki, kaç tane TempDB veri dosyasına ihtiyacınız var? İdeal olarak, her mantıksal CPU için bir TempDB veri dosyanız olacak, ancak toplamda sekizden fazla olmayacak (bazı istisnalar dışında). Örneğin, dört mantıksal CPU’nuz varsa, dört TempDB veri dosyasına ihtiyacınız vardır. 12 mantıksal CPU’nuz varsa, sekiz TempDB veri dosyanız olabilir.
İpucu #2: Performans darboğazlarını önleyin
Düşük performansa katkıda bulunan üç ana SQL Server performans darboğazı türü vardır: CPU, bellek ve I/O. Nedenler, belirtiler ve teşhisler, darboğazın türüne göre farklılık gösterir, bu nedenle nelere dikkat etmeniz gerektiğine dair bir bakışta bir kılavuz:
CPU Darboğazları
Neden: Yetersiz donanım kaynakları
Belirtiler: Sürekli yüksek işlemci kullanımı
İzlenecek metrikler:
- İşlemci Süresi Yüzdesi,
- Toplu İstekler/Sn,
- SQL Derlemeleri/Sn
- SQL Yeniden Derlemeleri/Sn
Bellek Darboğazları
Neden: SQL Server, sistem veya diğer uygulama etkinliklerinin neden olduğu kullanılabilir bellek ve bellek baskısındaki sınırlamalar
Belirtiler: Yavaş uygulama yanıtı, genel sistem yavaşlaması ve uygulama çökmeleri
İzlenecek metrikler:
- Kullanılabilir Bellek (KB),
- Toplam Sunucu Belleği (KB),
- Hedef Sunucu Belleği (KB),
- Sayfa/Sn,
- Kontrol Noktası Sayfa/San,
- Geç Yazma/San
- Buffer Cache Hit Ratio
I/O Darboğazları
Belirtiler: Uzun yanıt süreleri, uygulama yavaşlamaları ve görev zaman aşımları
Neden: Veritabanı sayfalarının diskten ve diske aşırı okunması ve yazılması
İzlenecek metrikler:
- Ortalama Disk Sırası Uzunluğu,
- Ortalama Disk Sn/Okuma,
- Ortalama Disk Sn/Yazma,
- %Disk Süresi,
- Ortalama Disk Okuma/Sn
- Ortalama Disk Yazma/Sn
İpucu #3: Index’lerin uygun şekilde tasarlandığından emin olun
Index’ler, belirli SQL Server işlemlerini hızlandırmanın harika bir yoludur, ancak yalnızca iyi tasarlanmışlarsa. Kötü tasarlanmış index’ler tam tersi etkiye sahiptir ve SQL Server performansınızı öldürmenin kesin bir yoludur.
Aşağıdaki dört alanı doğru şekilde ayarlamak, index’lerin uygun şekilde tasarlanmasını sağlamaya yardımcı olabilir ve SQL Server performansına zarar vermek yerine yardımcı olabilir:
1. Tablo Boyutu
Her tablo indeksleme için iyi bir aday değildir. Aslında, bir tablo çok küçükse, SQL Server’ın dizinler arasında arama yapmak yerine tüm tabloyu araması çok daha verimlidir. Tabii ki, büyük tablolar için bunun tersi geçerlidir, bu nedenle hangi tabloların index’lerden yararlanacağına karar verirken potansiyel ek yükü tartmanız gerekir.
2. Index tipleri
Teknik olarak, her veritabanı tablosunun kümelenmiş bir indeksi ve sonsuz sayıda kümelenmemiş indeksi olabilir, ancak “Sırf bir şeyler yapabileceğiniz için” hakkında ne derler bilirsiniz…
Çok fazla kümelenmemiş (Non-Clustered) dizin, Ekleme ve Güncelleme işlemlerini önemli ölçüde yavaşlatabilir, bu nedenle kümelenmiş (Clustered) bir indekse ve kesinlikle gerekli kümelenmemiş dizinlerin minimum sayısına bağlı kalmak çok daha iyi bir tasarım seçimidir.
3. Index Depolama
Tasarım aşamasında, dizinler için uygun depolama kriterlerinin seçilmesi I/O performansı için çok önemlidir. Bölümlenmiş kümelenmiş indeksler ve kümelenmemiş indeksler, ana tabloyla aynı dosya grubunda veya farklı bir dosya grubunda saklanabilir. Kümelenmemiş bir indeksi farklı bir disk sürücüsünde bulunan bir dosya grubunda depolamak, onu kullanan sorguların performansını artırabilir, çünkü farklı disk sürücülerinde meydana gelen verilerin ve SQL dizin sayfalarının aynı anda okunmasından etkilenmez.
4. FILLFACTOR (Doldurma faktörü)
FILLFACTOR, bir dizin oluştururken her veri sayfasında doldurulacak alan yüzdesini belirtir. FILLFACTOR değerleri yüzde 0 (veri sayfasının hiçbiri doldurulmaz) ile yüzde 100 (veri sayfası tamamen doldurulur) arasında değişebilir. Dizininizi tasarlarken, aşırı dizin parçalanması riskini en aza indirirken sayfa kullanımını optimize edecek bir FILLFACTOR değeri seçin.
SQL Server performans ayarını standart rutininizin bir parçası haline getirmek, veritabanlarınızın en yüksek performansta çalışmasını sağlamanın mükemmel bir yoludur. Bu üç basit adımı normal SQL Server bakım planlarınıza dahil etmek, kullanıcılarınız için hız ve performansı gözle görülür şekilde artıracaktır.
Detaylı bilgi almak ve eğitimimizi incelemek için SQL Veritabanı Geliştirme adlı sayfamızı ziyaret edebilirsiniz.
Güncel eğitimlerimizden haberdar olmak için tıklayınız.