Frage

Ein Anbieter teilte uns mit, dass wir keinen Datenbankverbindungen zwischen unserer und ihrer Datenbank verwenden sollten, da die über einen Datenbanklink ausgeführten Abfragen weder zwischengespeichert noch optimiert würden.

Ich kann keine Informationen finden, die dies bestätigen/befestigen.

Naiv würde ich nicht sehen, warum Oracle bei der Verwendung eines DB -Links nicht in der Lage sein würde, das Caching abzufragen.

War es hilfreich?

Lösung

Dort sind einige Beschränkungen mit Datenbanklinks. Sie können beispielsweise DDL nicht remote ausführen.

Abfragen gegen Remote -Tabellen sind nicht genauso verarbeitet als reguläre Tische:

Der lokale Oracle -Datenbankserver unterteilt die verteilte Abfrage in eine entsprechende Anzahl von Remote -Abfragen, die sie dann zur Ausführung an die Remote -Knoten sendet. Die Remote -Knoten führen die Abfragen aus und senden die Ergebnisse an den lokalen Knoten zurück. Der lokale Knoten führt dann die erforderliche Nachbearbeitung durch und gibt die Ergebnisse an den Benutzer oder die Anwendung zurück.

In den meisten Fällen ist der Bruchprozess ausreichend und Sie erhalten nur den erwarteten Overhead der Datenbankverbindung (Netzwerkverzögerung zwischen den Datenbanken, zwei Abfrageanalysen/Verarbeitung anstelle eines usw.). Die Remote -Unterabfragen werden von der Remote -Datenbank als normale Abfragen behandelt, und die Daten werden wie bei regelmäßigen Abfragen in den Remote -Cache einsteigen.

Sie können sich auf Leistungsprobleme einlassen, wenn Sie versuchen, einer lokalen Tabelle zu einer Remote -Tabelle (oder Tabellen von zwei unterschiedlichen DB -Links) teilzunehmen, da die Daten in eine einzige Datenbank übertragen werden müssen, um den Join durchzuführen. In diesem Fall möchten Sie möglicherweise den Aufbruchprozess ändern (z. B. eine komplexe Verbindung in einer Remote -Datenbank anstelle der lokalen Datenbank).

Das Dokumentation Details auf eine Reihe von Möglichkeiten, wie Sie verteilte Abfragen einstellen können.

Andere Tipps

Eine verteilte Abfrage kann nicht auf die gleiche Weise optimiert werden, wie lokale Tabellen, verteilte Abfragen jedoch optimiert und Caches dadurch optimiert werden können Der Verkäufer ist falsch.

Sie können dies sehen, indem Sie so etwas wie folgt ausführen. Sie werden sehen, wie die Ausführungszahl mit jedem Lauf steigt.

SELECT /* 23409268-09389 */ * FROM schema_name.table_name@db_link WHERE rownum<=1;
SELECT Executions, sql_text FROM v$sql WHERE sql_text LIKE 'select /* 23409268-09389%';

Ich vermute, dass der Anbieter möchte, dass die Daten über Webdienste zugreifen und alle Daten aus Ihrer eigenen Datenbank in einer Anwendungsebene erfolgen. Die Leistung einer solchen Konfiguration wäre wahrscheinlich bei einem Join über einen Datenbankverbindungsverbindungsverbindungsverbindungsverbindung unter wesentlicher Bedeutung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top