Можете ли вы использовать LINQ с объектами памяти вместо запросов SQL Server для повышения производительности? - PullRequest
4 голосов
/ 24 марта 2009

Мы разрабатываем веб-приложение БД, которое постоянно запрашивает хранилище SQL объектов (около 80 000 из них), которые связаны друг с другом в иерархии. (то есть многие объекты имеют парентид, который относится к другому объекту в той же таблице)

Я думал, что загрузка всего дерева объектов в память и запрос объектов с помощью LINQ может быть лучшим подходом. Объекты 1-5К каждый в основном

У кого-нибудь есть мысли?

Ответы [ 2 ]

1 голос
/ 24 марта 2009

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

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

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

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

1 голос
/ 24 марта 2009

«LINQ» включает в себя LINQ to Objects, LINQ to SQL и т. Д. Вы, безусловно, можете выполнять запросы в памяти, но, возможно, вам следует подождать, пока вы не выполните анализ производительности, прежде чем выполнять оптимизацию. Вы можете оптимизировать не ту вещь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...