Kendi bağımsız önbellekleme veri ASP.NET web sitesi var ve veri aynı sorgu ile ikinci kez sorgu gerekmez, bu nedenle uzun süre değişmez. Bu SQL Server'a gitmek ilk kez (bakire) sorguların performansını artırmak gerekiyor. Bazı sorgular SQL Server'ın kullanılmasına neden olabilecek kadar çok veri işler tempdb
. SQL Server tempdb
gerektiğinde kendi başına kullanmaya karar verir, bu yüzden geçici tablo değişkenleri veya geçici tabloları kullanmıyorum .
Benim db boyutum 16Gb, sunucu makinemde 32Gb fiziksel RAM var.
MS SQL Server önbelleğe alma stratejisinin, aynı verilerin yeniden yüklenmesini gerektiriyorsa benzer sorguların performansını hızlandırmak için verileri RAM'de tutmaya çalıştığını anlıyorum. Buna ek olarak, disk erişimine neden olmadan performansı hızlandırmak için tempdb yerine kullanılabilir RAM kullanmaya çalışacaktır.
Bir şey tempdb SQL Server saklamak için gereken sorgu geldiğinde ve yeterli RAM kullanılabilir olmadığını varsayalım, SQL Server 2 seçenek vardır:
1) önbelleğe alınmış bazı verileri kaldırmak ve disk yazmalarını önlemek için tempdb yerine yedeklenmiş RAM kullanmak
2) gelecekteki sorgular için önbelleğe alınmış verileri tutmak ve yazma yavaş diske neden tempdb kullanmaya başlayın.
Ben SQL Server bu durumda ne seçim yapacağımı bilmiyorum, ama ben sadece ilk kez (bakire) sorguların performansı umurumda çünkü seçim # 1 yapmak istiyorum, çünkü asla aynı sorguyu tekrar SQL Server göndermek için (Ben de benzer bir sorgu gönderebilirsiniz).
Bu senaryo için SQL Server önbellek stratejisi nedir?
Bakir sorgular için tempdb'den kaçınma ile ikinci kez sorguların hızı arasında RAM kullanımını nasıl dengeler?
SQL Server'ı # 1 seçimi yapacak şekilde yapılandırmak mümkün mü? Cevabınız evet ise nasıl?
Başka tüm virgin SQL sorgularının performansını nasıl artırabilirim?
SQL Server önbellekleme stratejisini bilmediğim için veritabanını RAM Disk üzerine yerleştirmek istiyorum. Bu, SQL Server her zaman 1 numaralı seçim yapsa bile, herhangi bir virgin sorgusunun önbelleğe alınmamış verilerin yüklenmesi için yüksek hıza sahip olmasını sağlayacaktır. Bunun riski, SQL Server'ın daha az kullanılabilir RAM ile daha fazla tempdb kullanmaya başlayabilmesidir (RAM Disk için 16Gb kullandıktan sonra sadece 16Gb kaldı), # 2 seçmeye devam ederse, dökülmelere neden olan bakire sorguları yavaşlatacaktır tempdb
.
SQL 2008 R2 için çözümle ilgileniyorum, ancak muhtemelen SQL 2008, SQL 2005 için aynı olduğunu ve SQL 2000 olabileceğini düşünüyorum.
Açıklamalar:
Bu kutuda çalışan başka bir uygulama yok, SQL Server'a adanmış . Web sitesi ayrı bir kutu üzerinde çalışır.
Windows Server 2008 R2 Enterprise 64 bit üzerinde SQL Server 2008 R2 Standard Edition 64 bit.
Ben sadece salt okunur sorgular çalıştırın ve veritabanı salt okunur olarak ayarlanır .
Varsayalım ki zaten iyi endeksler var . Bu soru, SQL Server'ı seçim # 1'e karşı seçim # 2 yapmakla ilgilidir, kontrol etmenin bir yolu varsa ve RAM Disk bakire sorgular için doğru seçimi yapmasına yardımcı oluyorsa nasıl yapar.