Yorumlar zincirinden, ASYNC_NETWORK_IO
sorunun ağ ile ilgili olduğu anlamına gelen beklemeleri yorumladığınız anlaşılıyor. (Tipik olarak) değildir.
@MartinSmith'in (iki kez) ima ettiği gibi, bunun en olası açıklaması SSMS veya kullandığınız uygulama, sonuçları SQL Server'ın sunduğu kadar hızlı tüketmemesidir. Ölçümlerden satırların tüketimini kaldırmak için önerilen yöntemlerden birini izleyin; maksimum G / Ç veriminin gerçek (r) bir resmini elde edersiniz:
Henüz yapmadıysanız, DBCC DROPCLEANBUFFERS
verilerin tampon önbellek yerine diskten okunduğundan emin olmanız gerekir . "Sadece testte, bunu aktif bir canlı ortamda yapmayın" vb.
Diğer yorumlarınızdan birkaçı:
9 milyon satır döndüren bir sorgu yürütülürken CPU kullanımı,% 9 sqlserver'a atfedilebilir% 13 civarında kalacaktır ... tüm veriler RAM'de olsaydı sonuçları 3 dakikadan daha hızlı döndürmez mi?
Burada tam olarak neyi test ediyoruz, nasıl ve neden? 9 milyon satırlık sorgunuz bir şeyden başka SELECT * FROM dbo.SomeTable
bir şeyse, sadece ham G / Ç işleminden başka 1001 faktör vardır.
İşletme Intel I7-3820 4-çekirdekli işlemcisidir. Test sorgunuz paralel bir plan oluşturmazsa, sistemden% 20'den fazla CPU kullanımını düşürürseniz şaşırırdım.
9 milyon satır döndürmek için geçen 3 dakika çok şüpheli ve testinizin tam bir resmini elde edemediğimizi gösteriyor. Benim tahminim bu, SELECT
IO tüketimini doğrulamak için sadece tek bir tablo değil, milyonlarca satır çeken iç içe döngü operatörleriyle dolu bir alt optimal (paralel olmayan) sorgu planı örneğidir .
Öneririm:
SELECT *
SQL Server üzerinden sadece IO test etmek .
- Neden G / Ç'yi doyurmadığını araştırmak istiyorsanız, sorgunuzun yürütme planıyla ilgili yeni bir soru.