Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 ASYNC_NETWORK_IO что это значит  [new]
andrew shalaev
Member

Откуда: Moscow
Сообщений: 610
Добрый день!

СУБД: Microsoft SQL Server 2005 - 9.00.5000.00 (X64) Dec 10 2010 10:38:40 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 2)

выполнил на БД запрос:

SELECT TOP 10
 [Wait type] = wait_type,
 [Wait time (s)] = wait_time_ms / 1000,
 [% waiting] = CONVERT(DECIMAL(12,2), wait_time_ms * 100.0 
               / SUM(wait_time_ms) OVER())
  FROM sys.dm_os_wait_stats
  WHERE wait_type NOT LIKE '%SLEEP%' 
  ORDER BY wait_time_ms DESC;


в ответ получил:

Wait typeWait time (s)% waiting
ASYNC_NETWORK_IO1336946266.34
SQLTRACE_BUFFER_FLUSH232823611.55
PAGEIOLATCH_SH13053686.48
SOS_SCHEDULER_YIELD7409213.68
LCK_M_IX4975872.47
WRITELOG4726612.35
PAGEIOLATCH_EX2145361.06
IO_COMPLETION1818820.90
BACKUPTHREAD1693070.84
OLEDB1619710.80



Самая рапостраненная блокировка - ASYNC_NETWORK_IO

как я почитал тут
ASYNC_NETWORK_IO - Имеет место при операциях сетевой записи, когда задача блокируется из сети. Убедитесь, что клиент обрабатывает данные с сервера.

Еще поискав по форуму нашел определение
ASYNC_NETWORK_IO - это значит, что ваши клиенты запросили данные, а забирать результат не торопяться. Например, запросили 10000 записей, а забрали первые 100 и смотрят на них где-нибудь в своем гриде

Т.е. если я правильно понял смысл второго определения то эта блокировка вылезает из логики запроса, который вытягивает данные и ни как не указывает на нехватку сетевого канала?
28 мар 12, 14:17    [12327239]     Ответить | Цитировать Сообщить модератору
 Re: ASYNC_NETWORK_IO что это значит  [new]
Glory
Member

Откуда:
Сообщений: 104751
andrew shalaev
е. если я правильно понял смысл второго определения то эта блокировка вылезает из логики запроса, который вытягивает данные и ни как не указывает на нехватку сетевого канала


Что такое "нехватка сетевого канала" в вашем понимании? Пропускная способность ?
28 мар 12, 14:20    [12327267]     Ответить | Цитировать Сообщить модератору
 Re: ASYNC_NETWORK_IO что это значит  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
andrew shalaev
Т.е. если я правильно понял смысл второго определения то эта блокировка вылезает из логики запроса, который вытягивает данные и ни как не указывает на нехватку сетевого канала?
Это не блокировка, а ожидание.
28 мар 12, 14:20    [12327278]     Ответить | Цитировать Сообщить модератору
 Re: ASYNC_NETWORK_IO что это значит  [new]
andrew shalaev
Member

Откуда: Moscow
Сообщений: 610
Glory,

Да, пропускная способность. Клиенты(около 1000 пользователей) сидят по филиалам, т.е. по vpn каналу стучаться до нашего сервера СУБД.
28 мар 12, 14:22    [12327291]     Ответить | Цитировать Сообщить модератору
 Re: ASYNC_NETWORK_IO что это значит  [new]
Glory
Member

Откуда:
Сообщений: 104751
andrew shalaev
Да, пропускная способность.

Сервер не знает причину, по которой клиент не забирает результаты запроса.
Причиной может быть как плохой программный код, так и пропускная способность сети. Или все вместе.
28 мар 12, 14:26    [12327334]     Ответить | Цитировать Сообщить модератору
 Re: ASYNC_NETWORK_IO что это значит  [new]
Crimean
Member

Откуда:
Сообщений: 13147
для второго случая пример делается на 1-2-3
открываем коннект
кидаем потенциально многострочный (с точки зрения результата) селект
открываем ридер на результат
фетчим только первую строку после чего "уходим в слип"
в ожидании для своего процесса видим как раз искомое
и пока ридер не выфетчит все - состояние ожидания не поменяется
бороться никак (а ресурсы жрутся прилично), только менять код, что далеко не всегда просто
но в 2012 уже есть нативная страничная подчитка, что упростит адаптацию такого кода, но не сильно снизит нагрузку на сервер
28 мар 12, 15:44    [12328106]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить