Two database servers side by side with a stopwatch and a before-and-after bar chart, representing SQL Server load testing with SQLsimTools

SQLsimTools ile SQL Server Yük Testi: Değişiklikleri Canlıya Almadan Ölçün

SQLsimTools’u SQL Server 2025’te test ettik: eşzamanlı yük, JSON iş yükü, Extended Events replay ve ölçülmüş önce/sonra sonuçları; DiskSpd, HammerDB ve ostress’in yanındaki yeri.

Ekim 28, 2026

SQL Server’da yapılan değişikliklerin çoğu canlıya çok az kanıtla çıkar. Yeni indeks execution plan’de doğru görünür, compatibility level değişikliği birkaç kısa testten geçer, yeni sunucunun çekirdek sayısı eskisinden fazladır. Ardından ilk yoğun pazartesi gelir, eşzamanlı kullanıcı sayısı artar ve değişiklik, sakin bir test sisteminde kimsenin görmediği şekilde davranır.

Bunun çözümü daha fazla temkin değil, ölçümdür: Aynı iş yükünü değişiklikten önce ve sonra, gerçekçi bir eşzamanlılıkla çalıştırmak ve sonuçları karşılaştırmak. SQLsimTools tam olarak bu iş için geliştirilmiş, ücretsiz ve yeni bir araç seti. Bu yazıyı hazırlamadan önce aracı kendi SQL Server 2025 test ortamımızda denedik. Aşağıda aracın ne yaptığını, çalıştırdığımız komutları, ölçtüğümüz sonuçları ve bir replay sonucuna güvenmeden önce bilmeniz gereken sınırları bulacaksınız.

SQL Server Performans

Bir değişikliği canlıya almadan önce etkisini ölçmek mi istiyorsunuz?

Aryasoft, upgrade, taşıma ve performans projelerinde iş yükünü test ortamında ölçer, önce/sonra karşılaştırmasıyla karar verir.

Ücretsiz Ön Değerlendirme

SQLsimTools Nedir?

SQLsimTools; tekrarlanabilir bir SQL iş yükü oluşturmak, bu iş yükünü kontrollü bir eşzamanlılıkla çalıştırmak, ölçmek ve çalıştırmaları birbiriyle karşılaştırmak için geliştirilmiş açık kaynak bir araç setidir. 1.0.0 sürümü 14 Ekim 2026’da MIT lisansıyla yayınlandı. SQL Server 2019, 2022 ve 2025’i, Azure SQL Database’i, Azure SQL Managed Instance’ı ve Microsoft Fabric’teki SQL database’i destekler. Projenin resmî sayfası microsoft.github.io/sqlsimtools adresinde; kaynak kod, dokümantasyon ve sürümler ise GitHub üzerinde yayınlanıyor.

Not

SQLsimTools, Microsoft’un GitHub organizasyonunda yayınlanıyor; ancak proje kendisini resmî bir Microsoft ürünü olarak tanımlamıyor ve Microsoft’un ticari desteği kapsamında değil. Destek, dokümantasyon ile GitHub Issues ve Discussions üzerinden veriliyor. Araç henüz Public Preview aşamasında olduğu için onu canlı ortam araçlarınızın bir parçası olarak değil, bir test aracı olarak konumlandırmanızı öneririz.

Araç seti dört farklı çalışma şekli sunuyor:

Bileşen Nedir? Ne zaman kullanılır?
sqlsim ODBC Driver 18 üzerine kurulu, C++ ile yazılmış komut satırı aracı Betikler, otomasyon, CI hatları, en düşük istemci yükü, Extended Events replay
sqlpysim mssql-python sürücüsünü kullanan Python komut satırı aracı Python tabanlı otomasyon; sqlsim ile arasında dokümante edilmiş uyumluluk farkları var
sqlsim Studio Yerel olarak çalışan tarayıcı uygulaması (Windows x64) Görsel yapılandırma, canlı izleme ve çalıştırmaların yan yana karşılaştırılması
Workload Builder GitHub Copilot ve diğer yapay zekâ kodlama ajanları için hazır beceriler Düz bir cümleyle tarif edilen test senaryosunun tasarlanması

sqlsim ve sqlpysim, Windows x64/ARM64 ile Ubuntu 24.04/26.04 x64 üzerinde çalışıyor. Studio şu an yalnızca Windows x64 için Public Preview aşamasında. Araçlar hiçbir telemetri göndermiyor; kurulan tek ağ bağlantısı, sizin belirttiğiniz SQL hedefine yapılıyor.

Hangi Soruya Hangi Araç?

SQLsimTools, DBA’lerin zaten kullandığı araçların yerini almıyor. Her araç farklı bir soruya cevap veriyor; bunları birbirine karıştırmak yanlış sonuçlara götürür:

Soru Araç Neyi ölçer?
Bu depolama SQL Server iş yükünü taşıyabilir mi? DiskSpd SQL Server’dan bağımsız olarak depolama katmanında IOPS, throughput ve gecikme
SQL Server’a benzer I/O desenlerinde disk yolu güvenilir mi? SQLIOSim Disk alt sistemindeki bütünlük ve kararlılık sorunlarını ortaya çıkarmak için SQL Server I/O’sunun simülasyonu
Platform, standart bir benchmark’ta nasıl bir sonuç veriyor? HammerDB TPC’den türetilmiş OLTP (TPROC-C) ve analitik (TPROC-H) iş yükleri
Tek bir sorgu çok sayıda thread altında nasıl davranıyor? SqlQueryStress Tek bir sorgu ya da prosedürün çok sayıda thread, tekrar ve parametre değeriyle çalıştırılması
Kendi sorgu karışımımız bir değişiklikten önce ve sonra nasıl davranıyor? SQLsimTools Kendi betiklerinizden ya da yakalanmış bir izden üretilen eşzamanlı karma iş yükü; sorgu bazında CPU, okuma ve süre

Sahadaki çalışmalarımızda ilk iki araç, beklenenden çok daha fazla işe yarıyor. Bugün canlı SQL Server’ların büyük bölümü paylaşımlı sanallaştırma ve depolama altyapıları üzerinde çalışıyor. DMV’ler ve wait istatistikleri bir performans sorununu I/O’ya kadar daralttığında, bir sonraki adım sorunun gerçekten diskten kaynaklandığını kanıtlamaktır. Üreticiye çağrı açarken ya da sanallaştırma ekibine giderken DiskSpd’den alınmış IOPS, gecikme ve kuyruk derinliği değerleriyle gitmek, çözüm sürecini belirgin şekilde hızlandırıyor. Aynı testleri, yeni bir ortamı canlıya almadan önce de çalıştırıyoruz; böylece depolamanın canlı ortam olmaya uygun olup olmadığını en baştan teyit ediyoruz.

SQLsimTools ise bir üst katmanda çalışıyor. Platformun sağlıklı olduğu bilindikten sonra, bir değişiklik için asıl önemli olan soruyu cevaplıyor: Bu iş yükü hızlanıyor mu, yavaşlıyor mu?

İlk Çalıştırma: Bağlantı Testi ve Eşzamanlı Yük

Paketi projenin GitHub sürüm sayfasından indirin ve ZIP dosyasının engelini kaldırın. Dosyalar kod imzası taşımadığı için Windows bir SmartScreen uyarısı gösterebilir. sqlsim, Microsoft ODBC Driver 18 for SQL Server’a ihtiyaç duyar. İşe bir bağlantı testiyle başlayın:

.\x64\sqlsim.exe -S localhost -d master -E -Q "SELECT @@VERSION"

Ardından bir betiği eşzamanlı olarak çalıştırın. -n thread sayısını, -r her thread’in tekrar sayısını belirler. -q sonuç kümelerini ekrana basmaz, -querystats ise sorgu bazında sunucu istatistiklerini toplar:

.\x64\sqlsim.exe -S sql01 -d SalesDB -E -i customer-orders.sql -n 8 -r 50 -q -querystats -json -o before.json

SQL login kullanıyorsanız şifreyi -P - ile standart girişten verin; böylece şifre işlem listesinde görünmez. Bunun yerine -c ile tam bir ODBC bağlantı dizesi verirseniz, sqlsim bu dizeyi olduğu gibi kullanır. Bizim testimizde bu durumda uygulama adı sqlsim yerine SQL Workload Simulator oldu. Bu ayrıntı, yazının ilerleyen bölümündeki replay filtresi için önemli; bu yolu seçerseniz bağlantı dizesine APP=sqlsim ekleyin.

Önce ve Sonra: Ölçülmüş Bir Örnek

Çıktının gerçek bir değişiklikte nasıl göründüğünü görmek için SQL Server 2025 test ortamımızda geçici bir veritabanı oluşturduk. İçinde bir milyon satırlık bir dbo.Orders tablosu ve uygulamalarda sık görülen türden bir sorgu vardı:

-- customer-orders.sql: uygulamanın en sık çalıştırdığı sorgu
DECLARE @CustomerID int = ABS(CHECKSUM(NEWID())) % 20000 + 1;
SELECT COUNT(*) AS OrderCount, SUM(Amount) AS TotalAmount, MAX(OrderDate) AS LastOrder
FROM dbo.Orders
WHERE CustomerID = @CustomerID;

Sabit bir tekrar sayısı yerine süre tabanlı bir iş yükü dosyası kullandık; böylece iki çalıştırma da birebir aynı süreyi aldı: 8 thread, 60 saniye. Testi çalıştırdık, ardından kapsayıcı bir indeks ekleyip aynı dosyayı tekrar çalıştırdık:

{
  "duration_seconds": 60,
  "workloads": [ { "file": "customer-orders.sql", "threads": 8 } ]
}
.\x64\sqlsim.exe -S sql01 -d SalesDB -E -workload dur60.json -q -querystats -json -o before.json -stream-json > before.ndjson
CREATE INDEX IX_Orders_CustomerID
    ON dbo.Orders (CustomerID)
    INCLUDE (Amount, OrderDate);
Metrik İndeks yok Kapsayıcı indeks
60 saniyede tamamlanan sorgu 3.171 7.462
Kararlı durumdaki verim ~53 sorgu/sn ~127 sorgu/sn
İstemcinin ölçtüğü sorgu başına süre 152 ms 64 ms
Sorgu başına sunucu CPU süresi 76,1 ms 0,26 ms
Sorgu başına logical read 4.098 3,2
Çalıştırma boyunca toplam sunucu CPU’su 241,4 sn 1,95 sn
Hata 0 0

-stream-json parametresi her saniye bir ilerleme kaydı yazar. Ardışık kayıtlar arasındaki farkı çizdiğinizde her çalıştırmanın verim eğrisini elde edersiniz:

Saniye başına tamamlanan sorgu, 8 thread, 60 saniye

Saniye başına tamamlanan sorgu, 8 thread, 60 saniyeÇizgi grafik. İndeks yokken iş yükü saniyede 51 ile 56 arasında sorgu tamamlıyor. Kapsayıcı indeksle test boyunca saniyede yaklaşık 125 sorgu tamamlıyor.İndeks yokKapsayıcı indeks0501001500102030405060Testin saniyesiSaniyede sorgu~53 sorgu/sn~127 sorgu/sn2. saniyeKapsayıcı indeks: 120 sorgu/snİndeks yok: 56 sorgu/sn3. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 54 sorgu/sn4. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 52 sorgu/sn5. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 56 sorgu/sn6. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 52 sorgu/sn7. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 53 sorgu/sn8. saniyeKapsayıcı indeks: 120 sorgu/snİndeks yok: 52 sorgu/sn9. saniyeKapsayıcı indeks: 134 sorgu/snİndeks yok: 53 sorgu/sn10. saniyeKapsayıcı indeks: 122 sorgu/snİndeks yok: 53 sorgu/sn11. saniyeKapsayıcı indeks: 134 sorgu/snİndeks yok: 52 sorgu/sn12. saniyeKapsayıcı indeks: 123 sorgu/snİndeks yok: 54 sorgu/sn13. saniyeKapsayıcı indeks: 117 sorgu/snİndeks yok: 52 sorgu/sn14. saniyeKapsayıcı indeks: 115 sorgu/snİndeks yok: 56 sorgu/sn15. saniyeKapsayıcı indeks: 112 sorgu/snİndeks yok: 53 sorgu/sn16. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 53 sorgu/sn17. saniyeKapsayıcı indeks: 115 sorgu/snİndeks yok: 52 sorgu/sn18. saniyeKapsayıcı indeks: 98 sorgu/snİndeks yok: 54 sorgu/sn19. saniyeKapsayıcı indeks: 120 sorgu/snİndeks yok: 53 sorgu/sn20. saniyeKapsayıcı indeks: 118 sorgu/snİndeks yok: 53 sorgu/sn21. saniyeKapsayıcı indeks: 124 sorgu/snİndeks yok: 55 sorgu/sn22. saniyeKapsayıcı indeks: 120 sorgu/snİndeks yok: 53 sorgu/sn23. saniyeKapsayıcı indeks: 115 sorgu/snİndeks yok: 52 sorgu/sn24. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 52 sorgu/sn25. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 55 sorgu/sn26. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 53 sorgu/sn27. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 52 sorgu/sn28. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 54 sorgu/sn29. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 55 sorgu/sn30. saniyeKapsayıcı indeks: 129 sorgu/snİndeks yok: 53 sorgu/sn31. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 52 sorgu/sn32. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 53 sorgu/sn33. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 55 sorgu/sn34. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 53 sorgu/sn35. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 53 sorgu/sn36. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 53 sorgu/sn37. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 55 sorgu/sn38. saniyeKapsayıcı indeks: 120 sorgu/snİndeks yok: 53 sorgu/sn39. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 52 sorgu/sn40. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 51 sorgu/sn41. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 54 sorgu/sn42. saniyeKapsayıcı indeks: 125 sorgu/snİndeks yok: 53 sorgu/sn43. saniyeKapsayıcı indeks: 125 sorgu/snİndeks yok: 54 sorgu/sn44. saniyeKapsayıcı indeks: 134 sorgu/snİndeks yok: 53 sorgu/sn45. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 51 sorgu/sn46. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 55 sorgu/sn47. saniyeKapsayıcı indeks: 120 sorgu/snİndeks yok: 54 sorgu/sn48. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 51 sorgu/sn49. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 53 sorgu/sn50. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 54 sorgu/sn51. saniyeKapsayıcı indeks: 125 sorgu/snİndeks yok: 54 sorgu/sn52. saniyeKapsayıcı indeks: 123 sorgu/snİndeks yok: 53 sorgu/sn53. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 55 sorgu/sn54. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 53 sorgu/sn55. saniyeKapsayıcı indeks: 129 sorgu/snİndeks yok: 53 sorgu/sn56. saniyeKapsayıcı indeks: 127 sorgu/snİndeks yok: 53 sorgu/sn57. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 53 sorgu/sn58. saniyeKapsayıcı indeks: 130 sorgu/snİndeks yok: 52 sorgu/sn59. saniyeKapsayıcı indeks: 128 sorgu/snİndeks yok: 54 sorgu/sn60. saniyeKapsayıcı indeks: 129 sorgu/snİndeks yok: 52 sorgu/sn

Aynı sorgu, aynı 8 thread, her biri 60 saniye. SQL Server 2025 test ortamımızda sqlsim ile ölçüldü. Her saniyenin değerlerini görmek için grafiğin üzerine gelin ya da dokunun.

Bu rakamlardan üç ders çıkıyor. Birincisi, logical read ve CPU sütunları değişikliğin SQL Server’ın içinde ne yaptığını gösteriyor ve buradaki iyileşme bin kattan fazla. İkincisi, istemcinin ölçtüğü süre yalnızca 152 ms’den 64 ms’ye indi, çünkü bu süre iş istasyonumuzla test sunucusu arasındaki ağ gidiş-dönüşünü de içeriyor. Kullanıcı istemci tarafındaki süreyi hisseder, sunucu ise kendi tarafındaki maliyeti öder; bu yüzden iyi bir karşılaştırma her ikisini de raporlar. Test sırasında wait istatistiklerini okurken de aynı ayrım geçerli: Bir sorgu sunucuda hızlı olup kullanıcı için yine de yavaş olabilir.

Üçüncüsü, turuncu çizginin şekline bakın. Çizgi saniyede yaklaşık 127 sorguda neredeyse düz ilerliyor ve bu tavan SQL Server’a ait değil. 8 thread ve gidiş-dönüş başına yaklaşık 64 ms ile istemci saniyede en fazla 125 civarında sorgu gönderebilir (8 ÷ 0,064 sn). İndeks eklendikten sonra darboğaz sunucudan ağa taşındı. Sunucunun gerçek sınırını görmek için thread sayısını artırmanız ya da yük üreticisini sunucuya daha yakın bir yerde çalıştırmanız gerekir. Tek bir ortalama değer bunu gizlerdi; sabit süreli bir test ve saniyelik bir eğri ise ilk bakışta gösteriyor.

JSON Dosyasıyla Karma İş Yükü

Gerçek sistemler hiçbir zaman tek bir sorgu çalıştırmaz. -workload parametresi, her biri kendi thread, tekrar ya da süre ve bekleme (think time) ayarına sahip birden fazla grubu tanımlayan bir JSON dosyası alır. Aşağıdaki örnek; OLTP sorgularını, daha ağır bir raporlama grubunu ve bir izleme sorgusunu aynı anda çalıştırıyor:

{
  "workloads": [
    { "file": "sql\\oltp-lookups.sql",   "threads": 4, "iterations": 100 },
    { "file": "sql\\monthly-report.sql", "threads": 2, "iterations": 10 },
    { "queries": [ "SELECT COUNT(*) FROM sys.dm_exec_sessions WHERE is_user_process = 1" ],
      "threads": 1, "iterations": 50 }
  ]
}
.\x64\sqlsim.exe -S sql01 -d SalesDB -E -workload mixed.json -q -json -o mixed-before.json

Araçla birlikte gelen örnek iş yükü, test ortamımızda AdventureWorksLT üzerinde 7 thread ile 3.020 batch’i 54 saniyede ve hatasız tamamladı. Grupları bu şekilde bir arada çalıştırmak, tek sorguluk bir testin asla göstermeyeceği blokaj ve kaynak çekişmesini ortaya çıkarır.

Gerçek İş Yükünü Yakalayıp Yeniden Oynatmak

Kendi yazdığınız betikler yalnızca aklınıza gelen sorguları içerir. Replay bu açığı kapatır: Gerçek trafiği Extended Events ile yakalar, dönüştürür ve başka bir sunucuda ya da farklı bir yapılandırmada yeniden çalıştırırsınız. Akış dört adımdan oluşuyor:

  1. Yakalama. sql_batch_completed, rpc_completed, login ve logout event’lerini, session_id ve database_name action’larıyla birlikte bir event dosyasına yazan bir oturum oluşturun. Proje, bunun için hazır başlatma ve durdurma betikleri sunuyor.
  2. Dönüştürme. replay\convert-xel.ps1, .xel dosyasını sys.fn_xe_file_target_read_file() ile okur ve bir replay XML dosyası üretir.
  3. Yeniden oynatma. -replay fast, yakalanan her oturum için ayrı bir bağlantı açar ve o oturumun event’lerini yakalandıkları sırayla, mümkün olan en yüksek hızda çalıştırır. -replay stress ise tüm event’leri tek bir sıraya dizer ve -n thread üzerinde -r kez çalıştırır.
  4. Karşılaştırma. -querystats -json ile alınan çıktı, her sorgu için hem yakalanan orijinal metrikleri hem de replay ölçümlerini içerir.
.\replay\convert-xel.ps1 -XelFile "D:\xe\capture*.xel" -OutputFile trace.xml -ServerName sql01
.\x64\sqlsim.exe -S sql02 -d SalesDB -E -replay fast -replayfile trace.xml -querystats -json -o replay-sql02.json -q

Test ortamında 6 oturumdan 50 batch yakaladık. İzi bir kez indeks yerindeyken, bir kez de indeksi kaldırdıktan sonra yeniden oynattık. İzdeki ikinci sorgu indeksi kullanmayan bir rapor olduğu için kontrol görevi görüyor:

İzdeki sorgu İndeksli replay İndekssiz replay
Müşteri sipariş özeti (40 çalıştırma) 3,1 read, 2 ms CPU, 82 ms 4.098 read, 72 ms CPU, 186 ms
Kapalı sipariş raporu (10 çalıştırma) 4.152 read, 120 ms CPU 4.152 read, 126 ms CPU

50 event’in tamamı iki çalıştırmada da hatasız tamamlandı. Kontrol sorgusu yerinde sayarken müşteri sorgusu belirgin şekilde geriledi. Bir geçiş öncesinde görmek istediğiniz sinyal tam olarak budur: Yeni sunucuda unutulmuş bir indeks, compatibility level değişikliğinden sonra değişen bir plan ya da bir parameter sniffing sorunu, “yeni sunucu daha yavaş gibi” belirsizliği yerine sorgu bazında ölçülmüş bir fark olarak karşınıza çıkar.

Uyarı

Replay, uygulamayı değil ifadeleri yeniden üretir. Projenin kendi dokümantasyonuna göre replay; transaction sınırlarını, bekleme sürelerini, bağlantı durumunu ve oturum düzeyindeki SET seçeneklerini geri getirmiyor. INSERT BULK event’leri, veri izde bulunmadığı için hata veriyor. Bir replay dosyası da en fazla 100 MiB ve 100.000 event içerebiliyor. Yazma işlemi içeren bir iz yeniden oynatıldığında veriyi değiştirir; bu yüzden replay’i yalnızca restore edilmiş bir kopyaya karşı çalıştırın ve stress modunun sonuçlarını birebir bir tekrar olarak değil, dönüştürülmüş bir yük olarak değerlendirin.

Yeni bir sunucuya taşıma yaparken ya da upgrade rehberimizi izleyerek SQL Server 2025’e geçerken, mesai saatlerinden yakalanmış bir örneği eski ve yeni ortamda yeniden oynatmak, gerilemeleri kullanıcılardan önce bulmanın en ucuz yollarından biridir.

ostress’ten Geçiş

SQLsimTools, RML Utilities’in uzun yıllardır kullanılan yük testi aracı ostress’in halefi olarak konumlanıyor. Projenin kendi karşılaştırmasına göre temel farklar şöyle:

Alan sqlsim ostress
Sürücü ODBC Driver 18 SQL Server Native Client (desteği sonlandırıldı)
Kimlik doğrulama Windows, SQL, Microsoft Entra (etkileşimli, MSI, token) Windows ve SQL
Şifreleme TDS 8.0 strict, mandatory ya da optional TDS 7.x
Availability group Read-only intent (-R), multi-subnet failover (-M) Desteklenmiyor
Çıktı Zaman damgalı metin ve JSON Metin, isteğe bağlı XML
Replay Extended Events izi RML replay dosyaları

Parametrelerin çoğu aynı kalıyor (-S -d -E -U -P -i -n -r -q -v -l -t), ancak bazılarının anlamı değişti. -p, sqlsim’de prepared statement’ları açarken ostress’te paket boyutunu belirliyor. -M, sqlsim’de multi-subnet failover, ostress’te ise en yüksek thread sayısı anlamına geliyor. İlk hatada durma seçeneği de -b yerine -stoponerror oldu. Bu nedenle mevcut ostress betiklerinizi yalnızca çalıştırılabilir dosyanın adını değiştirerek taşımak yerine satır satır gözden geçirmenizi öneririz.

Çalıştırmadan Önce Dikkat Edilmesi Gerekenler

  • Sahibinin onayı olmadan asla canlı ortama yöneltmeyin. Araç, verdiğiniz SQL’i istediğiniz eşzamanlılıkla çalıştırır. Küçük başlayın; thread ve tekrar sayısını kademeli olarak artırın.
  • Sertifika doğrulamasını açın. sqlsim, sqlcmd (Go) gibi, siz istemedikçe sunucu sertifikasını doğrulamaz. Azure SQL’e ve makinenizin dışına çıkan her bağlantıya -N m ya da -N s ekleyin.
  • Gizli bilgileri komut satırında bırakmayın. Şifre ve token’ları -P - ya da -T - ile standart girişten verin.
  • Kaydedilen yapılandırmaları koruyun. Studio gizli bilgileri saklamaz, ancak kaydedilen dosyalarda sorgu metinleri ve sunucu adları düz metin olarak yer alır.
  • Önce platformu düzeltin. DiskSpd testinden zaten geçemeyen bir depolama üzerinde yapılan yük testi, yalnızca depolamayı ölçer. Disk katmanını önce disk depolama best practice’leri yazımızdaki önerilerle kontrol edin.

Aryasoft Yük Testini Nasıl Kullanıyor?

Yük testi, upgrade, taşıma ve performans çalışmalarındaki riski azaltma yöntemimizin bir parçası. Depolama katmanında DiskSpd ve SQLIOSim ile yeni bir ortamın canlı yükü taşıyıp taşıyamayacağını doğruluyoruz. Bir sorun I/O’ya kadar indirildiğinde de sanallaştırma ve depolama ekiplerine somut IOPS, gecikme ve kuyruk değerleriyle gidiyoruz. Platform karşılaştırmalarında HammerDB’yi, tek bir sorunlu sorgu için SqlQueryStress’i kullanıyoruz. SQLsimTools ise bu araçların arasındaki eksik parçayı tamamlıyor: Müşterinin kendi iş yükünün, betiklerden ya da yakalanmış bir izden, tekrarlanabilir ve ölçülebilir bir önce/sonra karşılaştırması.

Amacımız her zaman aynı: Bir değişiklik, sakin bir test sisteminde sorunsuz göründüğü için değil, rakamlar daha iyi olduğunu gösterdiği için canlıya çıkmalı.

Evet. Tüm bileşenler MIT lisansıyla ücretsiz ve açık kaynak olarak sunuluyor.
Hayır. Araç Microsoft’un GitHub organizasyonunda yayınlanıyor, ancak proje resmî bir Microsoft ürünü olmadığını ve Microsoft’un ticari desteği kapsamında bulunmadığını belirtiyor. Destek GitHub Issues ve Discussions üzerinden veriliyor.
SQL Server 2019, 2022 ve 2025’i; ayrıca Azure SQL Database’i, Azure SQL Managed Instance’ı ve Microsoft Fabric’teki SQL database’i destekliyor.
Evet. İş yükünü Extended Events ile yakalayın, .xel dosyasını convert-xel.ps1 ile dönüştürün ve -replay fast ya da -replay stress ile yeniden oynatın. Replay transaction sınırlarını, bekleme sürelerini ve oturum SET seçeneklerini yeniden üretmediği için restore edilmiş bir kopyaya karşı çalıştırın ve sonuçları sorgu bazında karşılaştırın.
Hayır. DiskSpd depolama katmanını ölçer, HammerDB standart benchmark’lar çalıştırır. SQLsimTools ise kendi sorgu karışımınızı bir değişiklikten önce ve sonra ölçer.

SQL Server Performans

Değişikliğin etkisini kullanıcılarınızdan önce ölçün

Aryasoft; upgrade, taşıma ve performans projelerinde depolama katmanından kendi iş yükünüze kadar yük testlerini planlar, yürütür ve önce/sonra rakamlarıyla raporlar.

4.7/5