Allgemeine Best Practices

Auf dieser Seite finden Sie Best Practices für eine optimale Leistung, Langlebigkeit und Verfügbarkeit mit Cloud SQL.

Wenn Probleme mit Ihrer Cloud SQL-Instanz auftreten, prüfen Sie bei der Fehlerbehebung Folgendes:

Instanzkonfiguration und -verwaltung

Best Practice Weitere Informationen
Lesen und beachten Sie die Betriebsrichtlinien, um dafür zu sorgen, dass alle Instanzen das Cloud SQL-SLA erfüllen.
Konfigurieren Sie für die primäre Instanz ein Wartungsfenster, in dem betriebsunterbrechende Updates erfolgen können. Siehe Wartungsfenster.
Wenn Sie Instanzen regelmäßig löschen und neu erstellen, sollten Sie in der Instanz-ID einen Zeitstempel verwenden, um die Wahrscheinlichkeit zu erhöhen, dass neue Instanz-IDs verwendet werden können. Nach dem Löschen einer Instanz kann die Instanz-ID einige Tage lang nicht wiederverwendet werden.
Starten Sie keinen neuen Verwaltungsvorgang, bevor der letzte Vorgang abgeschlossen ist.

Solange der vorherige Vorgang nicht abgeschlossen ist, nehmen Cloud SQL-Instanzen keine neuen Vorgangsanfragen an. Wenn Sie dennoch versuchen, einen neuen Vorgang zu starten, schlägt die Anfrage fehl. Das betrifft auch Neustarts der Instanz.

Der Instanzstatus in der Cloud Console gibt nicht an, ob gerade ein Vorgang ausgeführt wird. Das grüne Häkchen zeigt nur an, dass sich die Instanz im Status RUNNABLE befindet. Wenn Sie wissen möchten, ob gerade ein Vorgang ausgeführt wird, wechseln Sie zum Tab Vorgänge und sehen Sie sich den Status des letzten Vorgangs an.

Legen Sie SQL Server-Einstellungen so fest, dass sie für Cloud SQL optimal funktionieren. Siehe SQL Server-Einstellungen.
Passen Sie die Instanz optimal für Testläufe an. Die folgende Tabelle enthält die für Testläufe geeigneten Konfigurationswerte.
  • vCPU: 40
  • Arbeitsspeicher: 262144 MB
  • MAXDOP: 8
  • Cost threshold for parallelism: 120
  • tempdb-Dateien: 8. Vorskaliert, um eine automatische Vergrößerung zu verhindern.
  • Nutzerdatenbankdateien: Automatische Vergrößerung in 64-128 MB festgelegt. Vorgröße zur Verhinderung einer automatischen Vergrößerung
  • Speicher: >= 4TB für die besten IOPS
Bestimmen Sie die Kapazität des E/A-Subsystems, bevor Sie SQL Server bereitstellen.

Testen Sie verschiedene E/A-Typen und -Größen. Die Größe der E/A, die vom nichtflüchtigen Serverspeicher von SQL Server ausgegeben wird, wirkt sich auf die IOPS und den Durchsatz aus. Die SQL Server-Arbeitslast wird gedrosselt, wenn sie das IOPS- oder Durchsatzlimit erreicht. Der in Cloud SQL verwendete Speichertyp ist PD SSD, das für Hochleistungs-Arbeitslasten auf Unternehmensebene geeignet ist.

Passen Sie die VM so an, dass die Leistung maximiert wird:

  • Eine Laufwerkgröße von 4 TB oder mehr bietet mehr Durchsatz und IOPS.
  • Eine höhere vCPU bietet mehr IOPS und Durchsatz. Überwachen Sie bei Verwendung einer höheren vCPU die DB-Wartezeit auf Parallelität, was auch zunehmen kann.
  • Für eine optimale Leistung sollten Sie E/A-Vorgänge parallel ausführen, um eine höhere E/A-Warteschlangentiefe zu erreichen.
Indexfragmentierung verhindern Organisieren Sie den Index neu oder richten Sie einen Zeitplan ein, um den Index neu zu erstellen, je nachdem, wie oft sich Ihre Daten ändern.
Statistiken regelmäßig aktualisieren Wenn Statistiken veraltet sind, generiert die SQL-Abfrageoptimierung möglicherweise suboptimale Abfragepläne. Aktualisieren Sie die Statistiken, insbesondere nachdem große Datenmengen geändert wurden.
Verhindern, dass Datenbankdateien unnötig groß werden.

Legen Sie autogrow in MB und nicht als Prozentsatz fest, indem Sie die Schritte verwenden, die für die Anforderung geeignet sind. Verwalten Sie das Wachstum außerdem proaktiv, bevor das automatische Wachstum beginnt.

Achten Sie außerdem darauf, dass das Feature Automatische Speichererweiterungen aktivieren für Cloud SQL aktiviert ist, damit Cloud SQL Speicherplatz hinzufügen kann, wenn der Speicherplatz der Datenbank und der Instanz aufgebraucht ist.

Datenarchitektur

Best Practice Weitere Informationen
Erstellen Sie wenn möglich Shards Ihrer Instanzen. Mehrere kleine Cloud SQL-Instanzen sind oft besser als eine große Instanz. Die Verwaltung einer einzigen großen, monolithischen Instanz bringt einige Probleme mit sich, die bei einer größeren Anzahl kleinerer Instanzen nicht auftreten.
Verwenden Sie nicht zu viele Datenbanktabellen.

Zu viele Datenbanktabellen können sich auf die Antwortzeit der Instanz auswirken. Bei mehr als 10.000 Tabellen gibt es Auswirkungen auf die Gültigkeit des SLA. Weitere Informationen finden Sie in den Betriebsrichtlinien.

Für SQL Server-Instanzen sind zwar noch keine Betriebsrichtlinien verfügbar, es gelten aber dieselben Grundsätze.

Implementierung von Anwendungen

Best Practice Weitere Informationen
Greifen Sie auf Best Practices für das Verbindungsmanagement zurück, z. B. Verbindungs-Pooling und exponentieller Backoff. Diese Methoden nutzen die Ressourcen der Anwendung umfassender und erleichtern die Einhaltung der Verbindungslimits für Cloud SQL. Weitere Informationen und Codebeispiele finden Sie unter Datenbankverbindungen verwalten.
Testen Sie die Reaktion der Anwendung auf Wartungsupdates, die jederzeit während eines Wartungsfensters auftreten können. Die Änderung des Maschinentyps einer Instanz kommt einem Wartungsupdate am nächsten. Achten Sie darauf, dass die Anwendung nach einer Wartung ordnungsgemäß fortgesetzt wird. Dazu sollte sie mindestens 10 Minuten lang versuchen, die Datenbankverbindung wiederherzustellen, bevorzugt über einen exponentiellen Backoff. Weitere Informationen finden Sie unter Datenbankverbindungen verwalten.
Testen Sie die Reaktion der Anwendung auf Failover, die jederzeit vorkommen können. Sie können ein Failover manuell über die Cloud Console, das gcloud-Befehlszeilentool oder die API starten. Weitere Informationen finden Sie unter Failover initialisieren.
Vermeiden Sie große Transaktionen. Kleine, kurze Transaktionen sind zu bevorzugen. Umfangreiche Datenbankupdates führen Sie besser in mehreren kleinen Transaktionen statt in einer einzelnen großen Transaktion durch.
Falls Sie den Cloud SQL Auth-Proxy verwenden, achten Sie darauf, dass es die neueste Version ist. Weitere Informationen finden Sie unter Aktuelle Version des Cloud SQL Auth-Proxys.

Datenimport und -export

Best Practice Weitere Informationen
Beschleunigen Sie Importe für kleine Instanzen. Bei kleinen Instanzen können Sie vorübergehend die CPU und den RAM einer Instanz erhöhen, um beim Importieren großer Datasets die Leistung zu optimieren.
Verwenden Sie das richtige Verfahren, wenn Sie Daten für den Import in Cloud SQL exportieren. Weitere Informationen finden Sie unter Daten exportieren.

Sicherung und Wiederherstellung

Best Practice Weitere Informationen
Schützen Sie Ihre Daten mit den jeweils am besten geeigneten Cloud SQL-Funktionen.

Sicherungen und Exporte sind zwei Möglichkeiten, um für Datenredundanz und Datenschutz zu sorgen. Beide ergänzen sich, schützen vor unterschiedlichen Szenarien und sind Teil einer effektiven Datenschutzstrategie.

Sicherungen benötigen nicht viele Ressourcen. Damit können Sie die Daten einer Instanz zum Zeitpunkt der Sicherung wiederherstellen. Es gelten jedoch einige Einschränkungen. Wenn Sie eine Instanz löschen, werden auch ihre Sicherungen gelöscht. Sie können keine einzelne Datenbank oder Tabelle sichern. Wenn die Region, in der sich die Instanz befindet, nicht verfügbar ist, können Sie die Instanz aus dieser Sicherung nicht wiederherstellen, auch nicht in einer verfügbaren Region.

Exporte dauern länger, da in Cloud Storage eine externe Datei erstellt werden muss, die zum Wiederherstellen der Daten verwendet werden kann. Exporte sind vom Löschen einer Instanz nicht betroffen. Außerdem können Sie je nach Exportformat auch eine einzelne Datenbank oder sogar nur eine Tabelle exportieren.

Wenn Sie die Exportsicherungsfunktion auf einer Enterprise- oder Standard-SQL Server-Instanz verwenden, sollten Sie keine GZ-Archivdatei erstellen, da sie versucht, eine Sicherung zu komprimieren, die bereits nativ von SQL Server komprimiert ist.

SQL Server-Einstellungen

Einige SQL Server-Einstellungen werden für Cloud SQL empfohlen. In den folgenden Themen werden einige Empfehlungen beschrieben.

Einstellung für globale Konfiguration

Einstellung Empfehlung
max worker threads Behalten Sie den Standardwert 0 bei. Diese Einstellung definiert die Anzahl der für SQL Server verfügbaren Threads basierend auf der Anzahl der CPUs. Der Wert wird vom SQL Server-Engine beim Start automatisch berechnet.

Zu ändernde Datenbankeinstellungen

Um die Leistung der SQL Server-Datenbank optimal zu gestalten, legen Sie die folgenden SQL Server-Einstellungen wie unten beschrieben fest.

Einstellung Empfehlung
cost threshold for parallelism

Dies ist der Schwellenwert, an dem das SQL-Optimierungstool eine Abfrage mit Parallelität ausführt. Der Standardwert von 5 kann dazu führen, dass zu viele Abfragen parallel ausgeführt werden, was wiederum die Wartezeit der Datenbank bei parallelen Threads erhöht. Erhöhen Sie den Wert, um diese Art von Konflikten zu reduzieren.

Der Wert wird ignoriert, wenn maxdop auf 1 gesetzt ist.

max degree of parallelism (MAXDOP)

Wenn Sie Datenbankwartezeiten aufgrund der Parallelität reduzieren möchten, passen Sie diesen Wert anhand bestimmter Empfehlungen für die Anzahl der verfügbaren logischen Prozessoren an.

optimize for ad hoc workloads

Vermeiden Sie große Pläne zur einmaligen Verwendung im Tarif-Cache. Setzen Sie diese Option auf 1, um die Effizienz des Tarifcaches für Arbeitslasten zu verbessern, die viele einmalige Ad-hoc-Batches enthalten.

tempdb

Geben Sie tempdb vorab so an, dass es nicht automatisch wachsen muss. Alle Dateien in tempdb sollten gleich groß sein und dasselbe Dateiwachstum haben.

Der Datenbank-Wartetyp für tempdb-Konflikte wird als PAGELATCH_UP angezeigt. Um die Konflikte zu reduzieren, fügen Sie weitere Dateien hinzu.

Wenn die Anzahl der Prozessoren kleiner oder gleich 8 ist, verwenden Sie dieselbe Anzahl von Dateien wie für logische Prozessoren. Wenn die Anzahl der Prozessoren größer als 8 ist, verwenden Sie acht Datendateien. Wenn die Konflikte weiterhin bestehen, erhöhe die Anzahl der Dateien um ein Vielfaches von 4, bis keine Konflikte mehr auftreten.

Abhängig von Ihrer Arbeitslast sollten Sie auch die folgenden Einstellungen ändern.

Einstellung Empfehlung
Close Cursor on Commit Enabled Der Standardwert ist off. Das bedeutet, dass Cursor nicht automatisch geschlossen werden, wenn Sie einen Commit für eine Transaktion durchführen.
Default Cursor Mit dieser Option wird der Bereich eines Cursors gesteuert, der im T-SQL-Code verwendet wird. Wenn Sie diese Einstellung ändern, sollten Sie den Anwendungscode auf etwaige negative Auswirkungen prüfen.
Page Verify Mit dieser Option kann SQL Server eine Prüfsumme für eine Datenbankseite berechnen, bevor sie auf das Laufwerk geschrieben wird, und die Prüfsumme im Seitenheader speichern. Beim nochmaligen Lesen einer Seite wird die Prüfsumme neu berechnet, um die Integrität der Seite zu prüfen. Der empfohlene Wert ist checksum.
Parameterization Der Standardwert ist simple. Die einfache Parametrisierung ermöglicht es SQL Server, Literalwerte in einer Abfrage durch Parameter zu ersetzen. Microsoft stellt Richtlinien zum Ändern dieses Werts und zur Verwendung mit Tarifleitfäden zur Verfügung.

Beizubehaltende Datenbankeinstellungen

Für eine optimale Leistung der SQL Server-Datenbank sollten Sie die Standardwerte der folgenden SQL Server-Einstellungen beibehalten.

Einstellung Standardwert, der beibehalten werden soll
Auto Close False Wenn diese Einstellung aktiviert ist, werden Verbindungen geöffnet und geschlossen und der Prozedur nach jeder Verbindung geleert. Dies kann zu Leistungseinbußen bei Datenbanken führen, auf die häufig zugegriffen wird.
Auto Shrink False Das Aktivieren kann zu Datenbank- und Indexfragmentierung und anderen Leistungsproblemen führen. Einige davon werden in diesem SQL Server-Blog erläutert.
Date Correlation Optimization Enabled False Wenn diese Funktion aktiviert ist, kann das Optimierungsprogramm Beziehungen zwischen Datumsangaben in zwei verwandten Tabellen ermitteln und optimieren. Dieses Tracking in SQL Server weist einen gewissen Leistungsaufwand auf.
Legacy Cardinality Estimation False In einigen Fällen kann SQL Server die Kardinalitäten nicht genau berechnen, wenn diese Einstellung aktiviert ist.
Parameter Sniffing ON Das Ausschneiden von Parametern aus Datenbanktabellen kann bei der Erstellung von Ausführungsplänen helfen. Wenn die Tabellen ungleichmäßig verteilte Daten haben, können die Ausführungspläne zu Leistungsproblemen führen. Verwenden Sie für solche Daten andere Optionen aus dem Query Store, anstatt diese Einstellung zu ändern.
Query Optimizer Fixes False Wenn diese Option aktiviert ist, kann sich dies auf die Leistung des SQL Server-Kardinalitätsschätzungens auswirken. Wenn Sie sie aktivieren, testen Sie, ob es keine Abfrageregression gibt.
Auto Create Statistics True Mit dieser Option kann SQL Server Spalten-Statistiken erstellen, die die Kardinalitätsschätzungen von Abfrageplänen verbessern können.
Auto Update Statistics True Mit dieser Option kann SQL Server veraltete Statistiken mithilfe eines Schwellenwerts für die Neukompilierung aktualisieren, der auf der Tabellenkardinalität basiert.
Auto Update Statistics Asynchronously False Wenn diese Option aktiviert ist, wird das SQL-Abfrageoptimierungstool angewiesen, die veralteten Statistiken für die aktuelle Abfrageausführung zu verwenden, und die Statistiken asynchron aktualisieren, um zukünftige Arbeitslasten zu nutzen.

Wenn Sie jedoch eine vorhersehbare Antwortzeit für eine häufig ausgeführte Abfrage erwarten oder wenn in Ihrer Anwendung häufig Clientanfragezeitüberschreitungen auftreten, während sie auf Statistikaktualisierungen warten, sollten Sie diese Option aktivieren und Auto Update Statistics deaktivieren.

Target Recovery Time (Seconds) 60 Diese Einstellung legt eine Obergrenze für die Wiederherstellungszeit für eine Datenbank fest, indem Sie schmutzige Seiten mehr oder weniger häufig aus dem Pufferpool auf das Laufwerk leeren. Bei transaktionalen Arbeitslasten kann ein niedrigerer Wert für diese Einstellung in Kombination mit den Speicher-IOPS nahe dem Höchstwert zu einem Leistungsengpass führen.

Trace-Flag-Einstellungen

Mit Trace-Flags in SQL Server können Sie bestimmte Merkmale festlegen, das Verhalten von SQL Server-Datenbanken ändern oder Probleme in SQL Server beheben.

Einige SQL Server-Trace-Flags werden in Cloud SQL unterstützt und können mit Datenbank-Flags festgelegt werden. Folgende Einstellungen werden empfohlen:

Trace flag Empfohlen
1204 Yes, mit Ausnahme von arbeitslastintensiven Servern, die viele Deadlocks generieren.
1222 Yes, mit Ausnahme von arbeitslastintensiven Servern, die viele Deadlocks generieren.
1224 No Dies kann zu einer höheren Speichernutzung und zu Speicherdruck auf der Datenbank führen.
2528 No Die parallele Überprüfung von Objekten ist die Standardeinstellung und wird empfohlen. Der Grad der Parallelität wird vom Datenbankmodul automatisch berechnet.
3205 No Bandlaufwerke für Sicherungen sind eine Funktion von Cloud SQL for SQL Server.
3226 No, es sei denn, Sie benötigen häufige Sicherungen, z. B. TLOG-Sicherungen.
3625 No Da das Root-Konto keinen Systemadministratorzugriff hat, werden möglicherweise nicht alle Fehlermeldungen angezeigt.
4199 No Das wirkt sich auf den Estimator für Kardinalität aus und kann zu Regressionsabfragen führen.
4616 No Diese Einschränkung verringert die Sicherheit um Anwendungsrollen. Sie muss gemäß den Anwendungsanforderungen validiert werden.
7806 Yes Wenn der Datenbankserver nicht mehr reagiert, ist die dedizierte Administratorverbindung (DAC) möglicherweise die einzige Möglichkeit, um eine Verbindung zur Diagnose herzustellen.