/ / Entity Framework Core für die Profilerstellung mit SQL Server Profiler - SQL-Server, Abfrageoptimierung, SQL-Server-Profiler

Profiling Entity Framework Core mit SQL Server Profiler - SQL-Server, Abfrage-Optimierung, SQL-Server-Profiler

Wenn Sie sich den SQL Server Profiler ansehen, wannUm Entity Framework LINQ-Anweisungen zu erstellen, werden viele Ereignisse ausgelöst. Um die LINQ-Abfragen zu optimieren, welche Ereignisse sollte ich im Profiler überwachen?

ich dachte mir SQL:BatchCompleted und und RPC:Completed eigentlich Abfragen, die ausgeführt werden, aber was ist der Unterschied?

Bildbeschreibung hier eingeben

Antworten:

0 für die Antwort № 1

RPC:Completed ist der Abschluss eines Remoteprozeduraufrufs, dh, eine gespeicherte Prozedur wurde von einer externen Anwendung aufgerufen. EF Core ruft in Ihrem Fall die sp_executesql gespeicherte Prozedur zum Ausführen der aus LINQ-Abfragen generierten SQL.

SQL:BatchCompleted bedeutet, dass eine Reihe von SQL-Anweisungen ausgeführt wurde. Dies kann ein Satz von DDL- oder DML-Anweisungen oder Aufrufe von gespeicherten Prozeduren sein.


0 für die Antwort № 2

Ich dachte mir SQL: BatchCompleted und und RPC: Abgeschlossen, um tatsächlich zu sein Abfragen, die ausgeführt werden, aber was ist der Unterschied?

Das SQL:BatchCompleted event gibt an, dass ein Ad-hoc-Batch (nicht parametrisiert) einer oder mehrerer Anweisungen ausgeführt wurde. Das RPC:Completed ein abgeschlossenes Ereignis wird ausgelöst, wenn die Anforderung einer Remoteprozeduraufforderung abgeschlossen ist. Dies kann eine parametrisierte SQL-Anweisung oder ein direkter Aufruf einer gespeicherten Prozedur sein.

EF verwendet die SqlClient-API, um parametrisierte Abfragen auszuführen. SqlClient verwendet das Special sp_executesql gespeicherte Prozedur, um parametrisierte Abfragen auszuführen, so dass dies im Trace angezeigt wird. Der Profiler zeigt die deserialisierte Anforderung als an exec sp_executesql N"..., einschließlich Parameterwerte als Text. Die Aktualparameter werden im nativen (binären) Format an SQL gesendet.

Diese Ereignisse sind im Standard enthaltenProfiler-Ablaufverfolgungsvorlage zusammen mit anderen Ereignissen, die Anmeldungen und Abmeldungen erfassen. Wenn Sie die Abfolge der Ereignisse Audit Logout, "sp_reset_connection" und Audit Login sehen, treten diese auf, wenn die erste Abfrage für eine wiederverwendete gepoolte Verbindung ausgeführt wird und durch den nachfolgenden RPC für dieselbe Sitzung ausgelöst wurde, die Sie im Trace sehen. Dies sind alle auf der Serverseite intern, nicht als Ergebnis separater Anforderungen, die vom Client gesendet werden.

BEARBEITEN:

Ich sehe, Sie haben ein Abfrageoptimierungs-Tag in IhremFrage. Um die Leistung problematischer Abfragen zu behandeln, können Sie eine erfasste Anforderung mit SQL Server Management Studio mit der Option zum Anzeigen des tatsächlichen Ausführungsplans ausführen. Sie können den Plan auch in der Ablaufverfolgung erfassen, indem Sie die Option Showplan XML Ereignis, sollte dies jedoch nur für eine Entwicklungsabteilung mit einer gefilterten Ablaufverfolgung tun, um Overhead und Auswirkungen auf die Produktionsauslastung zu vermeiden. Eine ungefilterte Profilspur in der Produktion ist schlecht.