Как уменьшить количество обращений к базе данных в linq до sql - PullRequest
4 голосов
/ 08 декабря 2011

У меня есть сценарий, и я хочу знать лучшие практики для уменьшения попаданий в базу данных.Сценарий: у меня в приложении есть словарная таблица, куда я помещаю все слова / ключевые слова для целей перевода, потому что моя система многоязычна.Ключевые слова размещаются по всей странице, они могут быть от 10 до 20 на одной странице, и для каждого слова выбирается перевод из базы данных, если пользователь не просматривает английскую версию веб-сайта.

Мое приложение в Asp.Net MVC2 с C # и LINQ2SQL.

Ответы [ 4 ]

9 голосов
/ 08 декабря 2011

Кэширование - это хороший способ уменьшить количество запросов к базе данных.Вы можете использовать 2 уровня кэширования:

  • Кэшировать объекты (например, результаты запросов к базе данных)
  • Кэшировать HTML-вывод всех действий контроллера или частичных операций
8 голосов
/ 08 декабря 2011

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

2 голосов
/ 08 декабря 2011

Прежде чем вы сможете делать такие вещи, как кэширование и отложенная загрузка и т. Д. ... лучше всего выяснить, ЧТО не так.

Введите LinqToSql Profiler . Да, это коммерческий продукт .. но оно того стоит. Кроме того, у него есть ДЕМО-период.

Это может показать вам дерьмо, выполняющее запросы ... и какие запросы делают N + 1 и т. Д ....

enter image description here

2 голосов
/ 08 декабря 2011

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

Вы также можете попытаться объединить запросы linq в один и взглянуть на свои циклы, чтобы убедиться, что нет лучшего способа циклически выполнять запросы.

вы также должны иметь возможность полностью удалить доступ к базе данных и использовать файлы перевода в формате XML, а не в базе данных.

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