Проблема производительности Entity Framework - PullRequest
3 голосов
/ 02 декабря 2010

У меня проблемы с производительностью, когда выполняется первый запрос для приложения, это занимает около 20 секунд. Я проверил фактическое время выполнения запроса на сервере SQL Server с помощью средства профилирования сервера SQL. Это занимает несколько миллисекунд. После первого запроса другие операции работают.ок.

Запрос - это чрезвычайно простой выбор из таблицы, в которую вставлена ​​только одна строка. В БД содержится около 200 таблиц, но в нем нет ничего необычного, нет индексов, представлений ... Я видел, что у некоторых других людей были похожиепроблемы с первым запросом, но я не смог найти решение. Есть идеи о том, что на самом деле происходит?

Ну, это запрос

        DBEntities en = new DBEntities();

        var person= (from p in en.People
                           select p).First();
        this.txt1.Text = person.name;

Ответы [ 3 ]

1 голос
/ 02 декабря 2010

Хотя запрос SQL занимает миллисекунды, создание SQL в EF может занять некоторое время при первом выполнении. Особенно, если это сложный запрос / модель. Взгляните на эту статью, в которой объясняется, как вы можете выполнить предварительную генерацию для повышения производительности. Предварительная генерация просмотров

0 голосов
/ 02 декабря 2010

Еще два варианта определения того, где код убивает производительность: SQL Profiler и превосходный EFProf .

0 голосов
/ 02 декабря 2010

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

...