Lange wartezeit bei Netzwerkzugriff...

Status
Nicht offen für weitere Antworten.

AJRames

Mitglied
Hi Leute!
Ich hab einen java Client geschrieben, der Daten von 2 unterschiedlichen servern emfängt.(Einmal Access und einmal HSQLDB)
Wenn ich das Programm nun starte und zb nen neuen Datensatz anlege oder einfach nur die Datensätze anzeige braucht es erstmal ein paar sekunden (ca.5) bis es reagiert! Obwohl die Abfragen nicht so hammer viel sind...

An meinem Lappi, meinem Haupt-PC und am Lappi meiner mom ists so....(wobei es am Hauptrechner ein wenig schneller geht).
Ich habs letztes in der Firma probiert und da funktioniert es hammer schnell...obwohl mir da die richtige Datenbank zur Verfügung steht, mit viel mehr Datensätzen...
Woran könnte es liegen? Netzwerklast ist laut Taskmanager bei max. 1% wenn ichs ausführe. Kanns sein das er zum rechnen einfach solang braucht??? (kann ich mir nicht wirklich vorstellen).
Hier aufm Hauptpc geht die Prozessorauslastung dann schon hoch.....(Single Core, 3200+).
Der Client im Geschäft ist auch keine hammer maschine...

Ich weiss nicht mehr weiter :( Für die Präsentation sollte es am besten auf meinem Lappi auch schnell laufen...
Wär froh wenn ihr mir helfen könntet....

Gruß AJ
 

HoaX

Top Contributor
Vielleicht ist der Datenbankserver bei euch in der Firma einfach stärker? Wie schauts denn bei einfachen Abfragen wie select count(1) from tabelle nachWahl; aus? Läuft HsqlDB embedded oder standalone? Was passiert wenn du nur Access oder nur HsqlDB verwendest? ...
 

AJRames

Mitglied
Also wenn ich die Abfrag in Access bzw nur in HSQL durchführe läufts schnell! Leider kann ich aus meinem programm keine abfragen nur ein eine DB schicken.
Aber ich habe grad noch etwas festgestellt...Ich führe mehrere Abfragen nacheinander durch, bzw fast sogar gleichzeitig.
Kurze veranschaulichung an einer Methode (erst da habs ichs festgestellt).

Wenn ich nen Button drücke werden mir alle Kundenanfragen ausgegeben.
Jetz ist es leider so, das beim Ansprechpartner nur die Personennummer hinterlegt ist. Um dazu den Namen zu finden muss ich nochmal ne Abfrage starten. Ebenso wenn ich die Name der Firma darstellen möchte.
Die daten die ich bekomme füg ich in eine JTable.

Jetz ist es natürlich so das ich für den Namen der Firma und den Ansprechpartner wieder abfragen durchführe.

Ca. so:
...
ps2 = v.verbinden().prepareStatement("SELECT * FROM ANFRAGEN WHERE KDNR LIKE '"+ kdnr + "';");
res2 = ps2.executeQuery();

while(res2.next()){
dtm.setValueAt(res2.getString("ANFRAGEID"), z, 0);
dtm.setValueAt(il.getFirmName(res2.getString("KDNR")), z, 1);
dtm.setValueAt(il.getPersName(res2.getString("ANSPRECH")), z, 2);

...

mit dem Objekt il.get.. führe ich eben auch anfragen durch.
Als ich diese ersetzt hab liefs wie schmids katze! Wenn ichs jedoch so lasse dauerts ne weile.
Irgendwie auch verständlich....
Kann mir jemand sagen ob das so normal ist? Kann ich das nicht aus der welt schaffen? Mach ich was falsch?

Danke...

edit:
Wahnsinn ich hab grad die 2 Zeilen:

dtm.setValueAt(il.getFirmName(res2.getString("KDNR")), z, 1);
dtm.setValueAt(il.getPersName(res2.getString("ANSPRECH")), z, 2);

in

dtm.setValueAt(res2.getString("KDNR"), z, 1);
dtm.setValueAt(res2.getString("ANSPRECH"), z, 2);

geändert! KEINE Zeitverzögerung...
Jetz weiss ich wenigstens worans liegt...
Was meint ihr, wie kann ich die Sache mit den Namen sonst lösen?
Weil momentan nur nummen in der liste angezeigt werden...
 
Zuletzt bearbeitet:
T

tuxedo

Gast
Was macht denn

Java:
il.getFirmName(res2.getString("KDNR "))
// ... und ...
il.getPersName(res2.getString("ANSP RECH"))

denn genau? Irgend was da drin scheint zu bremsen...

- Alex
 

AJRames

Mitglied
Diese beiden Objekte führen wieder abfragen durch, zb:
"SELECT Name FROM XXX WHERE PersonNr = ?;"

Ja ist klar das es ewig braucht. Ich führe pro gefundenen datensatz nochmal 2 abfragen durch...
Danke trotzdem ^^ Habs jetz anders gelöst....
 

HoaX

Top Contributor
Also jede halbswegs ernst zu nehmende DB kann auch Joins, so bräuchtest du sogar nur eine Abfrage. Und evtl. solltest du einen Index in der DB über Kundennr usw erstellen, selbst mit den Unterabfragen sollte das nicht so lange dauern. Ich kenns von JPA und Lazy-Loading ...
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben