2017-03-16 1 views
1

Ich habe eine nicht einfache Abfrage. Wenn ich 10 DTUs für meine Datenbank hatte, dauerte es etwa 17 Sekunden, um die Abfrage auszuführen. Ich erhöhte den Level auf 50 DTU - jetzt dauert die Ausführung 3-4 Sekunden. Dieses Verhältnis entspricht der Dokumentation - mehr DTU = schneller arbeiten.Gibt es alle verfügbaren DTUs, die zum Ausführen einer Abfrage verwendet werden?

Aber!

1 Auf meinem PC kann ich die Abfrage in 1 Sek. Ausführen.

2 In Portal-Statistiken sehe ich, dass ich nur 12 DTU (max DTU Prozentsatz = 25%) verwenden. In sys.dm_db_resource_stats sehe ich, dass MAX (avg_cpu_percent) etwa 25% und die anderen Parameter sind weniger.

So ist die Frage - Warum dauert meine Abfrage 3-4 Sek. Exec? Es kann in 1 sek ausgeführt werden. Und Server verwendet nicht alle meine DTU. Wie kann der Server alle verfügbaren Ressourcen nutzen, um Abfragen schneller auszuführen?

+1

Sie sollten PLAN EXPLAIN und sehen, was der Abfrageoptimierer für einen Abfrageplan erstellt. Wenn TABELLE SCAN angezeigt wird, sollten Sie Indizes vor weiteren Threads hinzufügen. Ich würde für einen einzelnen Thread vor der Parallelisierung optimieren. – duffymo

Antwort

1

DTU ist eine kombinierte Messung von CPU, Speicher, Daten-E/A und Transaktionsprotokoll-E/A.

Dies bedeutet, dass das Erreichen eines DTU-Engpasses eines davon bedeuten kann.

kann diese Frage helfen, die verschiedenen Aspekte zu messen: Azure SQL Database "DTU percentage" metric

Und hier weitere Informationen über DTU: https://docs.microsoft.com/en-us/azure/sql-database/sql-database-what-is-a-dtu

+1

Laut Statistik erreiche ich keine Grenze (CPU, Speicher, Daten I/O und Transaktionsprotokoll I/O). Aber ich kann die PC-Geschwindigkeit nicht erreichen .... –

1

Auf meinem PC ich die Abfrage in 1 Sekunde ausführen kann

Wir sollten unsere Onprem-Rechenleistung nicht mit der DTU vergleichen. DTU ist eine Kombination aus CPU, IO, Speicher, die Sie basierend auf Ihrem Performance-Tier erhalten werden. Der Vergleich ist nicht gültig.

Wie kann der Server alle verfügbaren Ressourcen verwenden, um Abfragen schneller auszuführen?

Das ist einfach nicht möglich, da, wenn SQL eine Abfrage ausgeführt wird, Speicher die einzige Einschränkung ist, dass die Abfrage von selbst starting.Rest der Ressourcen wie CPU verhindern kann, kann IO Geschwindigkeit auf, was erhöhen oder zu verringern Basis Abfrage tut

Zusammenfassend müssen Sie sicherstellen, dass Abfragen nicht aufgrund von Ressourcenverknappung eingeschränkt sind, können sie alle Ressourcen verbrauchen, wenn sie benötigen und können sie freigeben, wenn sie nicht benötigt werden.

Sie müssen auch warten Arten und weitere Feinabstimmung der Abfrage.

+0

"der Vergleich ist nicht gültig" - OK. Aber wie wir in meinem Beispiel sehen können, hängt die Ausführungsgeschwindigkeit von der DTU ab. Mehr DTU - mehr Geschwindigkeit (die gleichen Informationen in der Dokumentation). Ich habe 75% freie DTU und kann keine einfache PC-Ausführungsgeschwindigkeit erreichen. Kann es einen großen internen Unterschied zwischen DB in Azure und DB auf dem PC geben? Kann es irgendwelche Informationen darüber geben? Ich wäre dankbar für die Links. –

+0

Wenn Ihre Abfrage lange in Azur läuft, müssen Sie ein Limit (irgendeinen unter CPU, RAM, IO) treffen. Siehe diesen Link für mehr Verständnis auf DTU.https: //docs.microsoft.com/en-us/azure/sql-database/sql-database-benchmark-overview – TheGameiswar

+1

weiter kann Ihr on-prem-pc mehr RAM haben und den Abfrageplan zwischenspeichern oder die Daten für längere Zeit im Puffer behalten.So muss Ihre Abfrage Ergebnisse schnell zurückgegeben haben – TheGameiswar

0

wie Bernard Vander Beken erwähnt:

DTU eine Messung der CPU kombiniert ist, Speicher, Daten-I/O und Transaktions log I/O.

Ich werde auch hinzufügen, dass Microsoft die Formel nicht teilt, die zum Berechnen von DTUs verwendet wird. Sie haben erwähnt, dass DTUs während der Abfrageausführung nicht auf 100% gesetzt werden. Aber da wir die Formel nicht kennen, können Sie sehr gut Komponenten von DTU, aber nicht DTU selbst anbinden.

Azure SQL ist eine gemeinsame Umgebung, und jeder Mieter wird gedrosselt werden, um sicherzustellen, dass die Mindest SLA für alle Mieter

0

Was für ein DTU ist ziemlich unscharf.

Wir haben ein Experiment durchgeführt, bei dem wir eine Reihe von Benchmarks auf Maschinen mit der gleichen DTU-Menge in verschiedenen Rechenzentren durchführen. http://dbwatch.com/azure-database-performance-measured

Es stellt sich heraus, dass die tatsächliche Leistung um den Faktor 5. variiert Wir haben auch Fälle gesehen, in denen die Leistung einer wiederholten Abfrage auf der gleichen Datenbank drastisch verändert.

Wir stellen unsere Benchmarks für die Datenbankleistung kostenlos zur Verfügung, wenn Sie die Instanz, die Sie auf Ihrem PC ausführen, mit der Instanz in der azure Cloud vergleichen möchten.

Verwandte Themen