Arka fon
160 gb veritabanını MSSQL 2008'den (standart) bir Win 2008 sunucusunda 48 gb RAM ile Windows 2012'de 64 gb RAM ile MSSQL 2012 (64 bit web sürümü) çalıştıran yeni bir sunucuya geçirme sürecindeyim. Eski sunucu canlı ve yük altında; Yeni sunucu üretimde değil. Yeni sunucunun 8 adet tempdb dosyası vardır (her biri 4 GB).
Sorun
Yeni sunucu üzerinde yapılan testlerde, çok sayıda sorgudaki adımları görüyorum, "operatör çalıştırma sırasında veri dökmek için tempdb kullandı" ifadesini veriyor. Bazı sorguları yeniden yazarak çeşitlerden kaçınabildim, ancak bu sorunu çözmedi. Eski sunucudaki aynı sorgular dökülmelere neden olmaz. MSSQL'in bellekteki bir işlemi tamamlayamadığı ve / sayfasını tempdb içine dökmesi gerektiğinde dökülmelerin gerçekleştiğini okudum. Dökülmeler konusunda endişelenmeli miyim?
Örnekler
Veritabanında sp_updatestats kullandım, bu yüzden istatistikler güncel olmalı, ancak tahmini ve gerçek satır sayısı arasında bazı tutarsızlıklar olduğunu göreceksiniz.
Bellek endişe
64 gb'nin 58'lik MSSQL'i için bir maksimum bellek ayarı belirledim. Şu anda, MSSQL bu belleğin yaklaşık 35 gb'sini tüketmiştir ancak yalnızca 682 MB'lik bir çalışma kümesine sahiptir. Eski sunucu (üretimde olsa da, yük taşımada), 43.5 gb çalışma setinde olan MSSQL'e bağlı 44 gb belleğe sahip.
Dökülmelerin bir bellek ayarına bağlı olup olmadığını bilmiyorum - herhangi birinin fikri olan var mı? MSSQL'in şu an yedek RAM RAM'i vardır, peki neden bazı çeşitler ve karma eşleşmeler için tempdb'ye akıyor?