Ich habe eine. NET-Anwendung mit Anwendungspool (IIS) auf einem Computer und SQL Server auf einem anderen Computer. Anwendung verwendet Entitätsframework, um mit DB zu arbeiten. Ich habe zwei Möglichkeiten, um meine Aufgabe zu lösen (Daten von db holen). Bei Beispiel habe ich die Liste der Entity1 in der Anwendung und ich muss die Liste der Entity2 von DB erhalten (Entity2 ist mit Entity1 durch Fremdschlüssel verbunden). Ich habe 2 Möglichkeiten, es zu tun.Entity Framework RPC vs Batch-Leistung
erste ist eine Stapelanfrage an die DB zu machen:
public List<Entity2> GetEntities(List<long> entity1IDs)
{
db.Entity2.Where(e2 => entity1IDs.Contains(e2.Entity1ID)).ToList();
}
...
var entities2 = GetEntities(entities1.Select(e => e.Entity1ID).ToList());
foreach (var entity2 in entities2)
{
...
}
zweite ist auf n-RPC-Anforderungen an die DB zu machen:
foreach (var entity1 in entities1)
{
var entity2 = entity1.entity2;
...
}
Ich bin ziemlich sicher, dass erste Option muss besser haben Leistung, weil es nur eine Anfrage an die DB gibt. Aber wie wirkt sich dies auf den Anwendungspool aus? Ja, es ist nur eine Anfrage, aber es sind viele dynamische Daten im Speicher in einer Zeiteinheit. Und wenn wir Millionen von Datensätzen in DB haben, dann haben wir eine große Anfrage an die DB mit hoher Speicherauslastung im App-Pool und CPU-Nutzung, um mit großer Datenmenge (Option 1) im Vergleich zu Millionen von Anfragen an DB mit geringer Speicherauslastung in der App zu arbeiten Pool- und CPU-Nutzung.
Wie auch immer ich bin geneigt, die erste Option, aber möchte mehr Argumente und vielleicht einige Praxis Ergebnisse und Analyse wissen.
Gibt es auch ein Analysetool, um zu verfolgen, wie viel CPU-Nutzung für den Anwendungspool mit SQL arbeitet und wie viel mit Daten im Anwendungspool arbeiten wird, um einen Vergleich zu erstellen?
Schlüsselwörter "Benchmarking" und "Profiling", die _you_ tun müssen. Es gibt keine Lösung für dieses Problem, es hängt von zu vielen Variablen ab. – CodeCaster
@CodeCaster Ja, darum habe ich nach Analysetools für den Anwendungspool gefragt, um Praxistests zu machen und die beste Lösung für meine Situation zu bekommen. –