c # Enterprise library Производительность кэширования в CacheManager - PullRequest
0 голосов
/ 12 января 2012

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

Допустим, я назвал 3 таблицы.

  1. AssignmentHead
  2. AssignmentRow
  3. Пункты

Сегодня я храню таблицы как пары:

private CacheManager _manager = _manager = CacheFactory.GetCacheManager();

У меня есть один CacheManger, и я храню такие данные.

_manager.add("Heads",ListofAssignmentHeads);
_manager.add("Rows",ListofAssigmmentRows);
_manager.add("Items",ListOfItems);

При получении данных, таких как «Головки», я делаю следующее:

_manager.GetData("Heads");

Затем я получаю список руководителей и использую linq для запроса того, что я хочу. Но это лучший способ сделать это или лучше настроить 3 CacheManager для каждой таблицы и вставить первичный ключ, а затем объект.

_headManager.add("1",HeadObject);

Мне очень нужны ваши советы по этим вопросам. Спасибо за помощь.

1 Ответ

1 голос
/ 13 января 2012

Лично, при прочих равных условиях, я бы кэшировал данные в формате, который мне понадобится во время выполнения.Таким образом, вы можете просто получить нужную информацию прямо в нужном вам представительстве.В вашем примере это будет несколько CacheManager с первичным ключом в качестве ключа кэша.

Похоже, у вас уже есть методы, которые возвращают списки, и вы кэшируете списки.Я предпочел бы перебирать список один раз при загрузке данных, а затем выполнять поиск по ключу, а не перебирать список при каждом вызове.Если ваши списки велики, вы можете увидеть снижение производительности, если вам придется искать списки для каждого запроса, поскольку поиск элемента в списке - это O (N) против O (1) для кэша без коллизий хешей.

Конечно, если вы хотите поддерживать динамические списки, вы можете добавить списки по мере необходимости к одному CacheManager, так как создание динамических CacheManager - это немного работы.

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