OOo Basic Datenbankzugriff übers Netzwerk optimieren

06/10/2008 - 08:15 von Stephan Kundinger | Report spam
Hallo allerseits,


ich habe einige Makros, die übers Netzwerk auf einen
Datenbankserver zugreifen, genau gesagt über ODBC auf MySql.

Grundsàtzlich funktioniert das alles recht gut, aber der
Verbindungsaufbau ist dauert z.T. ewig. Auch wenn winzige Datenmengen
zurückgegeben werden, eine handvoll Datensàtze mit wenig Inhalt und
eine schnelle Abfrage zu grundeliegt. Abfragen, die unmittelbar danach
kommen und einen vergleichbaren Aufwand haben, gehen dann in
Bruchteilen der Zeit.

Die Frage: gibts irgendwelche Stellschrauben im OOo oder auch beim
ODBC, wie man das evtl optimieren kann? Oder worauf muß man besonders
achten? Ich mache ungefàhr folgendes, das ganze in Dialogen:

oFrm ist das Formular mit aktiver Verbindung zur DB
oStmt = oFrm.ActiveConnection.createStatment()
sSql = SELECT irgendwas
oRS = oStmt.executeQuery(sSql)
While oRS.next() Then
das ganze irgendwohinverarbeiten
Wend

Die Zeitfresser sind m.E. nicht unbedingt in dem Code zu suchen. Beim
Zugriff auf eine DB die am localhost làuft, sind keine nennenswerten
Wartezeiten da. Daß es einen Unterschied zum Netzwerkbetrieb gibt, ist
logisch. Aber der ist so enorm, daß da irgendwas nicht stimmig sein
kann (um die 5 Sekunden bei der ersten Abfrage). Netzwerklast scheint
sich auch nicht groß auszuwirken, das Problem tritt auch im
Testnetzwerk auf, wo ansonsten null Traffic ist.

Würde mich sehr über Tips freuen, das Phànomen raubt mir z.Zt. den
letzen Nerv... Danke schonmal.


Grüße aus Berlin

Stephan
 

Lesen sie die antworten

#1 Marc Santhoff
06/10/2008 - 18:21 | Warnen spam
Am Mon, 06 Oct 2008 09:15:03 +0200 schrieb Stephan Kundinger:

Hallo allerseits,


ich habe einige Makros, die übers Netzwerk auf einen Datenbankserver
zugreifen, genau gesagt über ODBC auf MySql.

Grundsàtzlich funktioniert das alles recht gut, aber der Verbindungsaufbau
ist dauert z.T. ewig. Auch wenn winzige Datenmengen zurückgegeben werden,
eine handvoll Datensàtze mit wenig Inhalt und eine schnelle Abfrage zu
grundeliegt. Abfragen, die unmittelbar danach kommen und einen
vergleichbaren Aufwand haben, gehen dann in Bruchteilen der Zeit.



Ist Java im Spiel? Der erste Start einer VM kann schon ein wenig dauern,
danach geht's dann schnell.

Die Frage: gibts irgendwelche Stellschrauben im OOo oder auch beim ODBC,
wie man das evtl optimieren kann? Oder worauf muß man besonders achten?
Ich mache ungefàhr folgendes, das ganze in Dialogen:

oFrm ist das Formular mit aktiver Verbindung zur DB oStmt > oFrm.ActiveConnection.createStatment() sSql = SELECT irgendwas
oRS = oStmt.executeQuery(sSql)
While oRS.next() Then
das ganze irgendwohinverarbeiten
Wend

Die Zeitfresser sind m.E. nicht unbedingt in dem Code zu suchen. Beim
Zugriff auf eine DB die am localhost làuft, sind keine nennenswerten
Wartezeiten da. Daß es einen Unterschied zum Netzwerkbetrieb gibt, ist
logisch. Aber der ist so enorm, daß da irgendwas nicht stimmig sein kann
(um die 5 Sekunden bei der ersten Abfrage). Netzwerklast scheint sich auch
nicht groß auszuwirken, das Problem tritt auch im Testnetzwerk auf, wo
ansonsten null Traffic ist.



Als erstes kannst Du versuchen andere Ursachen als OO.o auszuschließen.

Z.B. indem Du mal in einem XTerm bzw. von der Konsole die SQL-Abfragen an
den DB-Server schickst (eigentlich jede Datenbank bringt ein
Kommandozeilenwerkzeug mit, dürfte "mysql" heißen).

Im nàchsten Schritt mit einer anderen ODBC-fàhigen Applikation die gleiche
ODBC-Verbindung mit dem gleichen SQL testen.

Wenn in beiden Fàllen keine Verzögerung auftritt ist OO.o dafür
verantwortlich.

HTH,
Marc

(Please reply to newsgroup)

Ähnliche fragen