Как кэшировать большой объем данных из базы данных для ASP.NET Mvc - PullRequest
4 голосов
/ 07 октября 2010

Мой сайт использует linq-to-sql для загрузки около 50 тыс. Строк данных из базы данных. Эти данные статичны и никогда не меняются. Он работает аналогично спам-фильтру, и необходимо загрузить все 50 тыс. Строк шаблонов.

Какой лучший способ запрограммировать это? для оптимальной производительности?

1 Ответ

4 голосов
/ 07 октября 2010

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

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

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

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

Никто не может быть единственным разумным способом пойти в общем, это будет зависеть от спецификиприложения, данных и моделей использования.

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