Обработка результатов C # из SQL Server - PullRequest
1 голос
/ 09 февраля 2010

У меня большое время ожидания в ASYNC_NETWORK_IO на моем SQL Server, и я нашел эту интересную статью

http://blogs.msdn.com/joesack/archive/2009/01/09/troubleshooting-async-network-io-networkio.aspx

часть, которую я нахожу интересной:

  • Определите большие наборы результатов и проверьте с командой приложения (или разработчиками), как это используется. Красные флаги включают приложение, запрашивающее большие наборы результатов, но не обрабатывающие более нескольких строк одновременно

Если вы получаете набор результатов обратно из запроса linq, значит, вы обработали его (?) Как бы вы обрабатывали несколько строк за раз (?) Это означает, что читатель sql?

Как бы вы обнаружили, если приложение вызывает ASYNC_NETWORK_IO проблема?

любопытный

1 Ответ

1 голос
/ 09 февраля 2010

Многие разработчики, как правило, запрашивают большие результаты из LINQ to SQL, а затем обрезают их, вместо того чтобы полагаться на шаблон, использующий IQueryable, что означает, что вы создаете более усовершенствованный запрос вместо уточненного подмножества данных.

Возможно, вы видите, что это происходит: им нужно только подмножество, но они кодируют, чтобы вытащить все, а затем отфильтровывают данные до того, что им действительно нужно.

Шаблон репозитория с IQueryable обеспечит наиболее оптимизированное использование сервера SQL Server, позволяя разработчику запрашивать большой набор результатов и сокращать его на многих уровнях, пока он действительно не понадобится. К этому времени запрос не будет:

  1. Получить все
  2. Получить данные
  3. Подмножество фильтров
  4. Получить данные
  5. Фильтровать другое подмножество
  6. Получить данные
  7. Дисплей

Это:

  1. Из всех применяют фильтр, а затем еще один фильтр
  2. Получить данные
  3. Дисплей

Только мои мысли.

...