A07: Berechnete Felder extrem langsam

14/05/2009 - 15:33 von Günther Bach | Report spam
Hallo!

Leider habe ich bei einigen Installationen Access 2007 vorgesetzt
bekommn und leider lassen sich da einige Datenbanken nicht mehr
vernünftig bedienen.
Im gleichen Netz sind teilweise relativ alte PCs, auf denen die
Datenbank mit Access 2003 (und Access 97 und Access 2000) ziemlich
flüssig làuft.
Die gleiche Datenbank unter Access 2007 auf Vista x64 (alles neuster
Patchlevel von Windows Update) extrem langsam. Bei jeder Änderung der
Ansicht (öffnen, filtern, sortieren etc.) friert Access für einige
Sekunden ein (abhàngig von der Anzahl der Datensàtze, bei 1000
Datensàtzen einige Sekunden, bei 10000 Datensàtzen ca. 30 Sekunden.
Es handelt sich immer um Endlosformulare.
Eine àhnliche Fehlerbeschreibung habe ich an vielen Stellen im Web
gefunden, z.B. hier:
http://www.access-programmers.co.uk...read.php?t7739
Leider nirgends mit einer brauchbaren Lösung. Immer nur Hinweise auf
Objektnamen Autokorrektur oder andere allgemeine Performance-Tipps,
die natürlich nicht helfen.

Ich bin in der Zwischenzeit durch viel rumexperimentieren auf
folgendes gestossen:
- Es ist offenbar egal, ob die Daten aus einer MySQL-Datenbank oder
einer Access-MDB kommen.
- Es ist offenbar egal, ob es eine Access-2003 oder 2007 Datenbank ist
- Auch kompilieren, komprimieren, in MDE-konvertieren oder Ändern von
Access-Einstellungen veràndert nichts am Problem.

- Aber wenn ich alle berechneten Felder rauslösche, ist das
Performance-Problem weg.
Wenn ich in den Formularfuss ein Feld mit dem Steuerelementinhalt
=Summe([zahlfeld]) reinnehme, braucht Access 2007 einige Sekunden, um
die 1000 Zahlen zusammenzuzàhlen, wàhrend das Access 2003 sofort
macht. Das Verhalten habe ich auch bei einer fremden Datenbank
beobachten können. Dort sind ca. 40.000 Datensàtze drinnen und jede
Änderung der Datenbasis (Filtern, Sortieren, etc.) legt den Rechner
für mind. 30 Sekunden lahm.

Beim Einfrieren erscheint auch "Keine Rückmeldung" in der Titelzeile
und im Taskmanager ist in der Zeit ziemlich viel Traffic auf der
Leitung. Als ob er jedesmal die gesamte Datenbank übertràgt und so
lange hàngt. Wobei er aber das Netz nicht auslastet. Server Win 2008
mit 8GB RAM, Hardware-RAID-10 und Gigabit-LAN, Client Vista x64, 8 GB
RAM, Software-RAID-10, Gigabit-LAN. Wenn ich Dateien kopiere, bekomme
ich ca. 90 MByte/Sek. durchs Netzwerk, und lokal am Server ca. 180
MByte/Sek. und am Client ca. 160 MByte/Sek.
Access übertràgt in der Zeit die Daten aber nur mit ca. 1 MByte/Sek.
übers Netz. Auch die CPU und der Speicher sind nicht ausgelastet,
weder am Server, noch am Client.

Am Vista sollte es nicht liegen, da auf einem Vista x64-Rechner ein
Office-2003 installiert wurde und es da deutlich schneller ist. Das
Verhalten scheint eindeutig an Access 2007 zu liegen.

Ach ja, noch etwas: Hier bemerke ich einen deutlichen Unterschied
zwischen Snapshot und Dynaset.
Bei einer mittleren Datenmenge ist es ungefàhr so:
Access 2003 Snapshot und Dynaset: ca.1 Sek.
Access 2007 Snapshot: ca. 4 Sekunden
Access 2007 Dynaset (normal und inkonsistent): ca. 15 Sekunden.
Leider wird ein Dynaset benötigt.

Hat jemand noch Ideen, wo man ansetzen kann?
Ein Tipp war noch, die Netzwerkgeschwindigkeitsaushandlung von Vista
zu deaktivieren um die Performance zu verbessern, aber da soll sich
v.a. beim Zusammenspiel mit unterschiedlichen Betriebssystemen positiv
auswirken. In dem Fall haben ja Server 2008 und Vista x64 den gleichen
Kernel und das gleiche Servicepack, auch làuft das Netzwerk bei allen
anderen Anwendungen sauschnell (90 MByte/Sek.). Daher habe ich das
nicht ausprobiert, auch weil ich in der Regel beim Kunden nicht ohne
Weiteres in seine Systeme eingreifen kann, ich hàtte es lieber
innerhalb von Access gelöst.

Danke,
Günther (nach Jahren hier mal wieder aktiv)
 

Lesen sie die antworten

#1 Josef Poetzl
14/05/2009 - 21:44 | Warnen spam
Hallo!

Günther Bach schrieb:
Leider habe ich bei einigen Installationen Access 2007 vorgesetzt
bekommn und leider lassen sich da einige Datenbanken nicht mehr
vernünftig bedienen.
Im gleichen Netz sind teilweise relativ alte PCs, auf denen die
Datenbank mit Access 2003 (und Access 97 und Access 2000) ziemlich
flüssig làuft.


[...]
Ich bin in der Zwischenzeit durch viel rumexperimentieren auf
folgendes gestossen:
- Es ist offenbar egal, ob die Daten aus einer MySQL-Datenbank oder
einer Access-MDB kommen.
- Es ist offenbar egal, ob es eine Access-2003 oder 2007 Datenbank ist
- Auch kompilieren, komprimieren, in MDE-konvertieren oder Ändern von
Access-Einstellungen veràndert nichts am Problem.



Ich bemerkte bisher auch, dass der Zugriff über verknüpfte Tabellen
deutlich langsamer geworden ist. (Aber nur bei ODBC-Tabellen. Bei
Jet-Tabellen kommt mir das nicht so tragisch vor.
... /Leider/ verwende ich kaum Jet-Tabellen. ;-)

Das Summieren über eine größere Anzahl war aber bereits unter AcXP
nicht der große Renner. Daher stellte ich so etwas bereits vor einiger
Zeit auf eine extra Berechnung um. (zusàtzliche Select-Anweisung, die
die Werte vom Server berechnen làsst.)
Wo dir Ursache liegt, fand ich bisher noch nicht heraus. Vielleicht
ist es die neue DBEngine - vielleicht auch der neue Formularaufbau.

Bezüglich Sum(...) im Formularfuß/-kopf:
Wenn man den Datenfluss im MSSQL-Profiler betrachtet ist folgendes zu
beobachten:
ohne Sum(..): Die Datensàtze werden in Blöcken angefordert.
mit Sum(..): jeder DS wird einzeln abgerufen.
(Diese Verhalten kann ich mit AcXP und Ac07 beobachten.)


mfg
Josef

EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/

Ähnliche fragen