Server with a settings panel and a wrench, representing SQL Server configuration best practices

SQL Server Yapılandırma Best Practice’leri: Kontrol Etmeniz Gereken Windows, Instance ve Veritabanı Ayarları

Mevcut bir SQL Server’ı gözden geçirmek için kontrol listesi: güç planı ve gereksiz servisler, önerilen değerleriyle instance ayarları ve AUTO_SHRINK, PAGE_VERIFY gibi riskli veritabanı ayarları.

Nisan 27, 2023

Çalışan bir SQL Server’ın yapılandırması zamanla kayar: biri bir sorunu çözmek için bir ayarı değiştirir ve geri almaz, yeni bir veritabanı varsayılan ayarlarla eklenir, sunucu yenilenirken eski ayarlar taşınmaz. Bu ayarların çoğu tek başına büyük bir kriz yaratmaz; ama birlikte sunucunun her gün olması gerekenden daha yavaş ve daha kırılgan çalışmasına neden olur.

Bu rehber, mevcut bir SQL Server’ın yapılandırmasını gözden geçirmek için bir kontrol listesidir: Windows düzeyi (güç planı ve gereksiz servisler dahil), instance ayarları ve veritabanı ayarları. Yeni bir sunucu kuruyorsanız kurulum kontrol listemizle başlayın.

SQL Server Danışmanlığı

Sunucunuzun ayarları en son ne zaman gözden geçirildi?

Aryasoft, SQL Server yapılandırmanızı Windows'tan veritabanı ayarlarına kadar inceler; riskli ve eksik ayarları önceliklendirerek düzeltir.

Destek Alın

1. Windows Düzeyi

Güç planı

Windows varsayılan olarak Balanced güç planını kullanır. Bu plan enerji tasarrufu için işlemci frekansını düşürür ve yük geldiğinde yükseltir; veritabanı sunucusunda bu, sorgu sürelerinin tutarsız ve gereğinden uzun olması demektir. SQL Server sunucularında High Performance planı kullanın.

Windows Power Options ekranında High performance güç planı

# Etkin güç planını göster
powercfg /getactivescheme

# High Performance planını etkinleştir
powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c

İpucu

Windows’ta High Performance seçili olsa bile, BIOS’taki güç yönetimi işlemciyi kısıtlayabilir. BIOS güç ayarını “OS Control” ya da “Maximum Performance” olarak ayarlayın. Sanal makinelerde ayrıca hipervizörün güç politikasını da kontrol edin; sanal makinedeki ayar fiziksel host’un davranışını değiştirmez.

Gereksiz instance ve servisler

Kullanılmayan her SQL Server servisi (Reporting Services, Analysis Services, Integration Services, Full-Text, Browser ya da eski bir test instance’ı) bellek ve CPU tüketir, yamalanması gerekir ve saldırı yüzeyini büyütür. Sunucudaki servisleri listeleyin ve kullanılmayanları Disabled yapın:

Get-Service | Where-Object { $_.DisplayName -like 'SQL Server*' } |
    Select-Object DisplayName, Name, Status, StartType

Adlandırılmış instance kullanmıyorsanız ya da tüm instance’lara sabit port atadıysanız SQL Server Browser’a da ihtiyaç yoktur.

Diğer Windows ayarları

  • Page file sistem sürücüsünde ve döküm için yeterli boyutta. Bkz. page file rehberimiz.
  • Antivirüs istisnaları SQL Server dosyaları ve süreçleri için tanımlı.
  • Windows güncellemeleri kontrollü; otomatik yeniden başlatma kapalı.

2. Instance Ayarları

Ayar Varsayılan Önerilen
max server memory (MB) 2.147.483.647 İşletim sistemine pay bırakan sınır
max degree of parallelism 0 NUMA yapısına göre, genellikle 8 veya altı
cost threshold for parallelism 5 30-50 ile başlayıp ölçerek ayarlamak
optimize for ad hoc workloads 0 1
backup compression default 0 1
backup checksum default 0 1
remote admin connections 0 1
priority boost 0 0
lightweight pooling 0 0
xp_cmdshell 0 0

Mevcut değerleri tek sorguyla görün:

SELECT name, value_in_use, is_dynamic
FROM sys.configurations
WHERE name IN (N'max server memory (MB)', N'max degree of parallelism',
               N'cost threshold for parallelism', N'optimize for ad hoc workloads',
               N'backup compression default', N'backup checksum default',
               N'remote admin connections', N'priority boost',
               N'lightweight pooling', N'xp_cmdshell', N'clr enabled')
ORDER BY name;

Her ayarın ayrıntısı için: max server memory, MAXDOP ve cost threshold, optimize for ad hoc workloads, priority boost. Ayrıca Instant File Initialization ve Lock Pages in Memory durumunu da kontrol edin.

3. Veritabanı Ayarları

Instance doğru ayarlı olsa bile tek tek veritabanlarında riskli ayarlar bulunabilir. Aşağıdaki sorgu, en sık karşılaştığımız sorunları listeler:

SELECT name,
       is_auto_close_on,
       is_auto_shrink_on,
       page_verify_option_desc,
       is_auto_create_stats_on,
       is_auto_update_stats_on,
       recovery_model_desc,
       compatibility_level,
       SUSER_SNAME(owner_sid) AS owner_name,
       is_read_committed_snapshot_on
FROM sys.databases
WHERE database_id > 4
  AND (is_auto_close_on = 1
       OR is_auto_shrink_on = 1
       OR page_verify_option_desc <> N'CHECKSUM'
       OR is_auto_create_stats_on = 0
       OR is_auto_update_stats_on = 0
       OR SUSER_SNAME(owner_sid) IS NULL);
  • AUTO_CLOSE: Kapalı olmalı. Açıkken veritabanı son bağlantı kapandığında kapanır, ilk bağlantıda yeniden açılır; bu da gecikme ve cache kaybı demektir.
  • AUTO_SHRINK: Kapalı olmalı (aşağıdaki uyarıya bakın).
  • PAGE_VERIFY: CHECKSUM olmalı. Eski sürümlerden taşınmış veritabanlarında TORN_PAGE_DETECTION ya da NONE kalmış olabilir; bu durumda disk bozulmaları geç fark edilir.
  • İstatistikler: AUTO_CREATE ve AUTO_UPDATE açık olmalı.
  • Recovery model: Yedek planıyla uyumlu olmalı; FULL olup log yedeği alınmayan veritabanları log’un dolmasına yol açar.
  • Sahip: Ayrılmış bir personelin hesabı olmamalı; sahibi olmayan veritabanları bazı işlemlerde hata verir.
  • Compatibility level: Bilinçli seçilmiş olmalı. Bkz. compatibility level rehberimiz.

Uyarı

AUTO_SHRINK açık olan bir veritabanı, boş alan oluştuğunda dosyayı küçültür; ardından veri büyüdükçe dosya yeniden büyür. Bu döngü ciddi index parçalanmasına, gereksiz I/O’ya ve autogrowth beklemelerine yol açar. AUTO_SHRINK’i kapatın ve dosya boyutlarını planlı şekilde yönetin. Bkz. shrink rehberimiz.

-- Düzeltme örnekleri
ALTER DATABASE SatisDB SET AUTO_CLOSE OFF;
ALTER DATABASE SatisDB SET AUTO_SHRINK OFF;
ALTER DATABASE SatisDB SET PAGE_VERIFY CHECKSUM;
ALTER AUTHORIZATION ON DATABASE::SatisDB TO sa;

PAGE_VERIFY CHECKSUM’a geçildiğinde mevcut sayfalar hemen korunmaz; checksum, her sayfa bir sonraki yazılışında eklenir.

4. Dosyalar ve TempDB

  • Veri ve log dosyalarında yüzde ile değil, sabit MB ile büyüme. Bkz. autogrowth rehberimiz.
  • TempDB’de işlemci sayısına göre (8’e kadar) eşit boyutlu veri dosyaları. Bkz. TempDB rehberimiz.
  • Veri, log ve TempDB ayrı volume’larda.

Yapılandırma Kontrol Listesi

  • Windows’ta ve BIOS’ta yüksek performans güç ayarı.
  • Kullanılmayan SQL Server servisleri ve instance’ları kapalı.
  • Instance ayarları tablosundaki değerler bilinçli seçilmiş.
  • Hiçbir veritabanında AUTO_CLOSE ve AUTO_SHRINK açık değil; PAGE_VERIFY CHECKSUM.
  • Recovery model’ler yedek planıyla uyumlu; veritabanı sahipleri doğru.
  • Dosya büyüme ayarları ve TempDB yapılandırması kontrol edildi.
  • Varsayılandan farklı her ayarın nedeni belgelenmiş.
Windows’ta High Performance güç planı; ayrıca BIOS güç yönetimi OS Control ya da Maximum Performance olmalıdır. Balanced plan işlemci frekansını düşürerek sorgu sürelerini tutarsızlaştırır.
Hayır. Sürekli küçülme ve büyüme döngüsü index parçalanmasına ve gereksiz I/O’ya yol açar. Dosya boyutları planlı şekilde yönetilmelidir.
CHECKSUM, disk kaynaklı sayfa bozulmalarını okunduğu anda tespit eder. TORN_PAGE_DETECTION ve NONE çok daha az koruma sağlar.
Evet. Kullanılmayan servisler kaynak tüketir, yamalanması gerekir ve saldırı yüzeyini büyütür. Startup type’ı Disabled yapılmalıdır.

SQL Server Danışmanlığı

Yapılandırmanızı varsayımlarla değil, kontrolle yönetin

Aryasoft’un kıdemli DBA ekibi Windows, instance ve veritabanı ayarlarınızı tek tek inceler; riskli ve eksik ayarları önceliklendirerek kesintisiz şekilde düzeltir ve tüm kararları belgeler.

4.7/5