Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Co zrobić z typem oczekiwania ASYNC NETWORK IO?

Widziałeś już ten typ oczekiwania, prawda? Cóż, z pewnością jest to typ oczekiwania, który spowodował wiele zamieszania. Bezpośrednio skupia się na słowie „SIEĆ”, ale najczęściej nie ma ono nic wspólnego z siecią!
Typ oczekiwania ASYNC_NETWORK_IO zazwyczaj daje dwa typy symptomów, pierwszy to obciążenie sesji, które czeka na odpowiednią aplikację kliencką, aby potwierdzić/przetworzyć dany zestaw danych i powiadomić SQL Server, że jest gotowy do przetwarzania/potwierdzania większej ilości danych. Drugim objawem może być problem z wydajnością w sieci między aplikacją a instancją bazy danych. Za kulisami SQL Server przechowuje dane w buforze wyjściowym do momentu otrzymania od klienta potwierdzenia, czy zużycie danych jest kompletny. ASYNC_NETWORK_IO jest sygnałem ostrzegawczym, że aplikacja nie jest wydajna w odczytywaniu wymaganych danych z bazy danych zaplecza. Podstawowa sieć może również mieć problemy, które mogą powodować dłuższe oczekiwanie na przetwarzanie danych, a sygnały są wysyłane z powrotem od klienta do serwera.

Możliwe przyczyny tego oczekiwania to:

  • Kod aplikacji nie pobiera danych poprawnie
  • Klient żąda dużych zbiorów danych
  • Nadmierne filtrowanie danych występujących po stronie klienta lub aplikacji
  • Źle skonfigurowane urządzenia sieciowe, takie jak karty, przełączniki itp.

Na wysokim poziomie administrator baz danych może chcieć sprawdzić następujące rzeczy:

  • Sprawdź kod aplikacji i upewnij się, że aplikacja poprawnie/wydajnie odczytuje dane. Na przykład, czy Twoja aplikacja wycofuje dużą liczbę wierszy tylko po to, aby przetwarzać tylko jeden wiersz na raz?
  • Zbędne filtrowanie danych po stronie klienta/aplikacji? Ogranicz rzędy.

Jeśli powyższe elementy zostaną sprawdzone, ale problemy z ASYNC_NETWORK_IO nadal występują, może to być spowodowane siecią. Oto kilka rzeczy, którym możesz się przyjrzeć:

  • Sprawdź połączenie sieciowe między aplikacją a instancją bazy danych zaplecza i zweryfikuj przepustowość.
  • Użyj sys.dm_io_virtual_file_stats, aby przetestować sieć pod kątem ogólnego opóźnienia spowodowanego obciążeniem lub odległością
  • Zbadaj konfigurację karty sieciowej na serwerze bazy danych, aby upewnić się, że nie ma żadnych błędów i/lub ustawień.

ASYNC_NETWORK_IO WAIT TYPE może rzeczywiście być problemem związanym z siecią, ale często może to być spowodowane przez aplikację kliencką, która nie przetwarza wydajnie swoich danych. Jeśli rzeczywiście tak jest, jest to okazja dla DBAS i programistów do współpracy, aby zrozumieć, czego aplikacja naprawdę potrzebuje w najlepszym interesie wydajności bazy danych zaplecza. Zapewnienie, że większość filtrowania danych odbywa się w SQL Server, jest najlepszą praktyką, którą można osiągnąć za pomocą widoków lub bardziej szczegółowych warunków w składni transakcji.

Chociaż istnieje wiele sposobów monitorowania i mierzenia oczekiwania ASYNC_NETWORK_IO przy użyciu skatalogowanych DMV i zdarzeń rozszerzonych w SQL Server, zachęcamy naszą społeczność administratorów baz danych SQL Server do przyjrzenia się chmurze Quest Spotlight, która zapewnia wydajność w określaniu głównej przyczyny typu oczekiwania zużycie w okresie historycznym.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dodaj kolumny do istniejącej tabeli w bazie danych SQL Server

  2. Jak używać instrukcji GO w programie SQL Server do wstawiania rekordów w kolumnie tożsamości — samouczek SQL Server / T-SQL, część 42

  3. Jak korzystać z funkcji Stopwords i Stoplist, aby ulepszyć wyszukiwanie pełnotekstowe w programie SQL Server (FTS)

  4. Nie można utworzyć wystąpienia dostawcy OLE DB Microsoft.Jet.OLEDB.4.0 dla serwera połączonego null

  5. Utwórz kolumnę wyliczaną przy użyciu danych z innej tabeli