Wie kann ich Probleme mit dem Speicherverbrauch in meiner RDS for SQL Server-DB-Instance beheben?

Lesedauer: 6 Minute
0

Meine Amazon Relational Database Service (Amazon RDS) für eine Microsoft SQL Server-DB-Instance belegt mehr Speicherplatz als erwartet. Warum passiert das und wie kann ich den Festplattenspeicher optimieren?

Kurzbeschreibung

Sie können den verfügbaren Speicherplatz für eine DB-Instance mithilfe der FreeStorageSpace -Metrik in Amazon CloudWatch überwachen. Wenn Sie diese Metrik regelmäßig überwachen und die automatische Speicherskalierung aktivieren, können Sie verhindern, dass den Instances der Speicherplatz ausgeht (StatusStorage Full (Speicher voll)).

Die FreeStorageSpace -Metrik beschreibt jedoch nicht, wie die SQL Server-Engine den verfügbaren Speicherplatz verbraucht.

Lösung

Amazon RDS für SQL Server-Instances im Status „Storage Full“ (Speicher voll)

Sie können keine grundlegenden Operationen ausführen, wenn Ihre RDS-Instance im Status Speicher voll feststeckt. Weitere Informationen finden Sie unter Wie löse ich Probleme, die auftreten, wenn den Amazon RDS-DB-Instances der Speicherplatz ausgeht?

Bei einigen RDS für SQL Server-DB-Instances gelten Einschränkungen beim Ändern des Speichers. In der Amazon RDS-Konsole ist die Option Allocated Storage (Zugewiesener Speicher) deaktiviert, wenn Ihre DB-Instance nicht geändert werden kann. Um den Speicher auf einer Instanz zu skalieren, wenn die Modifizierungsoption nicht verfügbar ist, migrieren Sie Ihre Daten mithilfe von nativem Backup und stellen Sie sie auf eine neue Instance wieder her. Stellen Sie sicher, dass die neue Instance über bereitgestellte IOPS oder den Speichertyp General Purpose (SSD) verfügt. Oder verwenden Sie ein Datenmigrationstool, um auf die neue Instance zu migrieren. Weitere Informationen finden Sie unter Ändern einer Amazon RDS-DB-Instance.

Verwenden Sie den folgenden Befehl der AWS-Befehlszeilenschnittstelle (AWS CLI), um die gültigen Speicheroptionen für Ihre DB-Instance zurückzugeben:

describe-valid-db-instance-modifications

Hinweis: Skalierungsspeicher und automatische Speicherskalierung werden in RDS für SQL Server-Instanzen, die Magnetspeicher verwenden, nicht unterstützt.

Bei Instanzen, in denen die automatische Speicherskalierung aktiviert ist, wird der Speicher nur in bestimmten Szenarien erweitert. Weitere Informationen finden Sie unter Automatisches Verwalten von Kapazität mit der automatischen Speicherskalierung von Amazon RDS. Darüber hinaus wird der Speicher nur erweitert, wenn der maximale Speicherschwellenwert dem Speicherinkrement nicht entspricht oder dieses überschreitet. Weitere Informationen finden Sie unter Einschränkungen.

Speicherverbrauch für RDS für SQL Server-Instances

Führen Sie eine Abfrage ähnlich der folgenden aus, um detaillierte Informationen über die Nutzung des physischen Festplattenspeichers für eine SQL Server-DB-Instance zu erhalten:

SELECT D.name AS [database_name]
    , F.name AS [file_name]
    , F.type_desc AS [file_type]
    , CONVERT(decimal(10,2), F.size * 0.0078125) AS [size_on_disk_mb]
    , CONVERT(decimal(10,2), F.max_size * 0.0078125) AS [max_size_mb]
FROM sys.master_files AS F
INNER JOIN sys.databases AS D
    ON F.database_id = D.database_id;

Dateien, die ROWS enthalten, enthalten Daten, und Dateien, die LOGS enthalten, stellen laufende Transaktionen dar.

Hinweis: Die Systemansicht sys.master\ _files zeigt die Startgröße von tempdb. Sie spiegelt nicht die aktuelle Größe der tempdb wider. Führen Sie die folgende Abfrage aus, um die aktuelle Größe von tempdb zu überprüfen:

select name AS [database_name],
physical_name AS [file_name],
convert(decimal(10,2),size*0.0078125) AS [size_on_disk_mb]
from tempdb.sys.database_files;

Bevor Sie den Speicher optimieren, sollten Sie sich darüber im Klaren sein, wie die SQL Server-Engine Speicher verwendet. Der Speicher der SQL Server-Engine wird allgemein anhand der folgenden Kategorien definiert:

Datenbankdateien

Sie können den Gesamtspeicher, der von einer einzelnen Datenbank verwendet wird, in Zeilen-, Index- und freien Speicherplatz in der aktuell aktiven Datenbank aufteilen. Führen Sie dazu eine Abfrage ähnlich der folgenden aus:

EXEC sp_spaceused;

Transaktionsprotokolldateien

Führen Sie die folgende Abfrage aus, um zu ermitteln, wie viel Speicherplatz von Transaktionsprotokollen verwendet wird:

DBCC SQLPERF(LOGSPACE)

Sie können freien Speicherplatz in den Transaktionsprotokollen erwarten, aber Sie können übermäßigen freien Speicherplatz aufheben, indem Sie der Microsoft-Dokumentation für DBCC SHRINKFILE folgen.

Sie können die übermäßige Zuweisung von freiem Speicherplatz für Transaktionsprotokolle reduzieren, indem Sie die Datei- und Dateigruppenoptionen ALTER DATABASE (Transact-SQL) verwenden. Die Optionen konfigurieren die Einstellungen für automatisches Wachstum für die Datenbank.

Temporäre Datenbank (tempdb)

Die SQL Server tempdb wächst automatisch. Wenn die tempdb eine große Menge an verfügbarem Speicherplatz beansprucht, können Sie die tempdb-Datenbank verkleinern.

Hinweis: Wenn Sie eine tempdb-Datenbank verkleinern, überprüfen Sie nach dem Ausführen des Befehls die Registerkarte Message (Nachricht) in SQL Server Management Studio (SSMS) auf Fehlermeldungen. Wenn Sie ein DBCC SHRINKFILE erhalten: Die Seite konnte nicht verschoben werden, da es sich um eine Fehlermeldung für eine Arbeitstabellenseite handelt. Weitere Informationen finden Sie in der Microsoft-Dokumentation zu DBCC FREESYSTEMCACHE und DBCC FREEPROCCACHE. Sie können die DB-Instance auch neu starten, um die tempdb zu löschen.

Eine DB-Instance mit dem Status Storage Full (Speicher voll) kann möglicherweise nicht neu gestartet werden. In diesem Fall erhöhen Sie den zugewiesenen Speicher für Ihre DB-Instance und starten Sie dann den Computer neu. Weitere Informationen finden Sie unter Wie löse ich Probleme, die auftreten, wenn den Amazon RDS-DB-Instances der Speicherplatz ausgeht?

Datenbankindizes

Wenn Sie einen erheblichen Teil Ihres verfügbaren Speichers für Indizes verwenden, können Sie durch Indexoptimierung möglicherweise Speicherplatz sparen. Sie können detaillierte Informationen zur Indexnutzung abrufen, indem Sie die dynamische Verwaltungsansicht sys.dm\ _db\ _index\ _usage\ _stats ausführen. Dies kann Ihnen bei der Bewertung der Optimierungsprioritäten helfen.

Trace-Dateien

Trace-Dateien, einschließlich C2 Audit Trace-Dateien und Dump-Dateien, können viel Speicherplatz beanspruchen. Amazon RDS löscht automatisch Trace- und Dump-Dateien, die älter als 7 Tage sind. Sie können jedoch auch die Aufbewahrungseinstellungen für Ihre Trace-Dateien anpassen. Weitere Informationen finden Sie unter Festlegen des Aufbewahrungszeitraums für Trace- und Dump-Dateien.

Durch die Amazon S3-Integration verbrauchter Speicherplatz

Wenn Sie Ihre RDS-DB-Instance in Amazon S3 integriert haben, haben Sie möglicherweise Dateien auf Ihr Laufwerk D: hochgeladen, die Speicherplatz beanspruchen. Um zu überprüfen, wie viel Speicherplatz von Ihrer S3-Integration belegt wird, führen Sie einen Befehl aus, um die Dateien auf Ihrer DB-Instance aufzulisten. Weitere Informationen finden Sie unter Auflisten von Dateien auf der RDS-DB-Instance.

CDC

Bei Datenbanken, in denen CDC aktiviert ist, erhöht sich die Größe der Protokolldatei je nach Häufigkeit der Änderungen an den Quelltabellen oder Datenbanken. Der Speicherplatz könnte irgendwann knapp werden. Wenn der Protokolldatenträger voll wird, kann CDC keine weiteren Transaktionen verarbeiten.

Prüfung

Wenn die Überwachung beispielsweise nicht richtig konfiguriert ist, können die Protokolle exponentiell wachsen und sich auf den Speicher auswirken. Weitere Informationen finden Sie unter Verwenden von SQL Server Audit.

Der C2-Auditmodus speichert eine große Menge an Ereignisinformationen in der Protokolldatei. Die Protokolldatei kann schnell wachsen und die Instance in den Status „Storage Full“ (Speicher voll) versetzen. Weitere Informationen finden Sie in der Microsoft-Dokumentation unter Serverkonfigurationsoption für den C2-Auditmodus.

Darüber hinaus kann sich das Aktivieren von Funktionen wie dem Abfragespeicher auch auf die Ressourcenauslastung auswirken.


Verwandte Informationen

Amazon RDS für Microsoft SQL Server

Überwachen von Metriken in einer Amazon RDS-Instance

Amazon RDS-DB-Instance hat nur noch wenig Speicherplatz

Migration von Microsoft SQL Server-Datenbanken in die AWS-Cloud