Asp.net Core 2.2 Хранить всю таблицу БД в памяти EF Core - PullRequest
3 голосов
/ 07 мая 2019

У меня есть приложение asp.net core 2.2, размещенное в качестве службы приложений Azure. Это время от времени получает большие объемы трафика. Большая часть ресурсов идет на проверку почтовых индексов. Все запросы к таблице почтовых индексов являются выборочными. Там нет обновлений или вставок. Эти запросы являются узким местом производительности. Сам стол около 700мб. Я искал способ сохранить эту конкретную таблицу в памяти при запуске, возможно, как отдельный контекст БД. Можно ли заполнить этот вторичный контекст БД данными из основного контекста, подключенного к БД SQL, при запуске? Это плохая идея?

1 Ответ

1 голос
/ 07 мая 2019

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

Увеличение

, если вы можете попытаться увеличить экземпляр БД.Это, безусловно, поможет.

Оптимизация запросов

Работайте над оптимизацией запросов, если вы этого еще не сделали.Ищите лучшие практики вокруг.

Реплика чтения

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

Кэш

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

NoSQL / хранилище данных

Производительность СУБД зависит от многих факторов.Доступ к таким большим данным в транснациональной базе данных останется проблемой.Если ваше экономическое обоснование позволяет, вы можете использовать хранилище данных NoSQL или решение для хранилища данных.

...