Replikatstabellen implementieren

Objective

After completing this lesson, you will be able to verbessern Sie die Performance mit Replikaten.

Replikatstabellen

Wir haben gelernt, wie Sie für Ihre Daten zwischen Virtualisierung und Replikation wählen können. Aber was ist, wenn Sie sich entscheiden, mit der Virtualisierung zu beginnen, aber später möglicherweise aufgrund einer schlechten Performance zur Replikation wechseln möchten?

Zunächst kann das Anlegen eines Berichts auf der Grundlage einer virtuellen Tabelle eine gute Option sein, da dieser Ansatz eine schnelle Implementierung und eine einfache Wartung unterstützt.

Die Folie zeigt einen Bericht, der für eine virtuelle Tabelle ausgeführt wird.

In einigen Situationen kann die Replikation der Remote-Daten in das lokale SAP-HANA-System jedoch eine bessere Query-Performance bieten als der Zugriff auf die Daten in einer Remote-Tabelle. Sie könnten also erwägen, den Virtualisierungsansatz aufzugeben und einen Replikationsansatz erneut zu implementieren.

Das Problem beim Wechseln des Datenbereitstellungsansatzes besteht jedoch darin, dass Sie alle Anwendungen so anpassen müssen, dass sie auf die neue Zieltabelle verweisen, in die die replizierten Daten geladen werden. Dadurch werden Transport- und Testaufgaben generiert, die Sie möglicherweise nicht belasten möchten.

Die Lösung für dieses Szenario besteht darin, Replikatstabellen zu implementieren. Dies ist eine Funktion der Datenreplikation.

Die Folie zeigt einen Bericht, der für eine replizierte Tabelle ausgeführt wird.

Eine Replikattabelle befindet sich neben einer virtuellen Tabelle und hat die gleiche Struktur. Die Replikatstabelle erfasst und speichert die Daten in Echtzeit.

Auf dieser Folie wird ein Bericht verglichen, der mit einer virtuellen Tabelle und einer replizierten Tabelle ausgeführt wird.

Die Hauptfunktion der Implementierung einer Replikatstabelle ist ein Schalter, mit dem Sie einfach zwischen der virtuellen Tabelle und der Replikatstabelle wechseln können. Das bedeutet, dass Sie zur Replikatstabelle wechseln können, wenn die Performance abnimmt, und wieder zurückwechseln können, wenn sich die Performance verbessert.

Wann umschalten?

Sie können problematische Remote-Abfragen und Fälle leicht identifizieren, in denen es sinnvoll sein kann, mit zwei Überwachungs-Views umzuschalten:

  • M_EXPENSIVE_STATEMENTS
  • M_REMOTE_STATEMENTS

Wenn die Ausführungszeit einer SQL-Anweisung, die für eine virtuelle Tabelle ausgeführt wird, einen bestimmten Schwellenwert überschreitet, ist sie in der Monitoring-View M_EXPENSIVE_STATEMENTS enthalten.

Die gemeinsamen Felder in der Monitoring-View M_EXPENSIVE_STATEMENTS und der Monitoring-View M_REMOTE_STATEMENTS können verwendet werden, um die Remote-Abfragen langsamer SQL-Anweisungen und somit die virtuellen Tabellen zu finden, die von einem Wechsel zu einem Replikat profitieren würden.

Replikatstabellendefinition

Um zwischen replizierten Daten und der virtuellen Tabelle zu wechseln, muss der virtuellen Tabelle eine entsprechende Replikatstabelle hinzugefügt werden.

Nachfolgend finden Sie einige Merkmale von Replikatstabellen:

  • Jede virtuelle Tabelle kann nur eine Replikattabelle haben.
  • Eine Replikatstabelle wird in Echtzeit aktualisiert, wenn die Quelltabelle aktualisiert wird.

    Die Echtzeitreplikation wird nur für Remote-Quellen unterstützt, die die Änderungsdatenerfassung in Echtzeit (CDC) unterstützen.

    Andernfalls können Sie von Zeit zu Zeit Daten in die Tabelle laden. Ihr Replikat wäre dann ein Snapshot-Replikat.

  • Replikatstabellen werden automatisch generiert und in einem internen Schema gespeichert, das von einem internen Benutzer verwaltet wird. Sie sind hinter den Kulissen verborgen.

Notiz

Es gibt eine Funktion namens Benutzereigene Replikattabellen, die Änderungen an der Replikattabellenstruktur ermöglichen würde (z.B. zum Hinzufügen einer Partitionierung, um die Query-Performance der Replikattabelle zu verbessern).

Diese Art von Replikatstabelle wird in einem Benutzerschema angelegt, sodass sie geändert werden kann.

Zu Replikat und zurück zu virtueller Tabelle wechseln

  • Um ein Replikat zu einer virtuellen Tabelle hinzuzufügen, führen Sie die folgende Anweisung aus:
    Code Snippet
    12
    ALTER VIRTUAL TABLE <virtual_table_name> ADD SHARED [SNAPSHOT] REPLICA;
  • Um wieder direkt auf die virtuelle Tabelle zuzugreifen, müssen Sie entweder:
    • Verwenden Sie für eine bestimmte Abfrage einen HINT, um den Lesemodus zu überschreiben, sodass Sie die virtuelle Tabelle und nicht das Replikat verwenden.

      Code Snippet
      12
      SELECT * FROM <virtual_table_name> WITH HINT(NO_VIRTUAL_TABLE_REPLICA);

      Oder verwenden Sie eine SET-Anweisung, bevor Sie die Query ausführen.

      Code Snippet
      12
      SET 'VIRTUAL_TABLE_REPLICA' = 'FALSE'; SELECT * FROM <virtual_table_name>;

    • Deaktivieren Sie das Replikat vorübergehend mit einer ALTER-Anweisung.

      Code Snippet
      1
      ALTER VIRTUAL TABLE <virtual_table_name> DISABLE REPLICA;

      Sie kann dann später wieder aktiviert werden. (Ersetzen Sie DISABLE durch ENABLE).

    • Löschen Sie das Replikat mit einem DROP-Befehl.

      Code Snippet
      12
      ALTER VIRTUAL TABLE <virtual_table_name> DROP REPLICA;

Sie haben das Ende dieses Kapitels erreicht und die verschiedenen Ansätze für die Replikation von Daten kennengelernt.