Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Какво да направите за типа на изчакване на ASYNC NETWORK IO?

Виждали сте този тип изчакване преди, нали? Е, това със сигурност е вид изчакване, което е причинило много объркване. Непосредственият фокус обикновено се отделя на думата „МРЕЖА“, но повече пъти тя няма нищо общо с мрежата!
Типът на изчакване ASYNC_NETWORK_IO обикновено дава два типа симптоми, като първият е, че натоварването на сесията изчаква съответното клиентско приложение да потвърди/обработи даден набор от данни и да уведоми SQL Server, че е готов да обработи/потвърди повече данни. Вторият симптом е, че може да има проблем с производителността в мрежата между приложението и екземпляра на базата данни. Зад кулисите SQL Server съхранява данните, съхранявани в изходен буфер, докато не бъде получено потвърждение от клиента, определящо дали потреблението на данни е завършен. ASYNC_NETWORK_IO е сигнален знак, че на приложението липсва ефективност при четене на данни, които изисква от неговата база данни. Подлежащата мрежа може също да има проблеми, които могат да доведат до по-дълго чакане, докато данните се обработват и сигналите се изпращат обратно от клиента към сървъра.

Възможните причини за това чакане включват:

  • Кодът на приложението не извлича правилно данните
  • Големите набори от данни се изискват от клиента
  • Прекомерно филтриране на данни от страна на клиента или приложението
  • Зле конфигурирани мрежови устройства, като карти, превключватели и др.

На високо ниво DBA може да иска да провери тези неща:

  • Прегледайте кода на приложението и се уверете, че приложението чете данни правилно/ефективно. Например, вашето приложение издърпва ли назад голям брой редове само за да обработва един ред в даден момент?
  • Ненужно филтриране на данни от страна на клиента/приложението? Ограничете редовете.

Ако горните елементи се проверяват, но проблемите с ASYNC_NETWORK_IO остават, това може да се дължи на мрежата. Ето някои неща, които можете да разгледате:

  • Проверете мрежовата комуникационна връзка между приложението и екземпляра на базата данни и проверете честотната лента.
  • Използвайте sys.dm_io_virtual_file_stats, за да тествате мрежата за общо забавяне поради натоварване или разстояние
  • Проверете конфигурацията на NIC на сървъра на базата данни, за да се уверите, че няма грешки и/или настройки.

ТИПът на изчакване ASYNC_NETWORK_IO може наистина да е проблем, свързан с мрежата, но често може да се дължи на клиентско приложение, което не обработва ефективно своите данни. Ако последното наистина е така, тогава това е възможност за DBAS и разработчиците да работят заедно, за да разберат от какво наистина се нуждае приложението в най-добрия интерес на производителността на задната база данни. Гарантирането, че повечето филтриране на данни се извършва в рамките на SQL Server, е най-добрата практика, която може да се постигне чрез изгледи или по-конкретни условия в синтаксиса на транзакцията.

Въпреки че има много начини за наблюдение и измерване на изчакването ASYNC_NETWORK_IO чрез използването на каталогизирани DMV и разширени събития в SQL Server, ние насърчаваме нашата общност от SQL Server DBA да разгледа облака на Spotlight на Quest, който осигурява ефективност при определяне на основната причина за типа на чакане потребление през исторически период от време.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо не мога да изпълня агрегатна функция върху израз, съдържащ агрегат, но мога да го направя, като създам нов оператор за избор около него?

  2. Как да започнете със SQL Server на Azure

  3. Intel Xeon Scalable Processors и SQL Server 2017

  4. Не може да се свърже с локален хост, но може с името на компютъра в SQL Server 2008

  5. Как да генерирате план за изпълнение в SQL Server