
Ich verwende Microsoft SQL Server 2017 Web Edition in einer virtualisierten Umgebung, die auf Amazon EC2 gehostet wird. Laut MicrosoftEditionen und unterstützte Funktionen von SQL Server 2017Seite ist die „Maximale Rechenkapazität, die von einer einzelnen Instanz genutzt wird – SQL Server-Datenbankmodul“ „Auf 4 Sockets oder 16 Kerne, weniger begrenzt.“
Laut Windows Task-Manager habe ich in der virtuellen Umgebung 4 virtuelle Prozessoren. Aber wenn ich eine lang andauernde, anspruchsvolle SQL-Abfrage ausführe, erreicht die CPU-Auslastung maximal 25 %.
Wenn die Beschränkung für die Web Edition bei 4 Sockeln oder 16 Kernen liegt, sollte ich dann nicht 100 % meiner virtuellen Prozessoren nutzen dürfen? Oder verstehe ich die Klassifizierung virtueller Prozessoren durch Windows oder SQL Server falsch?
Danke
Antwort1
Laut Windows Task-Manager habe ich in der virtuellen Umgebung 4 virtuelle Prozessoren. Aber wenn ich eine lang andauernde, anspruchsvolle SQL-Abfrage ausführe, erreicht die CPU-Auslastung maximal 25 %.
Das bedeutet, dass die VM, selbst wenn sie als 1 Kern pro Sockel angezeigt würde (was schlecht wäre), trotzdem alle 4 pro Lizenzierung verwenden könnte. Die Abfrage führt also einen seriellen Plan aus, keinen parallelen.
Die Tatsache, dass es sich um eine „lang laufende Abfrage“ handelt und diese „25 % der CPU-Leistung“ beansprucht, bedeutet, dass die Abfrage wahrscheinlich nicht sehr gut geschrieben ist oder das Schemadesign nicht den Anforderungen entspricht. In jedem Fall würde die Ausführung über einen parallelen Plan (falls dies angesichts der Abfrage überhaupt möglich ist) nur dazu führen, dass der Server eine höhere CPU-Auslastung als normal hat.
Am besten schauen Sie sich die Abfrage, das Schema und die unterstützenden Objekte an und optimieren sie.