2016-09-09 8 views
0

Ich habe eine Datenbank A, die über eine Datenbankverbindung mit einer anderen Datenbank B verbunden ist.SQL Datenbank Link langsam beim ersten Lauf

Wenn ich eine select count(*) from VIEW auf Datenbank A (VIEW liest Daten aus Datenbank B) ausführt dauert es ~ 60 Sekunden.

Alle folgenden Läufe dauern ~ 1 Sekunde. Nach dem Trennen und erneutes Verbinden mit meinem SQL-Entwickler, dauert die Auswahl noch ~ 1 Sekunde.

Haben Sie irgendwelche Ideen?

Antwort

1

Meine Vermutung ist, dass die Daten der Tabellen in der Ansicht wahrscheinlich in DB2 SGA zwischengespeichert werden, nachdem Sie die Ansicht abfragen. Das Trennen des Sql-Entwicklers spielt keine Rolle, da die Daten auf Instanzebene zwischengespeichert werden und nicht auf Ihrem Client. Wenn Instanz B neu gestartet wird oder Daten aus DB Buffer Cache ausgegraut sind, wird sie wahrscheinlich wieder auf die Festplatte gehen und langsam anfangen.

+0

Kann ich den Cache irgendwie deaktivieren/den Cache ungültig machen? Dies würde helfen, die Abfrage zu verbessern – matthias

+0

Hm ... wenn ich die select-Anweisung auf Datenbank B selbst ausführen, dauert es immer nur ein paar Sekunden – matthias

+0

@matthias Wenn es eine Testumgebung ist versuchen Sie alter system flush buffer_cache; (Versuchen Sie dies nicht in einer Prod-Umgebung) für Instanz 2 – vercelli

0

Oracle erstellt zunächst einen Ausführungsplan für jede Abfrage. Möglicherweise ist Ihre Ansicht komplex und die Erstellung des Ausführungsplans erfordert mehr Zeit bei der ersten Ausführung. Da der Ausführungsplan im gemeinsam genutzten Pool vorhanden ist, wird er schnell ausgeführt.

Verwandte Themen