Verbessern Sie die SQL-Entwicklerleistung beim Query Builder

1656
Máté Juhász

Ich verwende Oracle SQL Developer (Version 17.3.1.279) in Windows 10 64 Bit.
Es ist über TNS mit einer Oracle-Datenbank im Netzwerk verbunden.

Immer wenn ich "Query Builder" zum ersten Mal für eine Abfrage öffne oder nach einigen Änderungen im SQL-Code, dauert das Laden viel Zeit (30-60 s).

"Completion Insights" erscheinen auch sehr langsam (3-4 s), daher beende ich in der Regel erst die Eingabe von Tabellen- und Spaltennamen, bevor sie erscheinen (Einstellung ist 0,6 s, damit sie angezeigt werden).

Aufgrund der oben genannten Probleme vermute ich, dass der SQL-Entwickler jedes Mal Informationen aus der Datenbank liest. Gibt es eine Möglichkeit, Informationen lokal zu speichern? (Die Struktur der Datenbank ist ziemlich dauerhaft, sie ändert sich weniger als einmal pro Jahr.)


Ich habe auch einen Blick in den Task-Manager geworfen, und das Seltsame ist, dass selbst wenn der SQL-Entwickler bei der Vorbereitung des "Query Builder" nicht reagiert, er nicht viele Ressourcen benötigt

Ressourcen, die der SQL-Entwickler beim Erstellen der Ansicht verwendet:

  • 0-1,5% meiner CPU (springt einige Sekunden auf 7%)
  • 600 - 650 MB RAM (Ich habe insgesamt 16 GB, wovon 9 GB frei sind, daher glaube ich nicht, dass dies ein Engpass wäre).
  • 0 MB / s Festplatte und 0% Netzwerk

Im Allgemeinen ist die Leistung davon nicht betroffen

  • CPU-Nutzung 10-30%
  • Speicher: 7-8 GB belegt, 8-10 GB belegt, 8-9 GB frei
  • Festplattennutzung: 0-5%
5
Jede Frage macht das? Ramhound vor 6 Jahren 0
Das Problem ist bei allen Abfragen, die ich ausführte, gleich, selbst die einfachste (`select * from MyTable` ') verhält sich gleich. Máté Juhász vor 6 Jahren 0
Haben Sie im Optionsmenü nach offensichtlichen Funktionen gesucht, die das Verhalten möglicherweise erklären? Ramhound vor 6 Jahren 0
Ja, ich habe nachgesehen, konnte aber nichts finden. Máté Juhász vor 6 Jahren 0

1 Antwort auf die Frage

2
harrymc

Eine mögliche Erklärung ist, dass der Query Builder alle Datenbanktabellen und alle ihre Spalteninformationen abrufen muss, bevor der Zugriff auf den Query Builder selbst ermöglicht wird, und dass das Laden all dieser Daten die Zeit beansprucht. Für dieses Problem kann ich nur an die Problemumgehung denken, ein benutzerdefiniertes Datenquellenschema zu verwenden, in dem nur die erforderlichen Tabelleninformationen enthalten sind, falls dies in Ihrem Fall möglich ist.

Für Ihre Frage zu einem lokalen Cache finden Sie hier einige Verweise, obwohl es so aussieht, als ob sie nur Abfragen betreffen. Ihr Problem könnte das Laden der Metadaten der Tabellen sein:

Sie können auch den Befehl "Tabelle ändern" verwenden, um den Wohnsitz der von Ihnen verwendeten Tabellen in Cache zu ändern. Dies ist nur geeignet, wenn Sie über ausreichend RAM für die Tabellen verfügen, in denen die Tabellen bitweise gelesen und beim Zugriff aufbewahrt werden. Ich weiß jedoch nicht wirklich, ob die Metadaten der Tabellen aus den Systemkatalogen ebenfalls gelesen und gespeichert werden.

Nachfolgend sind weitere allgemeine Tipps aufgeführt, die möglicherweise ebenfalls hilfreich sind:

  • Deaktivieren Sie nicht verwendete Funktionen in Tools / Features

  • Erweiterungen
    deaktivieren Deaktivieren Sie in den Voreinstellungen alle nicht benötigten Erweiterungen, mit Ausnahme der Suchleiste (müssen Sie SQL Developer neu starten). Dadurch wird auch das Hauptmenü von nicht verwendeten Elementen entfernt.

  • Festlegen der Aussehen- und Gefühlseinstellung für das Host-Betriebssystem
    Dies hilft, die GUI an den Host zu übergeben, anstatt alles über Java zu zeichnen. Andere Java-Parameter könnten angepasst werden, dies ist jedoch nur für Abenteurer.

  • Schließen Sie die Raster und Dateien, wenn Sie fertig sind

  • Legen Sie für SQL History Limit einen niedrigen Wert fest

  • Wenn Sie über Remote Desktop arbeiten, reduzieren Sie die Grafikeinstellungen

  • Virenscanner optimieren
    SQL-Developer ist ein Java-Programm, das aus großen .jarArchiven besteht, die nur .zipArchive sind. Es ist also sinnlos, das gesamte Archiv nur nach einigen Dateien zu durchsuchen. Sie können den SQL-Developer-Ordner von Virenprüfungen ausschließen.

  • Führen Sie SQL-Developer als Administrator aus

  • Wenn alles andere fehlschlägt, gibt es kostenlose Alternativen zu Oracle SQL Developer .

Es scheint, dass der Partner die Informationen aus der Datenbank explizit zwischenspeichern möchte - dies scheint nur eine Wäscheliste mit nicht verwandten Tipps zu sein, die das Programm "beschleunigen" könnten. Nicht sicher, ob es entweder der Absicht der Frage entspricht oder auf was der Partner hofft, wenn er die Prämie so aufstellt, wie sie ist. Journeyman Geek vor 6 Jahren 0
@JourneymanGeek Ich versuche immer noch die Vorschläge. Obwohl beide keine schnelle Lösung bieten, sind sie vielversprechend. Und es ist eine legitime Antwort, die es nicht wert ist, abgewählt zu werden. Máté Juhász vor 6 Jahren 0
@ MátéJuhász: Wenn dies die Leistung nicht ausreichend verbessert, ist es nützlich, einige Leistungsindikatoren zu sammeln, um den Problembereich besser zu lokalisieren. Bei einer Verlangsamung von 30 bis 60 Sekunden können Sie im Task-Manager oder im Ressourcen-Monitor feststellen, ob es sich um CPU, Festplatte oder Netzwerk handelt. harrymc vor 6 Jahren 0
@ harrymc: Ich hatte genau den gleichen Gedanken, bitte schau auf mein Update Máté Juhász vor 6 Jahren 0
Haben Sie sich die allgemeine Computerstatistik angesehen oder nur den SQL-Entwickler? Einige dieser großen Produkte bestehen aus mehreren Prozessen. Netzwerkwartezeiten sind auch nicht messbar. harrymc vor 6 Jahren 0
Das sind für SQL-Entwickler, auch allgemeine Zahlen Máté Juhász vor 6 Jahren 0
Die CPU-Nutzung ist bedeutsam - was verwendet sie? Wie viel RAM hast du? harrymc vor 6 Jahren 0
Lassen Sie uns [diese Diskussion im Chat fortsetzen] (http://chat.stackexchange.com/rooms/73714/discussion-between-mate-juhasz-and-harrymc). Máté Juhász vor 6 Jahren 0
Ich habe Ihre Vorschläge befolgt, nachdem Sie die meisten Funktionen deaktiviert und auf Windows-Stil umgestellt haben: Das Verschieben und Ändern der Größe von Tabellen in Query Builder ist jetzt viel schneller, aber die Vorbereitung des Query Builder ist immer noch gleich. Ich weiß nicht, wo / wie ich Erweiterungen deaktivieren soll. Máté Juhász vor 6 Jahren 0
Ich habe keinen SQL-Entwickler zum Testen, aber [dieses Bild] (http://thatjeffsmith.wpengine.com/wp-content/uploads/2012/02/sqldev_extensions.png) könnte helfen. harrymc vor 6 Jahren 0
Eine mögliche Erklärung ist möglicherweise, dass der Abfrageersteller alle Datenbanktabellen und alle ihre Spalteninformationen abrufen muss, bevor der Zugriff auf den Abfrageersteller selbst ermöglicht wird, und dass das Laden all dieser Daten die Zeit beansprucht. Für dieses Problem kann ich nur an die Problemumgehung denken, wenn ein benutzerdefiniertes Datenquellenschema verwendet wird, in dem nur die erforderlichen Tabelleninformationen enthalten sind, sofern dies möglich ist. harrymc vor 6 Jahren 0