In diesem Dokument wird erläutert, wie Sie eine Cloud SQL for SQL Server-Instanz überprüfen und optimieren, wenn diese Instanz vom Recommender für nicht bereitgestellte Instanzen als sehr speicherintensiv identifiziert wurde.
SQL Server-Arbeitsspeicher
Der SQL Server-Speicher kann in Folgendes unterteilt werden:
Caches
Dies sind Objekte auf einem Laufwerk, die neu geladen werden können, z. B. Datenbankseiten und gespeicherte Prozeduren. Dadurch kann der SQL Server diese Objekte basierend auf der Speicherauslastung vergrößern und verkleinern. Zu den Caches gehören Pufferpools und Plan-Caches.
Fester Arbeitsspeicher
Fester Arbeitsspeicher kann wachsen und schrumpfen. Er wird nur verkleinert, wenn er nicht genutzt wird, z. B. wenn die Anzahl der Verbindungen oder die Anzahl der ausgeführten Abfragen abnimmt. Damit unterscheidet er sich von Caches. Wenn nicht genügend fester Arbeitsspeicher vorhanden ist, kann SQL Server keinen Arbeitsspeicher mehr haben. Fester Arbeitsspeicher umfasst Verbindungsspeicher und Arbeitsspeicherzuweisungen.
SQL Serveraufwand
Der SQL Serveraufwand umfasst Threads und Stacks.
In-Memory-OLTP
In-Memory-OLTP enthält In-Memory-Tabellen und In-Memory-Dateigruppen.
Der Arbeitsspeicherverbrauch von SQL Server wird durch Festlegen von maximum server memory
und memory.memory.limitmb
gesteuert. Der Parameter memory.memory.limitmb
wird von Cloud SQL automatisch festgelegt.
Weitere Informationen zu memory.memory.limitmb
finden Sie in der Microsoft-Dokumentation.
Optionen zur Arbeitsspeicheroptimierung
So ermitteln Sie, ob eine Instanz mehr Arbeitsspeicherabstimmung benötigt:
- Prüfen Sie den Wert des Flags
max server memory (mb)
.Wir empfehlen, den Wert dieses Flags von Cloud SQL verwalten zu lassen. Wenn Sie diesen Wert manuell verwalten müssen, verwenden Sie die Formel für die
max_server_memory (mb)
-Nutzung, die unter Best Practices beschrieben wird, um zu verhindern, dass SQL Server den gesamten Arbeitsspeicher verbraucht.Weitere Informationen finden Sie unter Sonderflags.
- Behalten Sie das Flag
Page life expectancy
im Blick.Page life expectancy
gibt an, wie viele Sekunden die älteste Seite im Pufferpool verbleibt. Dieser Wert sollte mehr als 300 betragen, wie von Microsoft empfohlen. Wenn er unter 300 fällt, kann dies ein Hinweis darauf sein, dass die Instanz eine hohe Speicherauslastung aufweist. Führen Sie die folgende Abfrage aus, umPage life expectancy
zu überwachen.SELECT [object_name], [counter_name], [cntr_value] FROM sys.dm_os_performance_counters WHERE [object_name] LIKE '%Manager%' AND [counter_name] = 'Page life expectancy'
- Prüfen Sie das Flag
Memory Grants Pending
.Memory Grants Pending
gibt die Gesamtzahl der Prozesse an, die auf eine Speicherzuweisung des Arbeitsbereichs warten. Führen Sie die folgende Abfrage aus, umMemory Grants Pending
zu prüfen. Wenn diese Abfrage konsistent die gewährten Berechtigungen anzeigt, weist dies auf eine hohe Arbeitsspeicherauslastung hin. Sie können diesen Druck reduzieren, wenn Sie die Warteschlangen in der Datenbank abfragen und alle Anweisungen, die auf Arbeitsspeicher warten, optimieren.SELECT @@SERVERNAME AS [Server Name], RTRIM([object_name]) AS [Object Name], cntr_value AS [Memory Grants Pending] FROM sys.dm_os_performance_counters WITH(NOLOCK) WHERE [object_name] LIKE N'%Memory Manager%' -- Handles named instances AND counter_name = N'Memory Grants Pending'
Verwenden Sie den Metrics Explorer, um die Speichernutzung zu ermitteln
Sie können die Speichernutzung der Instanz mit dem Messwert database/memory/components.usage
im Metrics Explorer prüfen.