Forums Neueste Beiträge
 

große Access DB - connection offen lassen?

16/02/2008 - 13:04 von Thomas Hübner | Report spam
Hi Newsgroup,

ich greife mit
conn.ConnectionString = "provider=microsoft.jet.oledb.4.0;data
source=C:\db2.mdb"

Auf eine ~ 100MB große MDB zu. Mein Empfinden ist, das das conn.open
recht lange dauert. Bei DAO hat man ja die DB "oben" geöffnet und
"unten" geschlossen (Programmtechnisch gesehen). Ist es bei ADO in
Zusammenhang mit großen MDB's auch ratsam die conn nur einmal bei
Programmstart zu öffnen?
Programmtechnisch wird immer dieselbe Prozedur ablaufen:

1. Filter setzen -> datentabelle holen und ID's in Listbox anzeigen
2. ID auswàhlen -> Datensatz komplett holen
3. Datensatz bearbeiten -> Datensatz updaten

zwischen 2. und 3. wird dann immer wieder gesprungen. Wenn ich jetzt bei
jedem Vorgang die conn öffne wird das denke ich mal etwas "lahm" bei
einer 100MB MDB. Mehrnutzerbetrieb schrànkt sich hierbei auf <5 ein -
trotzdem würde ich gern bei 2. gern die Daten "frisch" aus der DB haben
und nicht mit einer internen Tabelle arbeiten da zwischen 1. und 2.
durchaus mal eine Stunde liegen kann und die Daten aus 1. evtl. schon
bearbeitet wurden.

Liebe Grüße,
Thomas
 

Lesen sie die antworten

#1 Peter Götz
16/02/2008 - 14:35 | Warnen spam
Hallo Thomas,

ich greife mit
conn.ConnectionString = "provider=microsoft.jet.oledb.4.0;data
source=C:\db2.mdb"

Auf eine ~ 100MB große MDB zu. Mein Empfinden ist,
das das conn.open recht lange dauert.



Weil es u.a. eine neue *.ldb anlegen muss, bzw. einen
Eintrag in eine bereits vorhandene *.ldb machen muss.


Bei DAO hat man ja die DB "oben" geöffnet und
"unten" geschlossen (Programmtechnisch gesehen).
Ist es bei ADO in Zusammenhang mit großen MDB's
auch ratsam die conn nur einmal bei Programmstart
zu öffnen?



Nicht nur bei grossen *.mdb. Wobei eine *.mdb mit
100 MB nun nicht gerade wirklich gross ist.

Programmtechnisch wird immer dieselbe Prozedur
ablaufen:

1. Filter setzen -> datentabelle holen und ID's in
Listbox anzeigen
2. ID auswàhlen -> Datensatz komplett holen
3. Datensatz bearbeiten -> Datensatz updaten

zwischen 2. und 3. wird dann immer wieder gesprungen.
Wenn ich jetzt bei jedem Vorgang die conn öffne wird
das denke ich mal etwas "lahm" bei einer 100MB MDB.



Egal wie gross die *.mdb ist, es muss bei jedem Öffnen,
sofern nicht exklusiv geöffnet wird, ein Eintrag in die zur
*.mdb gehörende *.ldb gemacht werden, bzw. diese neu
angelegt werden und bei jedem Schliessen der Connection
muss der Eintrag in der *.ldb gelöscht, bzw. beim letzten
Benutzer/Rechner die gesamte *.ldb gelöscht werden.
Wenn das ganze auch noch über ein LAN geschieht,
bedeutet dies unnötige Netzwerklast und ebenso unnötige
Last beim Server.

Mehrnutzerbetrieb schrànkt sich hierbei auf <5 ein -



Gerade beim Mehrbenutzerbetrieb sollten Connections
nicht stàndig geöffnet und geschlossen werden.

trotzdem würde ich gern bei 2. gern die Daten "frisch"
aus der DB haben und nicht mit einer internen Tabelle
arbeiten



Dazu muss ja nicht die Connection stàndig neu geöffnet
und gleich wieder geschlossen werden.

da zwischen 1. und 2. durchaus mal eine Stunde liegen
kann und die Daten aus 1. evtl. schon
bearbeitet wurden.



Öffnen, Schliessen, Öffnen der Connection in so grossen
zeitlichen Abstànden wàre dann bezügl. Last (LAN / Server)
eher zu vernachlàssigen. Es schadet aber auch in sos einem
Fall nicht, wenn die Connection die gesamte Programmlaufzeit
über geöffnet bleibt.

Beim Öffnen der Connection das Connectionpooling
mit

OLE DB Services = -4

im Connectionstring ausschalten.

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen