следует ли использовать linq to sql для сайтов с высоким трафиком - PullRequest
9 голосов
/ 26 января 2010

Я прочитал много статей о производительности linq to sql. Результат, который я получил, медленнее, чем обычный подход (библиотека DAL или Microsoft Enterprise). Медленнее для операций чтения и записи даже после настройки производительности , таких как отключение ObjectTracking и другие приемы. Я знаю, что есть такие вещи, как быстрая разработка, чистый код и т. Д., Но как насчет производительности.

Что делать, если я использовал только для операций чтения.

Пожалуйста, дайте ваши предложения.

Ответы [ 3 ]

8 голосов
/ 26 января 2010

Кажется, он работает достаточно хорошо для стекового потока ;-p. Особенно, если вы используете скомпилированные запросы , это вряд ли будет вашим узким местом по сравнению (например) с соответствующим дизайном БД и извлечением правильных столбцов / строк и избегая n + 1 загрузки.

4 голосов
/ 26 января 2010

Для операций чтения LINQ To SQL должен быть примерно таким же быстрым, как и прямая запись SQL, потому что это именно то, что он делает. Затраты на создание SQL не должны быть заметны. Может быть несколько запросов, которые не получаются такими оптимальными, как если бы вы написали запрос вручную, но, по моему опыту, в большинстве случаев он работает очень хорошо.

Для массовых обновлений LINQ To SQL обычно медленнее, поскольку обрабатывает строки по одной за раз. Вы не можете сделать что-то вроде UPDATE Foo SET x = 0 WHERE id BETWEEN 100 AND 200 в LINQ to SQL без извлечения всех строк. В настоящее время лучше всего писать SQL вручную для операций такого типа.

3 голосов
/ 26 января 2010

Обновления и удаления - вот где в настоящее время страдает LINQ to SQL, поскольку для каждого затронутого объекта создается отдельный оператор.

Тем не менее, в этом сообщении в блоге подробно описано, как сократить обе операции до 1 оператора, что должно повысить производительность: Пакетное обновление и удаление с LINQ to SQL .

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

...