Сведения о вопросе

nikolya

16:03, 1st July, 2020

Теги

Сколько накладных расходов на производительность базы данных при использовании LINQ?

Просмотров: 545   Ответов: 2

Сколько накладных расходов на производительность базы данных связано с использованием C# и LINQ по сравнению с пользовательскими оптимизированными запросами, загруженными в основном низкоуровневыми C, как с серверной частью SQL Server 2008?

Я специально думаю здесь о случае, когда у вас есть довольно интенсивная программа для обработки данных, и вы будете делать обновление данных или обновление по крайней мере один раз на экране и будете иметь 50-100 одновременных пользователей.



  Сведения об ответе

nYU

18:03, 1st July, 2020

Спасибо, Стью. В итоге получается, что LINQ-SQL, вероятно, не имеют значительных накладных расходов на производительность базы данных с более новыми версиями, если вы можете использовать скомпилированный select, и более медленные функции обновления, вероятно, будут быстрее, если у вас нет REALLY sharp expert, выполняющего большую часть кодирования.


  Сведения об ответе

padenie

18:03, 1st July, 2020

По моему опыту, накладные расходы минимальны, при условии, что человек, пишущий запросы, знает, что он делает,и принимает обычные меры предосторожности, чтобы гарантировать, что генерируемые запросы являются оптимальными, что необходимые индексы находятся на месте и т. д. Другими словами, влияние базы данных должно быть одинаковым; существует минимальная, но обычно незначительная нагрузка на стороне приложения.

То, что сказал... существует одно исключение из этого правила: если один запрос генерирует несколько агрегатов, поставщик L2S преобразует его в большой запрос с одним подзапросом на агрегат. Для большой таблицы это может иметь значительное влияние на ввод-вывод, поскольку стоимость ввода-вывода БД для запроса растет на величину для каждого нового агрегата в запросе.

Обходной путь для этого, конечно, заключается в перемещении агрегатов в сохраненный proc или представление. У Мэтта Уоррена есть некоторый пример кода для альтернативного поставщика запросов, который переводит такие запросы более эффективным способом.

Ресурсы:

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=334211

http://blogs.msdn.com/mattwar/archive/2008/07/08/linq-building-an-iqueryable-provider-part-x.aspx


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться