Bestimmen, ob eine Tabelle oder eine gespeicherte Prozedur zu In-Memory OLTP portiert werden soll

Der Transaktionsleistungssammler in SQL Server Management Studio hilft Ihnen bei der Auswertung, ob In-Memory OLTP die Leistung Ihrer Datenbankanwendung verbessert. Der Transaktionsleistungsanalysebericht gibt außerdem an, wie viel Arbeit notwendig ist, um In-Memory OLTP in Ihrer Anwendung zu aktivieren. Nachdem Sie eine datenträgerbasierte Tabelle identifiziert haben, die Sie zur Verwendung von In-Memory-OLTP portieren, können Sie die Tabellenmigration mit dem Ratgeber für die Speicheroptimierungvereinfachen. In ähnlicher Weise unterstützt Sie der Ratgeber für native Kompilierung bei der Portierung einer gespeicherten Prozedur in eine nativ kompilierte gespeicherte Prozedur.

In diesem Thema wird Folgendes erläutert:

  • Konfigurieren des Verwaltungs-Data Warehouse

  • Konfigurieren der Datensammlung

  • Generieren von Transaktionsleistungsanalyseberichten, um leistungskritische Tabellen und gespeicherte Prozeduren zu identifizieren

Weitere Informationen zu Migrationsmethoden finden Sie unter In-Memory OLTP - Common Workload Patterns and Migration Considerations (In-Memory-OLTP: Allgemeine Workloadmuster und Überlegungen zur Migration).

Der Transaktionsleistungssammler und die Transaktionsleistungsanalyseberichte helfen Ihnen, die folgenden Aufgaben auszuführen:

  • Analysieren Ihrer Arbeitsauslastung, um zu bestimmen, ob In-Memory OLTP die Leistung verbessert. Der Transaktionsleistungssammler sammelt und wertet die Leistungsmerkmale Ihrer Arbeitsauslastung aus. . Der Transaktionsleistungsanalysebericht empfiehlt Tabellen und gespeicherte Prozeduren, die von der Konvertierung in In-Memory OLTP am meisten profitieren würden.

  • Hilfe bei der Planung und Durchführung der Migration zu In-Memory OLTP. Der Migrationspfad von einer datenträgerbasierten Tabelle zu einer speicheroptimierten Tabelle kann zeitaufwendig sein. Mit dem Ratgeber für die Speicheroptimierung können Sie Inkompatibilitäten in Ihrer Tabelle identifizieren, die Sie entfernen müssen, bevor Sie die Tabelle zu In-Memory OLTP verschieben. Der Ratgeber für die Speicheroptimierung gibt außerdem Aufschluss über die Auswirkungen, die die Migration einer Tabelle zu einer speicheroptimierten Tabelle auf Ihre Anwendung haben wird.

    Sie können ermitteln, ob Ihre Anwendung von In-Memory OLTP profitieren würde. Außerdem können Sie OLTP verwenden, um die Migration zu In-Memory OLTP zu planen und um einige Ihrer Tabellen und gespeicherten Prozeduren zu In-Memory OLTP zu migrieren.

    Wichtig

    Die Leistung eines Datenbanksystems hängt von verschiedenen Faktoren ab, die jedoch nicht alle durch den Transaktionsleistungssammler beobachtet und gemessen werden können. Daher gewährleistet der Transaktionsleistungsanalysebericht nicht, dass die tatsächlichen Leistungssteigerungen den ggf. getroffenen Vorhersagen entsprechen.

Der Transaktionsleistungssammler und die Möglichkeit zum Generieren eines Transaktionsleistungsanalyseberichts werden installiert, wenn Sie bei der Installation SQL Server 2019 (15.x) Verwaltungstools-Basic oder Verwaltungstools-Erweitert auswählen.

Empfehlungen

Der empfohlene Workflow wird im folgenden Flussdiagramm veranschaulicht. Die gelben Knoten stellen optionale Prozeduren dar:

AMR-Workflow

Sie können eine beliebige Methode zum Einrichten einer Leistungsbaseline verwenden, einschließlich, aber nicht beschränkt auf die Verwendung von Leistungsindikatorprotokollen oder des SQL Server Aktivitätsmonitors. In der Leistungsbasislinie und in Ihren Vergleichen verwenden Sie folgende Informationen:

  • CPU-Verbrauch von SQL Server.

  • Arbeitsspeicherverbrauch von SQL Server.

  • E/A-Aktivität von SQL Server.

  • Transaktionsdurchsatz der Instanz während der Verarbeitung von Transaktionen

Der Transaktionsleistungssammler zeichnet alle 15 Minuten Daten auf. Um aussagekräftige Ergebnisse zu erhalten, führen Sie den Transaktionsleistungssammler mindestens eine Stunde lang aus. Optimale Ergebnisse erhalten Sie, indem Sie den Transaktionsleistungssammler so lange ausführen, bis ausreichend Daten für Ihre primäre Szenarien erfasst wurden. Generieren Sie erst einen Transaktionsleistungsanalysebericht, nachdem Sie die Datensammlung abgeschlossen haben.

Konfigurieren Sie den Transaktionsleistungssammler so, dass er auf Ihrem SQL Server instance in der Produktion ausgeführt wird, und sammeln Sie die Daten auf einem SQL Server instance in Ihrer Entwicklungsumgebung (Testumgebung), um einen minimalen Mehraufwand sicherzustellen. Informationen zum Speichern von Daten in einer Verwaltungs- Data Warehouse-Datenbank auf einem Remote-SQL Server instance finden Sie unter Konfigurieren der Datensammlung in einer Remote-SQL Server-Instanz.

Auswirkungen auf die Leistung

Der Transaktionsleistungssammler besteht aus zwei Datensammlungssätzen:

  • Analyse der Tabellenverwendung

  • Analyse gespeicherter Prozeduren

Mit den Sammlungssätzen werden in Abständen von 15 Minuten Daten aus drei dynamischen Verwaltungssichten (DMVs) gesammelt. Anschließend werden die Daten in die als Verwaltungs-Data Warehouse konfigurierte Datenbank hochgeladen. Das Hochladen der gesammelten Daten wirkt sich nur minimal auf die Leistung aus.

Verwenden des Transaktionsleistungssammlers

Die folgenden Schritte erfordern SQL Server Management Studio in SQL Server 2019 (15.x).

Wichtig

Ändern Sie das Schema während der Profilerstellung nicht (beispielsweise durch Hinzufügen oder Entfernen von Datenbanken oder Erstellen oder Löschen von Tabellen). Wenn Sie das Schema einer Datenbank ändern, während Daten gesammelt werden, wird die Datenbank möglicherweise nicht korrekt in den Bericht eingeschlossen.

Konfigurieren des Verwaltungs-Data Warehouse

Das Verwaltungs-Data Warehouse muss für den Transaktionsleistungssammler konfiguriert sein.

Die Version des SQL Server instance, für die Sie Daten sammeln (Profil), sollte dieselbe Version oder älter sein als die SQL Server, in der die Verwaltung Data Warehouse konfiguriert ist.

  1. Erweitern Sie im Objekt-Explorer den Knoten Verwaltung.

  2. Klicken Sie mit der rechten Maustaste auf Datensammlung, und wählen Sie Aufgaben und dann Verwaltung Data Warehouse konfigurieren aus. Der Assistent zum Konfigurieren von Verwaltungs- Data Warehouse beginnt.

  3. Klicken Sie auf Weiter, um die Datenbank auszuwählen, die als Verwaltungs-Data Warehouse fungiert.

  4. Klicken Sie auf Neu , um eine neue Datenbank zu erstellen, die die Profildaten enthält. Nachdem Sie die Datenbank erstellt haben, klicken Sie im Assistenten auf Weiter .

  5. Im nächsten Schritt des Assistenten können Sie Benutzer und Anmeldenamen hinzufügen. Sie können Anmeldenamen Rollenmitgliedschaften für die MDW-Instanz zuordnen. Dies ist nicht erforderlich, um Daten von der lokalen Instanz zu sammeln. Wenn Sie keine Daten von der lokalen Instanz sammeln, können Sie die die Mitgliedschaft in der Datenbankrolle mdw_admin dem Konto erteilen, das Transaktionen ausführt, die zur Profilerstellung verwendet werden. Klicken Sie anschließend auf Weiter.

  6. Stellen Sie sicher, dass SQL Server-Agent ausgeführt wird.

  7. Klicken Sie auf dem nächsten Bildschirm auf Fertig stellen , um den Assistenten zu beenden.

Konfigurieren der Datensammlung auf einer lokalen SQL Server-Instanz

Für die Datensammlung muss SQL Server-Agent gestartet werden. Sie müssen auf einem Server nur einen Datensammler konfigurieren.

Ein Datensammler kann für eine SQL Server Version 2012 oder höher von SQL Server konfiguriert werden.

So konfigurieren Sie die Datensammlung für Uploads in eine als Verwaltungs-Data Warehouse konfigurierte Datenbank auf derselben Instanz

  1. Erweitern Sie in Objekt-Explorerdie Option Verwaltung.

  2. Klicken Sie mit der rechten Maustaste auf Datensammlung, wählen Sie Aufgaben und dann Datensammlung konfigurieren aus. Der Assistent zum Konfigurieren der Datensammlung beginnt.

  3. Klicken Sie auf Weiter , um die Datenbank auszuwählen, die die Profildaten sammelt.

  4. Wählen Sie die aktuelle SQL Server instance und eine Verwaltungsdatenbank Data Warehouse auf diesem instance aus.

  5. Wählen Sie im Feld Datensammlersätze auswählen, die Sie aktivieren möchten, die Option Transaktionsleistungssammlungssätze aus. Klicken Sie, sobald Sie fertig sind, auf Weiter.

  6. Überprüfen Sie die Auswahl. Klicken Sie auf Zurück , um die Einstellungen zu ändern. Klicken Sie auf Fertig stellen , wenn Sie fertig sind.

Konfigurieren der Datensammlung für eine SQL Server-Remoteinstanz

Die Datensammlung erfordert, dass SQL Server-Agent auf dem instance gestartet wird, der die Daten sammelt.

Ein Datensammler kann für eine SQL Server Version 2012 oder höher von SQL Server konfiguriert werden.

Sie benötigen einen SQL Server-Agent Proxy, der mit den richtigen Anmeldeinformationen für einen Datensammler eingerichtet ist, um Daten in eine Verwaltungs- Data Warehouse-Datenbank auf einer instance hochzuladen, die sich von der Position unterscheidet, in der Transaktionen profiliert werden. Um einen SQL Server-Agent-Proxy zu aktivieren, müssen Sie zunächst Anmeldeinformationen mit einer domänenaktivierten Anmeldung einrichten. Der domänenaktivierte Anmeldename muss Mitglied der Gruppe mdw_admin für die Datenbank des Verwaltungs-Data Warehouse sein. Informationen zum Erstellen von Anmeldeinformationen finden Sie unter Vorgehensweise: Erstellen von Anmeldeinformationen (SQL Server Management Studio).

So konfigurieren Sie die Datensammlung für Uploads in eine als Verwaltungs-Data Warehouse konfigurierte Datenbank auf einer anderen Instanz

  1. Erweitern Sie auf der instance, die die datenträgerbasierten Objekte enthält, die Sie zu In-Memory OLTP migrieren möchten, den Knoten Verwaltung in Objekt-Explorer.

  2. Klicken Sie mit der rechten Maustaste auf Datensammlung , und wählen Sie Aufgaben und dann Datensammlung konfigurieren aus. Der Assistent zum Konfigurieren der Datensammlung beginnt.

  3. Klicken Sie auf Weiter , um die Datenbank auszuwählen, die die Profildaten sammelt.

  4. Stellen Sie sicher, dass auf dem anderen SQL Server instance eine Verwaltungsdatenbank Data Warehouse vorhanden ist.

  5. Wählen Sie in diesem instance eine andere SQL Server instance und eine Verwaltungsdatenbank Data Warehouse aus.

    Die Version des SQL Server instance, für die Sie Daten sammeln (Profil), sollte dieselbe Version oder älter sein als die SQL Server, in der die Verwaltung Data Warehouse konfiguriert ist.

  6. Wählen Sie im Feld Datensammlersätze auswählen, die Sie aktivieren möchten, die Option Transaktionsleistungssammlungssätze aus.

  7. Wählen Sie Verwenden eines SQL Server-Agent-Proxys für Remoteuploads aus.

  8. Klicken Sie, sobald Sie fertig sind, auf Weiter.

  9. Wählen Sie den Proxy aus.

    Wenn Sie einen neuen SQL Server-Agent Proxy erstellen möchten,

    1. Klicken Sie auf Neu , um das Dialogfeld Neues Proxykonto anzuzeigen.

    2. Geben Sie im Dialogfeld Neues Proxykonto den Namen des Proxys ein, wählen Sie die Anmeldeinformationen aus, und geben Sie optional eine Beschreibung ein. Klicken Sie dann auf Prinzipale.

    3. Klicken Sie auf Hinzufügen , und wählen Sie Msdb-Rolle aus.

    4. Wählen Sie aus, dc_proxy und klicken Sie auf OK. Klicken Sie dann erneut auf OK.

    Nachdem der richtige Proxy ausgewählt wurde, klicken Sie auf Weiter.

  10. Um Systemsammlungssätze zu konfigurieren, aktivieren Sie Systemsammlungssätze , und klicken Sie auf Weiter.

  11. Überprüfen Sie die Auswahl. Klicken Sie auf Zurück , um die Einstellungen zu ändern. Clicck Finish , wenn sie fertig ist.

Datensammlungssätze sollten jetzt konfiguriert sein und auf Ihrer Instanz ausgeführt werden.

Generieren von Berichten

Sie können Berichte zur Transaktionsleistungsanalyse generieren, indem Sie mit der rechten Maustaste auf die Datenbank des Verwaltungs-Data Warehouse klicken und Berichte, dann Verwaltung Data Warehouse und dann Übersicht über die Transaktionsleistungsanalyse auswählen.

Im Bericht werden Informationen über alle Benutzerdatenbanken auf dem Arbeitsauslastungsserver gesammelt. Wenn sich die MDW-Datenbank (Verwaltungs-Data Warehouse) auf dem lokalen Computer befindet, werden die MDW-Datenbank(en) im Bericht aufgeführt.

Eine gespeicherte Prozedur mit hoher CPU-Zeit im Verhältnis zur verstrichenen Zeit ist ein Kandidat für die Migration. Der Bericht zeigt alle Tabellenverweise an, da systemintern kompilierte gespeicherte Prozeduren nur auf speicheroptimierte Tabellen verweisen können. Das kann den Migrationsaufwand weiter erhöhen.

Der Detailbericht für eine Tabelle umfasst drei Abschnitte:

  • Abschnitt zur Scanstatistik

    Dieser Abschnitt enthält eine einzelne Tabelle mit den Statistiken, die zu Scans für die Datenbanktabelle gesammelt wurden. Folgende Spalten sind enthalten:

    • Prozent der Gesamtzahl der Zugriffe. Der Prozentsatz der Scans und Suchvorgänge für diese Tabelle im Verhältnis zur Aktivität für die gesamte Datenbank. Je höher der Prozentsatz, desto stärker wird die Tabelle im Vergleich zu anderen Tabellen in der Datenbank verwendet.

    • Statistik zu Suchläufen/Bereichsscans. In dieser Spalte wird die Anzahl der Punktsuchen und Bereichsscans (Indexscans und Tabellenscans) aufgeführt, die während der Profilerstellung für die Tabelle durchgeführt wurden. Der Durchschnitt je Transaktion beruht auf einer Schätzung.

    • Interop-Zunahme und systemeigene Zunahme. Diese Spalten enthalten Schätzungen des Leistungszuwachses, der bei einer Punktsuche oder einem Bereichsscan erzielt werden könnte, wenn die Tabelle in eine speicheroptimierte Tabelle konvertiert wird.

  • Abschnitt zur Konfliktstatistik

    Dieser Abschnitt enthält eine Tabelle mit den Konflikten für die Datenbanktabelle. Weitere Informationen zu Datenbanklatches und -sperren finden Sie unter Sperrarchitektur. Es gibt folgende Spalten:

    • Prozent der Gesamtwartevorgänge. Der Prozentsatz der Latch- und Sperrenwartevorgänge für diese Datenbanktabelle im Verhältnis zur Aktivität für die Datenbank. Je höher der Prozentsatz, desto stärker wird die Tabelle im Vergleich zu anderen Tabellen in der Datenbank verwendet.

    • Latchstatistik. In diesen Spalten wird die Anzahl der Latchwartevorgänge bei Abfragen, die diese Tabelle betreffen, aufgeführt. Informationen zu Latches finden Sie unter Latching. Je höher diese Zahl ist, desto mehr Latchkonflikte treten für die Tabelle auf.

    • Sperrenstatistik. In dieser Gruppe von Spalten wird die Anzahl der Sperrenerhalt- und -wartevorgänge für Seiten bei Abfragen, die diese Tabelle betreffen, aufgeführt. Weitere Informationen zu Sperren finden Sie unter Grundlegendes zu Sperren in SQL Server. Je höher die Anzahl der Wartevorgänge ist, desto mehr Sperrenkonflikte treten für die Tabelle auf.

  • Abschnitt zu Migrationsproblemen

    Dieser Abschnitt enthält eine Tabelle, die angibt, wie schwierig es ist, diese Datenbanktabelle in eine speicheroptimierte Tabelle zu konvertieren. Je höher die Schwierigkeitsbewertung, desto schwieriger ist die Konvertierung der Tabelle. Um Details zum Konvertieren dieser Datenbanktabelle anzuzeigen, verwenden Sie den Speicheroptimierungsratgeber.

Scan- und Konfliktstatistiken für den Tabellendetailsbericht werden aus sys.dm_db_index_operational_stats (Transact-SQL) gesammelt und aggregiert.

Der Detailbericht für eine gespeicherte Prozedur umfasst zwei Abschnitte:

  • Abschnitt zur Ausführungsstatistik

    Dieser Abschnitt enthält eine Tabelle mit den Statistiken, die zur Ausführung der gespeicherten Prozedur gesammelt wurden. Es gibt folgende Spalten:

    • Cachezeit. Die Zwischenspeicherungsdauer des Ausführungsplans. Wenn die gespeicherte Prozedur aus dem Plancache entfernt und wieder hinzugefügt wird, werden Zeiten für jeden Cache angegeben.

    • Gesamte CPU-Zeit. Die gesamte CPU-Zeit, die die gespeicherte Prozedur während der Profilerstellung genutzt hat. Je höher diese Zahl ist, desto mehr CPU-Leistung hat die gespeicherte Prozedur genutzt.

    • Gesamtausführungszeit. Die Gesamtdauer der Ausführungszeit, die die gespeicherte Prozedur während der Profilerstellung genutzt hat. Je höher die Differenz zwischen dieser Zahl und der CPU-Zeit ist, desto weniger effizient nutzt die gespeicherte Prozedur die CPU.

    • Cachefehler gesamt. Die Anzahl der Cachefehler (Lesevorgänge aus dem physischen Speicher), die durch die Ausführung der gespeicherten Prozedur während der Profilerstellung verursacht wurden.

    • Ausführungsanzahl. Gibt an, wie oft diese gespeicherte Prozedur während der Profilerstellung ausgeführt wurde.

  • Abschnitt zu Tabellenverweisen

    Dieser Abschnitt enthält eine Tabelle mit den Tabellen, auf die diese gespeicherte Prozedur verweist. Vor dem Konvertieren der gespeicherten Prozedur in eine systemintern kompilierte gespeicherte Prozedur müssen alle diese Tabellen in speicheroptimierte Tabellen konvertiert werden, und sie müssen auf demselben Server und in derselben Datenbank verbleiben.

Ausführungsstatistiken für den Detailbericht der gespeicherten Prozedur werden aus sys.dm_exec_procedure_stats (Transact-SQL) gesammelt und aggregiert. Die Verweise werden aus sys.sql_expression_dependencies (Transact-SQL) abgerufen.

Um Details zum Konvertieren einer gespeicherten Prozedur in eine nativ kompilierte gespeicherte Prozedur anzuzeigen, verwenden Sie den Native Compilation Advisor.

Weitere Informationen

Migrieren zu In-Memory OLTP