Ich führe einen Datenimport durch (mit C # / Linq) und versuche natürlich, meine Abfragen so weit wie möglich zu optimieren. Zu diesem Zweck führe ich mit SQL Server Profiler einen Trace in der Datenbank aus, wobei mein Trace nach meinem SQL-Anmeldenamen gefiltert wird (ein Name, der eindeutig meinem Datenimportprozess zugeordnet werden kann).
Seltsamerweise sind die meisten meiner SQL-Anweisungen sehr schnell :) - nur sehr wenige Abfragen überschreiten sogar die 1-ms-Marke. Zwischen all meinen Abfragen befinden sich jedoch mehrere Zeilen, in denen die EventClass "Audit Login" oder "Audit Logout" lautet - und die Dauer eines "Audit Logout" kann bis zu einer Minute betragen!
Hat dies etwas damit zu tun, dass ich Transaktionen in meinem Import verwende? Wenn ja, gibt es eine Möglichkeit, die wichtigsten Fragen zu finden, damit ich sie bereinigen kann?
quelle
Antworten:
Wenn ich mich richtig erinnere, ist die Dauer einer Überwachungsabmeldung die Zeit, die die Verbindung geöffnet war. ZB nichts mit der Geschwindigkeit des Befehls zu tun - nur mit der Zeit, in der der Login 'angemeldet' war.
quelle
Reads
Antworten auf Zeitmessung?Reads
Spalte keine von Abfragen zurückgegebenen Zeilen darstellt, sondern die Anzahl der Lesevorgänge auf der logischen Festplatte. Eine Abfrage, die nicht einmal etwas zurückgibt, durchsucht möglicherweise eine ganze Tabelle mit 1 Million Datensätzen nach dem Nichts, das zurückgegeben werden soll, was zu einer sehr großen Anzahl von Lesevorgängen führen würde. Die Anzahl der Lesevorgänge hängt also nicht wirklich mit der Anzahl der Abfragen zusammen.Anmelde- / Abmeldeereignisse beziehen sich auf das Einrichten / Herunterfahren. IIRC ist die Zeit, für die "für die Zeit angemeldet" war, im Gegensatz zu einer Verarbeitungsdauer wie bei anderen Protokollereignissen.
Im Allgemeinen werden diese Ereignisse ausgeblendet, es sei denn, Sie vermuten, dass ein Problem mit der Verwaltung des Verbindungspools usw. vorliegt.
Die Rohzeiten für die Chargen sollten ausreichen, um die Zeit zu diagnostizieren, die die tatsächliche Aktivität benötigt, einschließlich der Auswirkungen von Transaktionen usw.
quelle
Die Ereignisklasse "Audit Logout" gibt an, dass sich ein Benutzer von Microsoft SQL Server abgemeldet (abgemeldet) hat. Ereignisse in dieser Klasse werden durch neue Verbindungen oder durch Verbindungen ausgelöst, die aus einem Verbindungspool wiederverwendet werden.
Dies ist die Gesamtzeit, für die die Verbindung angemeldet war, einschließlich der Leerlaufzeit. Dies weist also nicht auf ein Leistungsproblem hin. Es ist sehr unwahrscheinlich, dass das Profilieren von Anmeldungen / Abmeldungen zu Leistungsproblemen führt. Sie sollten besser nach Abfragen mit schlechter Leistung suchen, möglicherweise nach Abfragen mit langer Laufzeit.
Für weitere Informationen schlage ich https://msdn.microsoft.com/en-us/library/ms175827.aspx vor :)
quelle
Erwähnenswert ist auch, dass in dieser Antwort Audit Login / Logout möglicherweise nur bedeutet, dass die Verbindung vom Verbindungspool wiederverwendet / an diesen zurückgegeben wird.
quelle