Mam stronę logowania, która wykonuje bardzo proste zapytanie EF, aby określić, czy użytkownik jest ważny. Przy pierwszym uruchomieniu wykonanie tej kwerendy trwa około 6 sekund. W kolejnych seriach zajmuje to znacznie mniej niż sekundę.Jak zainicjować zapytania modułu Entity Framework, aby je przyspieszyć?
Zajrzałem do artykułu, który mówił o użyciu Application Auto-Start i moje pytanie brzmi: czy istnieje sposób, aby wywołać to zapytanie, aby spowodować, że cache musi się zdarzyć bez wywoływania zapytania lub czy jest to konieczne dla mnie wystarczy wywołać zapytanie z fałszywym zbiorem argumentów?
EDYCJA: Kiedy mówię sześć sekund, mam na myśli czas potrzebny na uzyskanie zapytania. Kod wygląda mniej więcej tak (Uwaga: w tym przypadku ContactID jest int pustych i ustawione na null):
return from contact in _context.Contacts
where contact.District == Environment.District &&
contact.ContactId == (contactID ?? contact.ContactId)
select contact;
To SqlServer 2008, a ja uruchomić profilera do sprawdzenia SQL i czas zwraca się 41 ms dla zapytania, które ostatecznie zostanie wykonane. 6 lub 7 sekundowe opóźnienie ma miejsce, zanim zapytanie osiągnie nawet wartość SQL. Próbuję teraz rzucić okiem na to, by zobaczyć, czy może podać mi więcej szczegółów na temat innych rzeczy, które mogą się dziać w tym samym czasie.
Myślę, że warto byłoby przeprowadzić profilowanie i spróbować dowiedzieć się, gdzie faktycznie występuje opóźnienie. –
narzut EF jest dość lekki i prawdopodobnie nie jest to problemem. Może zainstaluj coś takiego jak Glimpse (pakiet NuGet) i zobacz, co naprawdę jest winne.Możliwe, że zdarzają się inne zdarzenia, które są naprawdę wadliwe (dodatki bootstrap?). –
@RobertHarvey Czy masz na myśli profilowanie SQL lub profilowanie .NET? – Mykroft