Entity Framework 18 секунд при первом вызове SaveChanges () - PullRequest
2 голосов
/ 22 сентября 2009

У меня очень большая реализация Entity Framework (более 100 таблиц / сущностей). Первый раз, когда SaveChanges вызывается при выполнении обновления, у меня 18 секундное время ожидания. Является ли это общим для моделей каркаса больших объектов? Я слышал, что разбиение модели EF на более мелкие фрагменты - это способ повысить производительность. Мне интересно, если это единственный путь? Разделение на этом этапе кажется большой работой.

  1. Стоит ли разделять модель EF?
  2. Должен ли я использовать несколько экземпляров контекста данных или просто общий статический?
  3. Каковы показатели производительности, которые вы испытывали с медлительностью на EF и, в частности, SaveChanges ()?

Спасибо!

Ответы [ 3 ]

1 голос
/ 19 ноября 2009

Я вижу ту же проблему в моем проекте. Первый вызов SaveChanges занимает около 12 секунд и полное время процессора, следующие вызовы - нет.

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

[Изменить] Я просто хотел упомянуть, что мне удалось избавиться от задержки при первом сохранении, изменив структуру базы данных. Объект, для которого сохранение заняло так много времени, был большой таблицей с множеством ограничений внешнего ключа для другой таблицы (не спрашивайте). Устранение ограничений внешнего ключа сделало свое дело. [/ Edit]

0 голосов
/ 22 сентября 2009

Место, где мы сохраняем большинство данных в EF за одну операцию, - это несколько сотен строк, распределенных по ок. 80 столов. Время отклика меньше секунды.

Это должно быть связано с чем-то другим, что нужно проверить:

  • Какой процессор используется в эти 18 секунд? По какому процессу?
  • Может ли быть проблема с сетью, ожидание таймаута?
  • Это связано с конструктором или jit-компиляцией?
0 голосов
/ 22 сентября 2009

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

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