Kurumsal uygulamamız veri depolama için SQL Server kullanıyor ve öncelikle bir OLTP sistemidir. Ancak, uygulamamızın önemli bir bileşeni önemli bir OLAP iş yükü oluşturur.
Tempdb'e yazma gecikmemiz yaklaşık 100 ms'dir. Bu eğilim zamanla tutan ve ALLOW_SNAPSHOT_ISOLATION
açık olduğundan kapalı . Sorunla ilgili bu sorunu gideriyoruz ve şimdiye kadar bulduğumuz tek ilginç şey tempdb için önemli sayıda hash ve sort döküntüsü olması. Bunun OLAP iş yükümüzden geldiğini düşünüyoruz.
Soru
Hangi dökülme sıklığı söz konusudur? Hiç? Kaç döküntü / saniye? Ön verilerimiz, saniyede yaklaşık 2 karma dökülme ve dakikada 25 çeşit dökülmeye sahip olduğumuzu göstermektedir.
Bu dökülme sıklığının yüksek tempdb yazma gecikmemizde birincil suçlu olması mümkün müdür?
Diğer bilgiler
Her çekirdek sayısı için önerildiği gibi tempdb için birden fazla dosya kullanıyoruz. Tempdb dosyaları bir RAID 1 + 0 SAN'da (yüksek performanslı SSD'lerle), ancak bu, ana DB verileri ve günlük dosyalarıyla aynı cihazdır. Tempdb dosyaları çok seyrek olarak büyüyecek kadar büyük boyuttadır. 1117 veya 1118 izleme bayraklarını kullanmıyoruz.
100 ms yazma gecikmemiz, MSDN, SQL Becerileri ve diğer sitelerde bulduğumuz tempdb yazma gecikmesi için kabul edilebilir aralıklardan çok daha fazladır. Ancak, diğer veritabanlarımız için yazma gecikmesi iyidir (10 ms'nin altında). Diğer istatistiklere göre, özellikle dahili nesneler için tempdb'yi yoğun bir şekilde kullandığımız anlaşılıyor. Bu yüzden uygulamamızın neden dahili nesneleri bu kadar yoğun kullandığını bulmaya çalışıyoruz.
Platformumuzda çeşitli şekillerde ortaya çıkan gerçek performans sorunlarımız var. Mükemmel sayaçları izliyor, DM görünümlerine bakıyoruz ve sistemimizin kaynak kullanım özelliklerini incelemek için uygulama davranışımızı analiz ediyoruz. Dökülmelere odaklandık çünkü dökülmelerin bellek yerine disk üzerinde gerçekleştirildikleri için ciddi olumsuz etkileri var. Çok fazla dökülme var gibi gözüküyor, ama insanların "yüksek" olarak gördükleri hakkında bir miktar bilgi almak istedim.