Entity Framework czyszczenie buforu

0

Witam,

chciałbym przeprowadzić za pomocą frameworku Entity różne badania na dwóch bazach danych PostgreSql oraz Sql Server między innymi interesuje mnie czas wykonania operacji. Żeby takie badanie miało sens musi był kasowany bufor, bo dane będą ładowane masowo. I moje pytanie brzmi, jak można sprawdzić taki bufor? czy można go sprawdzić z poziomu np managment studio? Jak można kasować taki bufor, czy wystarczy gdy będę tworzyć instancję contextu bazy w każdej metodzie operacji CRUD i wtedy będzie pewność że bufor jest czysty?

pozdrawiam

0

A o jakim buforze mówisz?

0

Nie do końca wiem jak działa Entity Framework i czy posiada bufor z planami ostatnich operacji żeby przyspieszyć działanie.

W managemant studio na bazie przy wykonywaniu np. polecenia select i podejrzeniu cache planu można zaobserwować że plan się tworzy i że ponowne uruchomienie tego samego polecenia używa tego planu

SELECT qt.TEXT as SQL_Query, usecounts, size_in_bytes ,
cacheobjtype, objtype
FROM sys.dm_exec_cached_plans p
CROSS APPLY sys.dm_exec_sql_text(p.plan_handle) qt

screenshot-20200513174652.png

Czy Entity Framework z defaultu też ma taki mechanizm zaszyty?

2

Za tworzenie planu wykonywania zapytania jest odpowiedzialny silnik baza danych, bez względu na to jaki sposób się do tej bazy danych łączysz.

W zależności od wersji, EF ma różne bufory:

  • cache pierwszego poziomu, na obiekty już pobrane w obrębie jednego kontekstu
  • cache na przetłumaczone zapytania z LINQ do sql w obrębie AppDomain
  • cache metadanych odnośnie modelu w obrębie AppDomain

Nie wiem co chcesz osiągnąć, ale jak chcesz porównywać wydajność to znacznie ciekawszy i realistyczny jest scenariusz gdy te bufory są już rozgrzane/pełne, a nie zimne/puste.

0

Dzięki za podpowiedź, to ma sens. Jednak chciałbym porównać, gdy bufor jest pusty oraz pełny. Używam LINQ i stosuje polecenia Find, First, Where itd. wiec jak mogę czyścić cache przed lub po każdej pojedynczej operacji?

1 użytkowników online, w tym zalogowanych: 0, gości: 1