ASYNC_NETWORK_IO bekleme türü endişelenecek bir şey mi?


16

Yürütülmesi uzun süren saklı yordamlar listesine bakıldığında, en fazla beklemeye neden olduğu öne çıkıyor. Ancak, bu bekleme çoğu (% 81) ASYNC_NETWORK_IO ve nedenini biliyorum: saklı yordam kabaca 400 MB bilgi aktarır.

Dokümantasyonda ASYNC_NETWORK_IO'nun nedeninin, müşterinin veri seli ile ayak uyduramayacağı ve muhtemelen doğru olduğu belirtilmektedir. Tüm yaptığı bir ADO.NET üzerinden saklı yordamı çağırmak ve sonra sadece veri kümesini işler istemci tutmak nasıl emin değilim.

Bu nedenle, bu bilgi verildiğinde, bu yordam için ASYNC_NETWORK_IO bekleme türü hakkında endişelenmeli miyim? Aslında sunucu performansı üzerinde bir etkisi var mı?

Ek bilgi:

  • SQL Server 2005'in hizmet paketi 2'deyim.
  • İstemci uygulaması SQL Server ile aynı kutuda (biliyorum, biliyorum ... ama bu konuda hiçbir şey yapamıyorum).

1
Bu tür bir beklemeyi düşünmenin en iyi yolu, sorgunuzda soruna neden olan hiçbir şey olmamasıdır - istemciye veri döndürmektedir. Ayrıca birçoğunuz Access'te bağlantılı tablolarınız olduğunu göreceksiniz. İstemci uygulamanıza bağlı olan bir olasılık, verileri daha küçük parçalara ayırmak veya daha az veri döndürmektir. Bu bir seçenek değilse, muhtemelen azaltmak için yapabileceklerinizle sınırlı olacaksınız.
JNK

İstemci uygulaması Paylaşılan Bellek veya TCP / IP kullanarak bağlanıyor mu? İstemci uygulaması ve SQL Server aynı işlemci çekirdeğini paylaşıyor mu veya bunları ayırmak için bir benzeşim maskeleme tekniği mi kullanıyorsunuz?
Jon Seigel

Varsayılan bağlantı türü - özel bir şey değil - bu nedenle Paylaşılan Bellek kullanıyor. Her iki uygulama aynı çekirdek kümesini kullanıyor - yakınlık yok.
AngryHacker

Depolama alanınız SAN mı yoksa yerel mi?
Eric Higgins

@EricHiggins Sadece yerel bir RAID sabit disk seti.
AngryHacker

Yanıtlar:


14

Söylediğiniz gibi, bu bekleme türü uygulamanın SQL Server ile uyumlu olmadığını gösterir. Şimdi bunun anlamı, SQL Server'ın verileri ağ üzerinden istediği kadar hızlı gönderememesi.

Altta yatan iki neden olabilir:

  1. Uygulama verimsiz yazılmıştır ve satırları yeterince hızlı işlemez.
  2. Ağ maks.

Uygulamanın kendisi çok yavaşsa, diğer sorguların performansı üzerinde önemli bir etkisi olmayacaktır. Öte yandan boru çok küçükse, diğer sorgular da sonuçlarını gönderemez ve beklemek zorunda kalmaz.

Ancak ikinci durumda ASYNC_NETWORK_IO üzerinde bekleyen tüm bağlantılarınız olur. Bu etkiyi net bir şekilde görebilmelisiniz.


Madde işareti 1 için. Veri alma standart kod kullanılarak ADO.NET üzerinden yapılır: var dataSet = new DataSet(); var da = new SqlDataAdapter(command); da.Fill(dataSet); Bu yüzden tam olarak ne yavaş olabilir emin değilim.
AngryHacker

Madde işareti 2 için. Uygulama SQL ile aynı kutudadır ve bağlantı Paylaşılan Bellek yöntemiyle yapılır. Teorik olarak bu çok hızlı olmalı.
AngryHacker
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.