Effizientes Anweisungsrouting verwenden, indem ProxySQL in Autonomous Database aktiviert wird
Mit ProxySQL können Sie auf mehrere autonome Datenbanken zugreifen, indem Sie Anweisungen für DML und Abfragen weiterleiten. Außerdem müssen Sie nicht alle Daten physisch in einer einzigen Datenbank konsolidieren.
Themen
- Effizientes Anweisungsrouting mit ProxySQL in Autonomous Database
ProxySQL in Autonomous Database ermöglicht die Verwendung mehrerer Autonomous Database-Instanzen und erleichtert den Zugriff auf und die Analyse von Daten, als ob sie an nur einem Ort gespeichert wären. - Wo Anweisungsrouting mit ProxySQL Anwendungsvorteile bereitstellen kann
Das Anweisungsrouting mit ProxySQL ist am effektivsten, wenn jede SQL-Anweisung mit Mappings auf Schema- oder Objektebene einer einzelnen Autonomous Database-Zielinstanz deterministisch zugeordnet werden kann. - Anweisungsrouting aktivieren und Schemazuordnung definieren
In diesem Abschnitt wird erläutert, wie Sie ProxySQL für das automatische Anweisungsrouting von einem Haupt-Router zu einer oder mehreren Zieldatenbankinstanzen einrichten. - Anweisungen über ProxySQL weiterleiten
Um das automatische Anweisungsrouting zu nutzen, müssen Sie eine Verbindung herstellen und Ihre Anweisungen an die Routerinstanz weiterleiten, die von ProxySQL verwaltet wird. - Routinganweisungen zu einer Zielinstanz stoppen
Führen Sie diese Schritte in einer Autonomous Database-Zielinstanz aus, um zu verhindern, dass sie geroutete Anweisungen vom ProxySQL-Router akzeptiert. - Schema- oder Objektzuordnung aus Router-Instanz entfernen
Führt die Schritte zum Entfernen einer bestimmten Zuordnung aus der Router-Datenbank bereit, die von ProxySQL verwaltet wird. - Anweisungsrouting deaktivieren
Zeigt die Schritte zum automatischen Anweisungsrouting an, indem ProxySQL deaktiviert wird. - Automatisches Anweisungsrouting mit ProxySQL-Hinweisen
Listet Einschränkungen und wichtige Hinweise zum automatischen Anweisungsrouting auf, wenn ProxySQL aktiviert ist.
Übergeordnetes Thema: Elastische Pools in Autonomous Database verwenden und verwalten
Effizientes Anweisungsrouting mit ProxySQL in Autonomous Database
ProxySQL auf Autonomous Database ermöglicht Ihnen die Verwendung mehrerer Autonomous Database-Instanzen und erleichtert den Zugriff auf und die Analyse von Daten, als ob sie an nur einem Ort gespeichert wären.
Sie können ProxySQL verwenden, wenn Sie mit einem umfangreichen Setup arbeiten müssen, das mehrere autonome Datenbanken umfasst. Mit ProxySQL erhalten Sie einheitlichen Zugriff auf verschiedene Datenbanken, und es ist nicht mehr erforderlich, Daten physisch an einen Ort zu verschieben.
Wenn Sie ProxySQL aktivieren, geben Sie eine Autonomous Database-Instanz als Routerinstanz und eine oder mehrere Autonomous Database-Instanzen als Zielinstanzen an. Die Router-Instanz enthält eine Routing-Tabelle, die bestimmt, wie eine Anweisung an eine oder mehrere Zielinstanzen verteilt (zugeordnet) wird. Eine Zielinstanz enthält eine Akzeptanztabelle. Die Akzeptanztabelle ähnelt der Routing-Tabelle und enthält Einträge, die angeben, dass die Instanz Anweisungsumleitungen vom Router akzeptiert.
Je nach gewählter Routing-Methode werden Anweisungen automatisch von der Router-Instanz einer oder mehreren Zielinstanzen zugeordnet. Eine Anwendung stellt eine Verbindung zur Routerinstanz her und wird auf der Routerinstanz ausgeführt. Autonomous Database leitet Anweisungen zu einer oder mehreren Zielinstanzen um.
Im Folgenden sind einige der Vorteile der Aktivierung von ProxySQL im Vergleich zur Verwendung einer einzelnen sehr großen Autonomous Database aufgeführt:
-
ProxySQL bietet Datenbankautonomie und Unabhängigkeit für Vorgänge wie Lebenszyklusmanagement und Admin-Aufgaben. Beispiel: Mit ProxySQL werden Datenbankvorgänge, einschließlich Backup und Restore, und Features wie Autonomous Data Guard unabhängig in jeder Autonomous Database-Instanz verwaltet.
-
Mit ProxySQL können Sie sehr große Datenbanken effizient verwalten, indem Sie Daten auf mehrere Autonomous Database-Instanzen aufteilen.
Wenn Sie mit ProxySQL arbeiten, müssen Sie mehrere Begriffe kennen:
Routerinstanz: Wenn Sie ProxySQL aktivieren, wird eine Routerinstanz angegeben. Eine Routing-Tabelle bestimmt, wie eine Anweisung an eine oder mehrere Zielinstanzen verteilt (zugeordnet) wird. Je nach angegebener Routingmethode werden Anweisungen aus der Routerinstanz automatisch einer oder mehreren Zielinstanzen zugeordnet.
Zielinstanz: Die Zielinstanz wird angegeben, wenn Sie eine Zuordnung auf der Routerinstanz erstellen. Auf jeder Zielinstanz wird eine Akzeptanztabelle hinzugefügt.
Routing-Tabelle: Eine Routing-Tabelle enthält Ziel-Mapping-Einträge, die angeben, an welche Instanz Anweisungen automatisch weitergeleitet werden.
Akzeptanztabelle: Eine Akzeptanztabelle enthält Einträge, die angeben, dass die Instanz Anweisungsumleitungen vom Router akzeptiert.
Voraussetzungen für die Verwendung von ProxySQL
Die folgenden Anforderungen gelten für ProxySQL:
-
Die Aktivierung von ProxySQL wird nur für Autonomous Database-Instanzen unterstützt, die sich in einem elastischen Pool befinden. Die Routerinstanz und alle Zielinstanzen müssen Mitglieder desselben elastischen Pools sein.
-
Die Routerinstanz und alle Zielinstanzen müssen sich in derselben Region befinden.
-
Die Metadaten für die Objekte, die Sie weiterleiten, müssen auf Router- und Zielinstanzen übereinstimmen. Der Anwendungsdesigner ist dafür verantwortlich, dass die Metadaten für Objekte, die in einer Zielinstanz vorhanden sind, auch in der Routerinstanz vorhanden sind. Beispiel: Wenn in der Zielinstanz eine Tabelle mit dem Namen
EMPLOYEES
vorhanden ist, muss in der Routerinstanz auch eine Tabelle mit übereinstimmenden Metadaten mit dem NamenEMPLOYEES
vorhanden sein. Die Tabelle in der Routerinstanz muss nicht leer sein (nur Metadaten).
Empfehlung zum Aktivieren von ProxySQL
Die Instanzen, die Sie als Router und als Ziele hinzufügen, können einen beliebigen Autonomous Database-Workload-Typ aufweisen. Wenn Einträge in der Routing-(Mapping-)Tabelle vorhanden sind, werden Anweisungen zu Objekten, die in diesen Einträgen angegeben sind, ungeachtet des Workload-Typs des Ziels an die entsprechenden Zielinstanzen weitergeleitet. Oracle empfiehlt, dass alle Autonomous Database-Instanzen den Data Warehouse-Workload-Typ verwenden.
Automatic Statement Routing mit aktiviertem ProxySQL
Mit ProxySQL können Sie Anweisungen mit einer der unterstützten Routingmethoden auf Ziele verteilen.
Unabhängig von der Routingmethode (Zuordnung), die Sie verwenden möchten, ist der Anwendungsschemadesigner dafür verantwortlich, sicherzustellen, dass Metadaten für Objekte, die in einer Zielinstanz platziert sind, auch in der Routerinstanz verfügbar sind. Beispiel: Wenn in der Zielinstanz eine Tabelle mit dem Namen
EMPLOYEES
vorhanden ist, muss in der Routerinstanz auch eine Tabelle mit übereinstimmenden Metadaten mit dem Namen EMPLOYEES
vorhanden sein. Die Tabelle in der Routerinstanz muss nicht leer sein.
-
Routing auf Schemaebene: Alle Objekte eines Schemas werden einer einzelnen Zielinstanz zugeordnet. Sie können einer einzelnen Zielinstanz mehrere Schemas zuordnen. Die Anweisungen für ein Schema können jedoch nicht über mehrere Zielinstanzen hinweg zugeordnet werden. Das bedeutet, dass dasselbe Schema nicht sowohl für das Schema- als auch für das Objektrouting verwendet werden kann.
Um Routing auf Schemaebene anzugeben, rufen Sie die Prozedur
DBMS_PROXY_SQL.ADD_MAPPING
auf, wobei derobject_name
-Parameter auf den Wert "*" gesetzt ist.
Beschreibung der Abbildung proxysql_schema.pngIn diesem Beispiel sind die Metadaten für Objekte in Schema A sowohl in Ziel-Autonomous Database 1 als auch in der Routerinstanz vorhanden. Die Metadaten für Objekte in Schema B sind sowohl in Ziel-Autonomous Database 2 als auch in der Routerinstanz usw. vorhanden.
-
Routing auf Objektebene: Objekte in einem Schema werden über mehrere Zielinstanzen hinweg zugeordnet.
Um das Routing auf Objektebene anzugeben, rufen Sie die Prozedur
DBMS_PROXY_SQL.ADD_MAPPING
auf, wobei derobject_name
-Parameter auf einen Tabellennamen gesetzt ist.
Beschreibung der Abbildung proxysql_object.pngIn diesem Beispiel sind die Metadaten für Tabelle A sowohl in Ziel 1 als auch in der Routerinstanz vorhanden, und die Metadaten für Tabelle B sind sowohl in Ziel 2 als auch in der Routerinstanz usw. vorhanden.
-
Hybrid-Routing: Objekte eines Schemas werden mit einer Kombination aus Routing auf Schemaebene und Routing auf Objektebene weitergeleitet.
Beschreibung der Abbildung proxysql_hybrid.pngIn diesem Beispiel sind die Metadaten für Schema A sowohl in Ziel-Autonomous Database 1 als auch in der Routerinstanz vorhanden. Die Metadaten für Tabelle B (in Schema B) sind sowohl in Ziel-Autonomous Database 2 als auch in der Routerinstanz usw. vorhanden.
Servicezuordnung mit automatischer Auszugsweiterleitung, wenn ProxySQL aktiviert ist
Wenn die Routing-Tabelle eine Zuordnung zu einer Zieldatenbank angibt, wird für den Datenzugriff in der Zieldatenbank derselbe Service verwendet, bei dem Sie mit der Router-Datenbank verbunden sind.
Beispiel: Wenn eine Session mit dem HIGH-Service auf der Routerinstanz verbunden ist, verwendet ein an eine Zielinstanz geroutetes Anweisungs- oder Anweisungsfragment auch den HIGH-Service. Wenn eine Sitzung mit dem MEDIUM-Dienst auf der Routerinstanz verbunden ist, verwendet eine an eine Zielinstanz weitergeleitete Anweisung den MEDIUM-Dienst.
Wenn der für die Verbindung mit der Routerinstanz verwendete Service auf einer Zielinstanz nicht verfügbar ist, verwendet das an die Zielinstanz weitergeleitete Anweisungs- oder Anweisungsfragment den MEDIUM-Service (die verfügbaren Services hängen vom Workload-Typ von Autonomous Database ab).
Wo das Anweisungs-Routing mit ProxySQL Anwendungsvorteile bieten kann
Das Anweisungsrouting mit ProxySQL ist am effektivsten, wenn jede SQL-Anweisung mit Mappings auf Schema- oder Objektebene einer einzelnen Autonomous Database-Zielinstanz deterministisch zugeordnet werden kann.
Wenn jede SQL-Anweisung einem einzelnen Ziel deterministisch zugeordnet werden kann und Sie das Anweisungsrouting aktivieren, wird die Arbeit dort ausgeführt, wo sich die referenzierten Objekte befinden. Dieses Muster ist in Bezug auf die Abfrageperformance für die folgenden Datenbankarchitekturen von Vorteil:
-
Mandanten pro Schema/Datenbanklayouts
-
Regionale Partitionen
-
Domaingrenzen löschen (Beispiel:
INVENTORY
undBILLING
)
Wenn Sie das Anweisungsrouting mit ProxySQL verwenden, können Sie sehr große Objekte hinter einer einzelnen Autonomous Database-Zielinstanz skalieren, ohne Daten physisch zu konsolidieren.
Wenn Ihre Analysen erfordern, dass Sie Objekte, die verschiedenen Zieldatenbanken zugeordnet sind, in einer einzelnen Ad-hoc-Abfrage kombinieren, sollten Sie ergänzende Ansätze verwenden, anstatt sich auf das Anweisungsrouting mit ProxySQL zu verlassen. Ergänzende alternative Ansätze umfassen:
- Voraggregation oder Materialized Views verwenden
- Jobs pro Ziel mit einem Zusammenführungsschritt verwenden
- Reporting Store verwenden
Im Folgenden wird ein Fall beschrieben, in dem das Anweisungsrouting geeignet ist, und ein Fall, in dem die Verwendung des Anweisungsrouting nicht geeignet ist:
-
Ein gutes Beispiel: Eine mehrmandantenfähige SaaS-Anwendung, bei der die Anwendung die
tenant_id
enthält und das Schema jedes Mandanten seiner eigenen Autonomous Database-Zielinstanz zugeordnet wird (Mapping auf Schemaebene mitobject_name => '*'
). In diesem Fall wird jede Anforderung für einen Mandanten transparent über die Mapping-Tabelle des Routers an das richtige Ziel weitergeleitet. -
Ein Beispiel, das nicht geeignet ist: Ein Dashboard der obersten Ebene, das eine SQL-Anweisung ausgibt, die Daten für "alle Mandanten auf einmal" verknüpft, wenn diese Mandanten verschiedenen Zielen zugeordnet sind. Da beim Anweisungsrouting Anweisungen/Objekte bestimmten Zielen zugeordnet werden, eignet sich eine Anwendung oder ein Bericht mit einem Cross-Target Join nicht für das Anweisungsrouting. Bei diesem Anwendungstyp müssen Sie mehrere Abfragen pro Ziel ausführen und die Ergebnisse zusammenführen oder stattdessen einen konsolidierten Berichtsbereich eingeben.
Anweisungsweiterleitung aktivieren und Schemazuordnung definieren
In diesem Abschnitt wird erläutert, wie Sie ProxySQL für das automatische Anweisungsrouting von einem Haupt-Router zu einer oder mehreren Zieldatenbankinstanzen einrichten.
- Anweisungsrouting aktivieren und Objektzuordnung von Router zu Zielinstanzen definieren
Um Anweisungsrouting einzurichten, aktivieren Sie ProxySQL auf der Routerinstanz und definieren das Schema oder die Objekte, deren Anweisungen Zieldatenbanken zugeordnet (gesendet) werden. - Anweisungsrouting auf Zielinstanzen akzeptieren
Sie müssen das Anweisungsrouting auf einer Zielinstanz akzeptieren, um die Zuordnung von der Routerinstanz zuzulassen.
Anweisungsrouting aktivieren und Objektzuordnung von Router zu Zielinstanzen definieren
Um das Anweisungsrouting einzurichten, aktivieren Sie ProxySQL auf der Routerinstanz und definieren das Schema oder die Objekte, deren Anweisungen Zieldatenbanken zugeordnet (gesendet) werden.
Folgende Voraussetzungen sind erforderlich, um das automatische Anweisungs-Routing zu aktivieren:
-
Erstellen Sie die Autonomous Database-Instanz, die Sie für die Routerinstanz verwenden möchten, oder identifizieren Sie eine vorhandene Autonomous Database-Instanz als Routerinstanz.
-
Erstellen Sie die Zielinstanzen, oder identifizieren Sie die Zielinstanzen aus vorhandenen Autonomous Database-Instanzen.
-
Stellen Sie sicher, dass die Routerinstanz und jede Zielinstanz, in die Sie Abfragen umleiten, übereinstimmende Metadaten für alle Objekte aufweisen, die Sie vom Router einem Ziel zuordnen.
Unabhängig von der Routingmethode (Zuordnung), die Sie verwenden möchten, ist der Anwendungsschemadesigner dafür verantwortlich, sicherzustellen, dass Metadaten für Objekte, die in einer Zielinstanz platziert sind, auch in der Routerinstanz verfügbar sind. Beispiel: Wenn in der Zielinstanz eine Tabelle mit dem Namen
EMPLOYEES
vorhanden ist, muss in der Routerinstanz auch eine Tabelle mit übereinstimmenden Metadaten mit dem NamenEMPLOYEES
vorhanden sein. Die Tabelle in der Routerinstanz muss nicht leer sein. -
Bestimmen Sie anhand der verfügbaren Optionen den Typ der Anweisungsweiterleitung, die Sie verwenden möchten: Routing auf Schemaebene, Routing auf Objektebene oder Hybridrouting.
So aktivieren Sie das automatische Anweisungs-Routing und fügen der Routing-Tabelle Ziel-Mapping-Einträge hinzu:
Sie können die Ansicht DBA_PROXY_SQL_MAPPINGS
abfragen, um die Datensätze in der Routing-Tabelle aufzulisten. Weitere Informationen finden Sie in der Ansicht DBA_PROXY_SQL_MAPPINGS.
Übergeordnetes Thema: Anweisungsrouting aktivieren und Schemazuordnung definieren
Auszugsweiterleitung in Zielinstanzen akzeptieren
Sie müssen das Anweisungsrouting auf einer Zielinstanz akzeptieren, um die Zuordnung von der Routerinstanz zuzulassen.
So lassen Sie (Akzeptieren-)Anweisungen von der Routerinstanz zu einer Zielinstanz umleiten:
Übergeordnetes Thema: Anweisungsrouting aktivieren und Schemazuordnung definieren
Auszüge über ProxySQL weiterleiten
Um das automatische Anweisungsrouting zu nutzen, müssen Sie eine Verbindung herstellen und Ihre Anweisungen an die von ProxySQL verwaltete Routerinstanz weiterleiten.
Wenn Sie Abfragen und DML mit aktiviertem ProxySQL senden, müssen Sie eine Verbindung zur Routerinstanz herstellen, um das automatische Anweisungsrouting zu nutzen.
Routinganweisungen zu einer Zielinstanz stoppen
Führen Sie diese Schritte in einer Autonomous Database-Zielinstanz aus, um sie daran zu hindern, weitergeleitete Anweisungen vom ProxySQL-Router zu akzeptieren.
Weitere Informationen finden Sie unter Prozedur REJECT_MAPPING.
Schema- oder Objektzuordnung aus Router-Instanz entfernen
Enthält die Schritte zum Entfernen einer bestimmten Zuordnung aus der Router-Datenbank, die von ProxySQL verwaltet wird.
Auszugsweiterleitung deaktivieren
Zeigt die Schritte zum automatischen Anweisungsrouting an, indem ProxySQL deaktiviert wird.
Führen Sie DBMS_PROXY_SQL.DISABLE_ROUTING
auf der Routerinstanz aus, um ProxySQL zu deaktivieren und das automatische Anweisungsrouting an Zielinstanzen zu deaktivieren.
Beispiel:
BEGIN
DBMS_PROXY_SQL.DISABLE_ROUTING
;
END;
/
Dadurch wird ProxySQL deaktiviert und das automatische Anweisungsrouting auf dem Router deaktiviert.
Wenn Sie ProxySQL deaktivieren, werden die Einträge der Anweisungszuordnung in der Routing-Tabelle der Router-Instanz nicht gelöscht. Das heißt, wenn Sie ProxySQL erneut aktivieren und die Routing-Tabelle vorhandene Einträge enthält, leitet das automatische Anweisungsrouting Anweisungen an Zielinstanzen weiter, wie in der Routing-Tabelle angegeben. Verwenden Sie die Prozedur DBMS_PROXY_SQL.REMOVE_MAPPING
, wenn Sie vorhandene Routingtabelleneinträge entfernen möchten, bevor Sie ProxySQL erneut aktivieren.
Weitere Informationen finden Sie unter Prozedur DISABLE_ROUTING.
Automatic Statement Routing mit ProxySQL Notes
Listet Einschränkungen und wichtige Hinweise zum automatischen Anweisungsrouting auf, wenn ProxySQL aktiviert ist.
-
Der Benutzer
ADMIN
verfügt über die Berechtigungen zum Verwalten von ProxySQL. Wenn Sie einen anderen Benutzer aktivieren möchten, müssen Sie die folgenden Berechtigungen erteilen:-
Berechtigung
EXECUTE
für PackageDBMS_PROXY_SQL
. -
Berechtigung
READ
für die AnsichtDBA_PROXY_SQL_MAPPINGS
. -
Berechtigung
READ
für die AnsichtDBA_PROXY_SQL_ACCEPTED_MAPPINGS
.
-
-
Das automatische Anweisungs-Routing wird nahtlos fortgesetzt, wenn:
-
Die Autonomous Database-Zielinstanz wird auf eine lokale Autonomous Data Guard-Standbyinstanz übertragen.
-
Sie führen einen Switchover für eine Autonomous Database-Zielinstanz zu einer lokalen Autonomous Data Guard-Standbydatenbank aus.
Das automatische Anweisungsrouting wird jedoch nach einem Failover oder Switchover zu einer regionsübergreifenden Autonomous Data Guard-Standbydatenbank gestoppt.
-