Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Überwachen der Lebenserwartung von Seiten in SQL Server

Die Metrik der SQL Server Page Life Expectancy (PLE) gilt seit langem als wichtiger Leistungsindikator für DBAs, wenn es um den Gesamtzustand ihrer Datenbankinstanzen geht. PLE zeigt anhand von Zählern, die vom Buffer Manager-Objekt bereitgestellt werden, ob das System unter internem Speicherdruck steht.

Ein genauerer Blick auf die Lebenserwartung von Seiten

PLE ist ein Maß für die Zeitspanne (in Sekunden), die eine Datendateiseite voraussichtlich im Pufferpool von SQL Server verbleibt. Diese Metrik ist kein Aggregat oder Akkumulation, sondern einfach ein Point-in-Time-Wert, den DBAs aus dem Buffer Manager abfragen.

SQL Server liest nur Datenseiten aus dem Pufferpool (d. h. logisches Lesen). Wenn sich die Seite also nicht im Pufferpool befindet, findet es sie auf der Festplatte (d. h. physisches Lesen) und verschiebt die Seite so in den Pufferpool es kann logisch lesen. Dies ist ein zeitaufwändiger Vorgang und kann sich negativ auf die Leistung auswirken.

Was ist ein „guter“ PLE-Wert?

Ein hoher PLE-Wert bedeutet, dass eine Seite länger im Pufferpool verbleibt, sodass SQL Server weniger wahrscheinlich auf die Festplatte gehen muss, um nach der Datenseite zu suchen, wodurch das System schneller läuft.

In der Vergangenheit hielten DBAs 300 Sekunden (fünf Minuten) für den PLE-Sweetspot. Diese Zahl ist jedoch ziemlich willkürlich. Microsoft hat 300 bereits in den 2000er Jahren als PLE-Standard empfohlen, als der Arbeitsspeicher begrenzt war.

Heutzutage konzentrieren sich DBAs nicht auf eine „richtige“ Zahl, da auf den meisten Systemen Speicherkapazitäten Standard sind. Es ist nicht ungewöhnlich, dass SQL Server auf einem System ausgeführt wird, das über TB RAM verfügt, daher haben DBAs einen formelhaften Ansatz gewählt, um einen „guten“ PLE-Wert zu identifizieren:

Seitenlebenserwartung =300 Sekunden pro 4 GB RAM auf Ihrem Server

Es ist jedoch wohl wichtiger, die PLE-Werte kontinuierlich auf Konsistenzänderungen zu überwachen, damit Sie Speicherprobleme erkennen und schnell beheben können.

Wenn Sie mit großen Datenmengen arbeiten, ist es wichtig zu beachten, dass größere Server oft mehrere PLEs haben. Jeder Non-Uniform Memory Access (NUMA)-Knoten erhält seinen eigenen PLE-Wert, und dann werden diese Zahlen berechnet, um den PLE-Wert des Servers zu erhalten. Nehmen Sie zum Beispiel den PLE-Wert des Knotens x 1.000 (tun Sie dies für alle NUMA-Knoten). Addieren Sie die Werte aller Knoten, dividieren Sie dann durch die Gesamtzahl der NUMA-Knoten und dividieren Sie dann erneut durch 1.000. Dadurch erhalten Sie die Server-PLE.

So stellen Sie fest, ob ein Problem mit der Lebenserwartung der Seite vorliegt

Schwankungen in PLE sind normal, da es auf der Arbeitsbelastung basiert. Das Verfolgen von hohen, durchschnittlichen und niedrigen Trends kann Ihnen zeigen, ob bestimmte Prozesse wie Tabellenscans oder das Leeren des Puffercaches optimiert werden müssen, um PLE zu verbessern.

Ein guter Weg, um festzustellen, ob ein Problem vorliegt, besteht darin, ob der normale PLE-Wertebereich fällt und niedrig bleibt. Dies deutet darauf hin, dass wahrscheinlich eine erhöhte Nachfrage und Druck auf den Pufferpool besteht.

Bedeutet dies, dass Sie dem Problem mehr Speicher zuweisen müssen? Vielleicht. Vielleicht nicht.

Fehlerbehebung bei niedriger Lebenserwartung von SQL Server-Seiten

Es gibt mehrere Gründe, warum PLE-Werte nach unten tendieren können. Es ist wichtig, das Problem zu beheben, da die Lösung nicht für jede Grundursache gleich ist. Hier sind drei der Übeltäter, die höchstwahrscheinlich Ihren PLE verlangsamen:

Unzureichender Arbeitsspeicher

Wenn die Arbeitslast stetig zunimmt und die PLE abnimmt, haben Sie wahrscheinlich wenig Arbeitsspeicher. Das Hinzufügen von Speicher kann helfen, PLE zu erhöhen, aber es führt nicht dazu, dass Abfragen effizienter ausgeführt werden.

Teurer Betrieb

Wenn sich die Arbeitslast nicht geändert hat, der Pufferpool jedoch stärker beansprucht wird, kann es sein, dass Ausreißer mehr Arbeitsspeicher verwenden. Überprüfen Sie, ob Wartungsaufträge ausgeführt oder Indexneuerstellungen im Gange sind.

Veraltete Statistiken

Veraltete Statistiken können zu Änderungen am Abfrageplan führen. Dies erhöht die Nachfrage nach dem Pufferpool, da teure Vorgänge ausgeführt werden, weil sie nicht mit neuen Statistiken synchronisiert werden.

So beheben Sie eine niedrige Lebenserwartung von Seiten durch Optimieren von Abfragen

Der beste Weg, niedrige PLE-Werte zu beheben, besteht darin, zur Quelle zu gehen und Ihre SQL Server-Abfragen zu optimieren. Dies ist mit einem zusätzlichen Bonus verbunden, da die Optimierung der Abfragen gleichzeitig die Gesamtleistung Ihres Systems verbessert.

Es gibt mehrere Dinge, die Sie tun sollten, um Abfragen für eine maximale Verbesserung von PLE zu optimieren:

  • Nicht verwendete Indizes löschen
  • Doppelte Indizes zusammenführen
  • Suchen Sie nach großen Abfragen
  • Wissen, was sich im Pufferpool befindet
  • Indizes defragmentieren
  • Statistiken aktualisieren
  • Daten löschen

Lebenserwartung der Seite im Laufe der Zeit verfolgen

Obwohl PLE eine Point-in-Time-Metrik ist, ist die Betrachtung von PLE im Zeitverlauf eine wichtige Methode, um Probleme frühzeitig zu erkennen und schnell zu beheben, bevor die Leistung erheblich beeinträchtigt wird.

Es gibt viele Möglichkeiten, die PLE-Metrik im Laufe der Zeit zu überwachen und die Abfragen zu identifizieren, deren Transaktionen eine große Anzahl von Lesevorgängen verursachen. DMVs und erweiterte Ereignisse in SQL Server sind die bewährten Methoden und haben bei diesem Prozess der Datenerfassung eine entscheidende Rolle gespielt. Aber sie sind auch manuell und zeitaufwändig und bieten nur begrenzte Vorteile, wenn es darum geht, eine historische Perspektive auf die Metrikleistung im Laufe der Zeit zu gewinnen.

Eine kommerzielle Lösung wie Spotlight Cloud bietet DBAs nicht nur die Möglichkeit, PLE im Laufe der Zeit direkt nachzuverfolgen, sondern analysiert auch die Arbeitslast, um festzustellen, welche Abfragen und Ausreißeraktivitäten Druck auf den Pufferpool ausüben, damit Sie diese isolieren und beheben können Problem und optimieren Sie Ihre SQL Server-Leistung.

Ursprünglich veröffentlicht im April 2019 und aktualisiert im September 2020.