cpu-time

___ answer24888769 ___

In meinem Fall - SQL Server-Ausführungszeiten: CPU-Zeit = 671 ms, verstrichene Zeit = 255 ms.

Die CPU-Zeit war fast dreimal größer als die verstrichene Zeit für die Abfrage. Weil die Abfrage parallel verarbeitet wurde, war die CPU-Last sehr hoch, und die CPU könnte ein Engpass werden für dieses Szenario.

SQL Server 2012 bringt eine Lösung für das CPU-Belastungsproblem. Es führt Iteratoren ein Dadurch werden Stapel von Zeilen gleichzeitig verarbeitet, nicht nur Zeile für Zeile.

Für die Abfrageoptimierung können Sie columnstore index für Ihre Tabelle erstellen -

COLUMNSTORE INDEX erstellen IDX_cs_Colname ON dbo.Tabelname (feild1, feild2);

    
___ answer6420335 ___

Wenn die CPU größer als abgelaufen ist, haben Sie eine CPU mit mehreren oder mehr Threads

In der CPU-Zeit wird die SQL Server Engine installiert. Es ist nicht für eine lokale Management Studio-Installation.

Wie für logische IO gegenüber CPU würde ich mit niedrigerer CPU gehen. Wenn dies häufig und überlappend ausgeführt wird, ist die CPU-Ressource zuerst erschöpft. Ich würde ein Konstrukt WHERE EXISTS (UNION ALL) versuchen und sicherstellen, dass ich gute Indizes habe.

Bearbeiten, nach Kommentaren

  • Es gibt Parallelitätsoperatoren im Plan = mehr als einen logischen Prozessor, der für das Betriebssystem und SQL Server sichtbar ist. Es ist entweder multiple oder hyper-threaded

Probieren Sie EXEC xp_msver

aus     
___ qstnhdr ___ SQL Server Query Tuning: Warum ist die CPU-Zeit höher als die verstrichene Zeit? Sind sie relevant für den Betrieb? ___ tag123performance ___ Für Fragen zur Messung oder Verbesserung der Code- und Anwendungseffizienz. ___ tag123queryoptimization ___ Das Tag bezieht sich darauf, wie SQL-Abfragen schneller ausgeführt werden. Einige dieser Fragen gehören möglicherweise zu DBA.stackexchange.com, insbesondere wenn es sich um Neuindizierung, Abfragepläne usw. handelt. Es kann lange dauern, bis SQL-Abfragen ausgeführt werden, wenn sie schlecht geschrieben sind oder große Datenmengen enthalten. Die Leistung kann für Abfragen, die häufig ausgeführt werden, entscheidend sein, oder solche, die Tage oder Wochen benötigen, um einmal ausgeführt zu werden. ___ qstntxt ___

Ich habe zwei Abfragen, um einige Benutzer zu filtern, die von der Frage und ihren Antworten abhängen.

Szenario

Abfrage A ist (die ursprüngliche Version):

%Vor%

Ich benutze 'set statistics time on' und 'set statistic on' um die CPU-Zeit und io-Leistung zu überprüfen.

das Ergebnis ist:

%Vor%

Ich habe Abfrage A über Set Operation neu geschrieben, lassen Sie es mich Abfrage B nennen:

%Vor%

Die CPU-Zeit und die verstrichene Zeit ist:

%Vor%

Meine einfache Analyse

Wie Sie aus dem Ergebnis sehen können, hat Abfrage A eine CPU-Zeit, die mehr als zwei Mal verstrichen ist

Ich suche nach diesem Fall, meistens sagen Leute, dass die CPU-Zeit weniger als die verstrichene Zeit sein sollte, weil die CPU-Zeit angibt, wie lange die CPU diese Aufgabe ausführt. Und die verstrichene Zeit umfasst I / O-Zeit und andere Art von Zeitkosten. Ein besonderer Fall ist jedoch, wenn der Server mehrere Core-CPUs hat. Allerdings habe ich nur den Entwicklungs-DB-Server überprüft und es hat eine einzige Kern-CPU.

Frage 1

Wie erklärt man die CPU-Zeit in Abfrage A in einer Single-Core-CPU-Umgebung mehr als die verstrichene Zeit?

Frage 2

Nach, Set-Operation, Ist die Leistung wirklich verbessert?

Ich habe diese Frage, weil das logische Lesen von Abfrage B 280627 ist, was höher ist als Abfrage 241885 von Abfrage

Brad McGehee sagte in seinem Artikel, dass 'Je weniger logische Lesevorgänge von einer Abfrage ausgeführt werden, desto effizienter ist sie und desto schneller wird sie ausgeführt, unter der Annahme, dass alle anderen Dinge gleich gehalten werden .

Than, sagt es richtig, dass sogar Abfrage B höhere logische Lesevorgänge als Abfrage A hat, aber CPU-Zeit ist deutlich geringer als Abfrage A, Abfrage B sollte eine bessere Leistung haben.

    
___ tag123cupime ___ hilf uns dieses Wiki zu bearbeiten ___ tag123sqlserver ___ Microsoft SQL Server ist ein relationales Datenbankverwaltungssystem (RDBMS). Verwenden Sie dieses Tag für alle SQL Server-Editionen, einschließlich Compact, Express, Azure, Fast-Track, APS (früher PDW) und Azure SQL DW. Verwenden Sie dieses Tag nicht für andere Arten von DBMS (MySQL, PostgreSQL, Oracle usw.). Verwenden Sie dieses Tag nicht für Probleme bei der Software- und mobilen Entwicklung, es sei denn, es steht in direktem Zusammenhang mit der Datenbank. ___
2
Antworten

Messung der abgelaufenen CPU-Zeit in Julia

Viele wissenschaftliche Rechensprachen unterscheiden zwischen absoluter Zeit (Wanduhr) und CPU-Zeit (Prozessorzyklen). Zum Beispiel haben wir in Matlab: %Vor% und in Mathematica haben wir: %Vor% Diese Unterscheidung ist nützlich, wenn Be...
26.06.2014, 09:41
2
Antworten

SQL Server Query Tuning: Warum ist die CPU-Zeit höher als die verstrichene Zeit? Sind sie relevant für den Betrieb?

Ich habe zwei Abfragen, um einige Benutzer zu filtern, die von der Frage und ihren Antworten abhängen. Szenario Abfrage A ist (die ursprüngliche Version): %Vor% Ich benutze 'set statistics time on' und 'set statistic on' um die CPU-Zei...
21.06.2011, 01:11