DAO: Performance-Problem beim SCHLIESSEN einer Datei - Die LDB ist schuld !

20/10/2008 - 20:26 von Wolfgang Schwarz | Report spam
Hallo Forum,

ich bin ja ungern einer der seine Mitmenschen nerven möchte, aber wg. der
immer wieder auftretenden Performance-Probleme von DAO im
Netzwerk/Mehrbenutzerproblem habe ich heute eine für mich erstaunliche
Entdeckung gemacht:
Performance-Verluste bei gleichzeitig geöffneten Dateien von mehreren
Benutzern entstehen beim SCHLIESSEN (Close) einer Datei und nicht beim
Öffnen (OPEN)

Wie das ?

Bekanntermaßen legt DAO beim Öffnen einer MDB automatisch eine
gleichlautende LDB-Datei für BenutzerInfo-Satzsperren und wasweisich an.
Beim Schließen der MDB wird automatisch die LDB-Datei wieder gelöscht sofern
dies der einzigste Zugriff von allen Anwendungen/Benutzer war.
Und genau hier liegt die Krux.
Wenn die MDB geschlossen wird und die aktuelle Anwendung NICHT der einzigste
Zugriff war, dann wird die LDB eben nicht gelöscht.
Das kann DAO aber erst nach einigen "Lösch-Probier-Fehlversuchen"
feststellen und gibt dann auf.
Durch diese "Lösch-Probier-Fehlversuchen" geht mir aber im
Anwendungs-Verhalten wertvolle Zeit verloren, die meine Benutzer sichtbar
nervt.

Am Zeitverhalten der Ausführung von "dbsNorthwind.Close" kann ich das ganz
deutlich messen.
Ist die Datei von nur einer Anwendung geöffnet, dann ist das Schließen
praktisch zeitlos, hat noch eine andere Anwendung im Netzwerk diese Datei
geöffnet dauert das Schließen schon mal 2 Sek. Eine nervend lange Zeit.

Den einzigsten Hinweis auf diese Phànomen finde ich unter
http://www.granite.ab.ca/access/per...ocking.htm
Die hier vorgeschlagenen Lösung, die Datei mit einer globalen Variablen
stàndig offen zu halten finde ich wenig praktikabel.

Hier wollte hier nun mal fragen ob der Sachverhalt bekannt, und ggfs. noch
andere Abhilfemöglichkeiten bekannt sind, z.B. das Löschen der LDB ganz zu
unterbinden, den Timeout zu verkleinern etc.

Vielen Dank für alle Antworten

mfg
Wolfgang
 

Lesen sie die antworten

#1 Wilfried Dietrich
21/10/2008 - 10:19 | Warnen spam
Hallo Wolfgang,

Ist die Datei von nur einer Anwendung geöffnet, dann ist das Schließen
praktisch zeitlos, hat noch eine andere Anwendung im Netzwerk diese Datei
geöffnet dauert das Schließen schon mal 2 Sek. Eine nervend lange Zeit.

Hier wollte hier nun mal fragen ob der Sachverhalt bekannt, und ggfs. noch
andere Abhilfemöglichkeiten bekannt sind ...



2 Sekunden sind keine lange Zeit, wenn, wie es bei einer MDB
gemacht werden sollte bzw. sinnvoll ist, die Verbindung (Connection) zur
MDB beim Programmstart hergestellt wird (Open) und erst zum
Programmende wieder getrennt wird (Connection.Close).
Zwischendurch öffnet, schließt und zerstört man die Recordsets dann wie sie
halt gebraucht werden. Aber eben nur die Recordsets.

Ich hatte lediglich mal einen Performance-Verluste bei ADO, wenn
das erste mal auf eine DB-Tabelle zugegriffen wurde. Das laden
eines Recordsets hat da manchmal einige Sek. gedauert.
Dies hat sich aber mit einem Update auf MDAC 2.8 erledigt.

Gruß
Wilfried

Ähnliche fragen