Bu rehber neyi çözer?
SQL Server artık yalnız Windows veritabanı değildir. Güncel sürümler desteklenen Linux dağıtımlarında da çalışır; ancak işletim sistemi seçimi mevcut Microsoft entegrasyonları, DBA araçları, HA ve support modeline göre yapılmalıdır.
Windows mu Linux mu?
Windows, Active Directory, SSMS/PowerShell ve mevcut Microsoft operasyon standardı olan kurumlarda doğal seçenektir.
SQL Server 2025 Linux tarafında RHEL ve Ubuntu gibi desteklenen dağıtımlarda çalışır. Microsoft dokümantasyonu Linux için desteklenen filesystem olarak XFS/ext4 belirtir; tam destek matrisi sürüm bazında kontrol edilmelidir.
CPU ve RAM
OLTP sistemlerde clock speed ve NUMA mimarisi; analitik/parallel workload’larda core sayısı ve memory bandwidth önem kazanır.
SQL Server memory limitleri OS’ye yeterli RAM bırakacak şekilde ayarlanmalı; edition lisans/scale sınırları kapasite planına dahil edilmelidir.
Storage
Data, log ve tempdb I/O profilleri farklıdır. Düşük latency NVMe/enterprise SSD, yoğun transaction log ve tempdb workload’larında ciddi avantaj sağlar.
RAID/Storage Spaces/SAN/cloud disk tasarımında latency ve write durability doğrulanmalıdır.
Güvenlik
TDE, Always Encrypted, row-level security, auditing, role-based permissions ve backup encryption sürüm/edition desteğine göre kullanılabilir.
SQL authentication yerine mümkün olan yerlerde kurumsal identity entegrasyonu, least privilege ve network izolasyonu tercih edilmelidir.
HA ve backup
Always On Availability Groups ve Failover Cluster Instance gibi modeller gereksinime göre değerlendirilir.
Full/differential/log backup zinciri, CHECKDB, restore testi ve offsite/immutable kopya DR tasarımının parçasıdır.
Sık Sorulan Sorular
SQL Server Linux’ta üretim için uygun mu?
Evet, desteklenen RHEL/Ubuntu sürümlerinde üretim desteği vardır; feature ve platform matrisi kullanılan SQL Server sürümü için doğrulanmalıdır.
SQL Server için NVMe gerekli mi?
Zorunlu değildir; ancak transaction log, tempdb ve yüksek IOPS workload’larında önemli avantaj sağlayabilir.
TDE her edition’da aynı mı?
Hayır. Güvenlik özelliklerinin edition desteği sürüme göre değişebilir; lisanslama öncesi resmi feature matrix kontrol edilmelidir.
Veritabanı Altyapınızı Birlikte Değerlendirelim
Workload, güvenlik, donanım, HA ve yedekleme gereksinimlerinize göre altyapıyı birlikte planlayabiliriz.
Mimari ve çalışma modeli
SQL Server sizingde buffer pool, plan cache, workerlar, tempdb ve transaction log davranışı birlikte değerlendirilir. Windows ve Linux üzerinde bütün özelliklerin ve entegrasyonların aynı destek kapsamına sahip olduğu varsayılmaz. Max server memory işletim sisteminin ve diğer servislerin payını dikkate almalıdır.
- 1Uygulama/driver
- 2Sorgu ve bellek
- 3Tempdb/log/veri
- 4HA ve restore
Tasarım parametreleri
- Max memory ve tempdb
- OS ve diğer servis payını koruyun; tempdb workloadunu veri/log dosyalarından ayrı izleyin.
- Platform ve feature
- Windows/Linux desteklenen özellik ve entegrasyonlarını sürüme göre doğrulayın.
- İş yükü ve sorgu dağılımı
- Okuma/yazma oranı, bağlantı sayısı, transaction süresi ve yoğun sorguları ölçün. Veritabanı boyutu tek başına donanım gereksinimini açıklamaz.
- Bellek ve depolama
- Çalışma kümesi, günlük yazması, geçici alan ve checkpoint davranışını ayrı inceleyin. Güvenilir yazma garantisi performans kadar önemlidir.
- Kurtarma zinciri
- Başlangıç yedeği, gerekli günlükler, yapılandırma ve anahtarların birlikte geri getirilebildiğini sınayın.
- Erişim ve değişiklik
- Uygulama rolü, yönetici rolü ve schema değişiklik yetkisini ayırın. Üretimde indeks veya parametre değişimini kontrollü yapın.
Hesap ve uygulama örneği
Örnek OLTP pilotunda log yazma gecikmesi ile veri dosyası okumasını ayırın. Raporlama sırasında tempdb büyümesi ve bloklanan transactionları kaydedin. Platform kararı uygulama üreticisi, driver, HA ve backup desteğiyle doğrulanmalı; yalnız SQL bağlantısının çalışması yeterli değildir.
Örnek komutlar: laboratuvar değerlerini değiştirin; kullanmadan önce yetkiyi ve yazılım sürümünü doğrulayın.
SELECT name, recovery_model_desc FROM sys.databases;
Hata teşhisi
| Belirti | Olası neden / ayrım | Doğrulama |
|---|---|---|
| CPU düşük, transaction bekliyor | Log I/O, kilit veya tempdb contention olabilir. | Wait statsı aynı zaman dilimindeki sorgu ve I/O ölçümleriyle karşılaştırın. |
| CPU düşük, sorgu yavaş | Kilit, I/O veya istemci beklemesi baskın olabilir. | Yürütme planını ve bekleme türünü aynı sorgu için inceleyin. |
| Replica bağlı ama verisi eski | Gönderme, uygulama veya transaction beklemesi gerilik yaratabilir. | Son uygulanmış işlem ve kaynağın commit zamanını karşılaştırın. |
| Disk sürekli büyüyor | Günlük tutma, açık transaction, replication slot veya bakım ihtiyacı etkili olabilir. | Ürünün desteklediği istatistikleri inceleyin; günlükleri elle silmeyin. |
Kabul ve doğrulama kontrolleri
- Seçilen OS’de kullanılan bütün özelliklerin destek koşulunu ve restore yolunu test edin.
- Temsilî transactionları ve sorguları gerçek veri dağılımıyla test edin.
- Ayrı hedefe restore yapıp uygulama kayıtlarını doğrulayın.
- Yetkisiz okuma ve schema değişikliği denemelerini test kimliğiyle reddedin.
- Failover sonrasında tek yetkili yazıcı ve doğru bağlantı hedefini doğrulayın.
- Bakım sırasında kilit, günlük hacmi ve gecikme değişimini ölçün.
İlgili kavramlar
Transaction sınırı
Transaction, uygulamanın belirli işlemleri birlikte başarılı veya başarısız kabul ettiği mantıksal birimdir. Veritabanı içindeki atomiklik, e-posta gönderimi veya farklı servislerdeki değişikliklerin otomatik olarak aynı atomik kapsamda olduğu anlamına gelmez. Commit noktası ve hata sonrasında tekrar denemenin davranışı açık olmalıdır. Aynı isteğin iki kez işlenmesini önlemek için idempotency gereksinimini değerlendirin. Testte ağ kesintisi ve bağlantı kopmasını commit öncesi ve sonrasında ayrı uygulayın; istemcinin hata alması işlemin kesinlikle başarısız olduğu anlamına gelmeyebilir.
İşlem günlüğü ve recovery zinciri
WAL, redo veya transaction log gibi mekanizmalar, veri değişikliklerinin kalıcılaştırılması ve kurtarılması için sıralı kayıt tutar; ürünler arasında ayrıntılar farklıdır. Veri dosyası kopyası ile işlem günlüklerinin zamanı ve zinciri uyumlu olmalıdır. Günlüklerin bulunması tek başına belirli bir zamana dönülebileceğini kanıtlamaz: başlangıç yedeği ve kesintisiz gerekli günlük aralığı da gerekir. Arşivleme gecikmesini, günlük hacmini ve geri oynatma süresini ölçün. Günlükleri kapasite kazanmak için rastgele silmeyin; saklama ve temizleme ürünün desteklediği yöntemle yapılmalıdır.
İndeks ve sorgu planı
İndeks, uygun sorgularda taranacak veriyi azaltabilir; her yeni indeks yazma, bakım ve depolama maliyeti getirir. Sütun sırası, seçicilik, filtre ve sıralama gereksinimi birlikte değerlendirilir. Sorgu yavaşlığını yalnız indeks yokluğuna bağlamayın: yanlış tahmin, kilit beklemesi, disk gecikmesi veya gereksiz veri taşıma da neden olabilir. Temsilî sorgunun yürütme planını ve gerçek satır sayılarını inceleyin. Değişikliğin okuma kazancını, yoğun yazma sırasında oluşturduğu maliyetle birlikte ölçün; üretimde kontrolsüz bakım işlemleri başlatmayın.
Kilit, bekleme ve deadlock
Eşzamanlı işlemler veri bütünlüğü için kilit veya sürümleme mekanizmaları kullanır. Uzun açık transaction, diğer işleri bekletebilir; deadlock ise birbirini bekleyen işlemler arasındaki döngüdür. Ürün bazı işlemlerden birini sonlandırabilir ve uygulamanın güvenli tekrar deneme yapması gerekebilir. Bekleyen sorgu ile onu bloke eden sorguyu birlikte inceleyin. İzolasyon seviyesini rastgele düşürmek veri tutarlılığını değiştirebilir. Transaction süresini kısaltma, tutarlı erişim sırası ve uygun indeks gibi seçenekleri aynı iş yükünde doğrulayın.
Kalıcılaştırma ve güç kaybı
Commit edilmiş verinin güç kaybından sonra korunması veritabanı, işletim sistemi, dosya sistemi, kontrolcü ve diskin yazma garantilerinin birleşimine bağlıdır. Yazma önbelleği ve flush davranışını bilmeden performans için güvenlik ayarlarını kapatmayın. Güç kaybı korumalı depolama faydalıdır fakat bütün zincirin doğru yapılandırıldığını tek başına kanıtlamaz. Üretim yerine kontrollü laboratuvarda arıza ve recovery testi yapın. Veri bütünlüğünü örnek dosya açılmasıyla değil, uygulama kayıtları ve desteklenen tutarlılık kontrolleriyle doğrulayın.
Replikasyonun kapsamı
Replikasyon veri veya durum değişikliklerini başka bir kopyaya aktarır. Senkron aktarım gecikme ve bağlantı bağımlılığı yaratabilir; asenkron aktarım ise geride kalabilir. Kopyanın güncel olması, yanlış değişikliklerden korunması anlamına gelmez: silme veya bozulma da taşınabilir. Gecikmeyi yalnız bağlantı durumu üzerinden değil, uygulamanın tamamlanan son işlemiyle karşılaştırın. Kaynak düğüm kaybedildiğinde yazma yetkisinin hangi kopyaya geçeceğini ve eski düğüm geri gelince nasıl uzlaştırılacağını tanımlayın. Replikasyon gecikmesi ile gerçek kurtarma noktasını ayrı raporlayın.