itdienstleister
Goto Top

Verwaltungsprogramm in Access - Performance

Einer meiner Kunden hat sich (von einem anderen Dienstleister) ein Verwaltungsprogramm (Kunden, Artikel, Rechnungen) in Access programmieren lassen.
Nun wird immer wieder über die Performance geklagt und alles auf den Server geschoben.

Wir haben den Server gerade erst neu installiert.
Windows SBS 2008 Premium, HP ML350 G5, Quad-Core, 8GB RAM, RAID-10.

Das einzige was am Server liegt ist die Access-Datenbank (mdb).
Diese wird vom Client aus aufgerufen.
Das eigentliche "Programm" (auch mdb) liegt am Client.

So wie ich das als Access-Laie sehe ist das doch ein reiner File-Zugriff auf den Server.
Das heitß, die Server-Performance spielt (kaum) eine Rolle.
Richtig?

Ich nehme an es wäre für die Performance auch besser die Datenbank nicht filebasiert (mdb) zu haben sondern auf einen SQL-Server zu legen?
Richtig?

Vielen Dank im voraus für Eure Tipps!

Grüße, FFK

Content-ID: 119729

Url: https://administrator.de/contentid/119729

Ausgedruckt am: 22.11.2024 um 11:11 Uhr

perseues
perseues 04.07.2009 um 15:31:35 Uhr
Goto Top
Deine Annahme ist richtig. Bei Access-Datenbanken spielt die Performance des Clients eine Rolle. Auch ist bei einer Auslagerung auf einen Fileserver die Netzwerksanbindung wichtig, da immer die komplette Datenbank zum Client übertragen wird. Ein SQL Server kann die Hardware des Servers nutzen (vor allem wenn so viel wie möglich in Stored Procedures gesteckt wird) und spart Bandbreite, da er nur die angefragten, bzw. geänderten Daten übers Netz schickt. Die Frage ist nur, ob Eure Software ohne weiteres auf einen SQL-Server umgestellt werden kann. Wenn die Accessdb jedoch in FE und BE aufgeteilt ist (scheint Deiner Beschreibung nach so zu sein) und SQL statt ausschließlich VB verwendet wurde, könnte es mit ein wenig Aufwand möglich sein.

Grüße p

Nachtrag: Wie ist denn die Performance von dem Programm, wenn es auf einem der Clients lokal ausgefürt wird, also die Datenbankdatei nicht übers Netz geht?
itdienstleister
itdienstleister 04.07.2009 um 15:54:32 Uhr
Goto Top
Zitat von @perseues:
Deine Annahme ist richtig. Bei Access-Datenbanken spielt die
Performance des Clients eine Rolle. Auch ist bei einer Auslagerung
auf einen Fileserver die Netzwerksanbindung wichtig, da immer die
komplette Datenbank zum Client übertragen wird. Ein SQL Server
kann die Hardware des Servers nutzen (vor allem wenn so viel wie
möglich in Stored Procedures gesteckt wird) und spart Bandbreite,
da er nur die angefragten, bzw. geänderten Daten übers Netz
schickt. Die Frage ist nur, ob Eure Software ohne weiteres auf einen
SQL-Server umgestellt werden kann. Wenn die Accessdb jedoch in FE und
BE aufgeteilt ist (scheint Deiner Beschreibung nach so zu sein) und
SQL statt ausschließlich VB verwendet wurde, könnte es mit
ein wenig Aufwand möglich sein.

Danke für Deine Erläuterungen!
Was meinst Du mit FE und BE?
FrontEnd und BackEnd?


Nachtrag: Wie ist denn die Performance von dem Programm, wenn es auf
einem der Clients lokal ausgefürt wird, also die Datenbankdatei
nicht übers Netz geht?

Habe ich noch nicht getestet.
Werde ich aber tun!

Danke nochmals!

Grüße, FFK
perseues
perseues 04.07.2009 um 16:12:21 Uhr
Goto Top
Zitat von @itdienstleister:

Danke für Deine Erläuterungen!
Was meinst Du mit FE und BE?
FrontEnd und BackEnd?

Genau. Die Anwendungslogik steckt dabei in dem am Client installiertem Teil.

Wenn die Clients wenig RAM und eine schlechte Netzanbindung haben und die Datenbank mehrere hundert MB groß ist, kann es schon eng werden.

Grüße p
mrtux
mrtux 04.07.2009 um 17:00:03 Uhr
Goto Top
Hi !

Zitat von @itdienstleister:
Das einzige was am Server liegt ist die Access-Datenbank (mdb).
Diese wird vom Client aus aufgerufen.

Das typische Erlebnis und teilweise auch tägliche Brot eines Administrators, der es mit mülliger Software zu tun hat, weil der Softwareanbieter kein Geld in die Weiterbildung seiner Mitarbeiter (auch und gerade auf der Führungsebene) stecken will. Wo es doch heute hervorragende Datenbankserver für kleines bis kein Geld (Opensource) gibt.

Ein leidiges Thema.... face-sad

Da die meisten Softwarefirmen auf dem hohen Ross sitzen (und damit meist auch einfahren...gottseidank, solche Software wird weniger) und meist nicht mit sich reden lassen, wirst Du wohl ein schnelleres Netzwerk, schnellere Clients oder gar beides hinstellen müssen. Habt Ihr denn keine Bestandsaufnahme des Netzwerks gemacht, als Ihr den Server erneuert habt?

mrtux
BigWumpus
BigWumpus 05.07.2009 um 00:52:18 Uhr
Goto Top
Performance von Access-DBs.

Da gibt es seit min. 15 Jahren so eine Formel (!), daß ab 5 User nur noch mit SQL-Datenbanken gearbeitet werden kann... Blödsinn.

Ich habe ein Netzwerk mit Access 2.0 und 2000-DB bei einem Kunden in Betreuung und Programmierung auf einem Novell-Server. Da gab es auch so versch. Einstellungen, die den Netzwerk-Transport betrafen, da würde ich auch mal ansetzen.
Ob der BE auf dem Client oder im Netz liegt sollte i.d.R. egal sein.

Access 2.0 ist nach wie vor rattenschnell, alles andere ist eher lahm.
Man kann bei der Programmierung und bei der Definition der Tabellen etc. (Indizies) Performance rauskitzeln.

Ich arbeite bis jetzt auch nur mit Jet-DBs (file-basierter Zugriff) und kann eine durchaus brauchbare Speed erzeugen.
Wenn die Abfragen aber so konstruiert sind, daß immer alle Daten über den Draht müssen, dann wird es lahm. Gerade letztens hatte ich da so ein Aha-Erlebnis, wo ich eine Abfrage enorm beschleunigen konnte, weil ich Where-Abfragen an anderer Stelle definiert habe.

Wie ist denn die Programmierfirma auf den Bolzen gekommen, daß es am Server liegt ? Haben die eine Referenz-Installation auf einem anderem Netzwerk laufen, wo es schneller läuft ?
mrtux
mrtux 05.07.2009 um 02:23:03 Uhr
Goto Top
Hi !

Zitat von @BigWumpus:
Da gibt es seit min. 15 Jahren so eine Formel (!), daß ab 5
User nur noch mit SQL-Datenbanken gearbeitet werden kann...
Blödsinn.

Ahh, die Formel kannte ich bisher noch gar nicht, ab 10 Arbeitsplätzen installiere ich dann wieder Dbase, damit es den Leuten nicht zu wohl wird. face-smile

Man kann bei der Programmierung und bei der Definition der Tabellen
etc. (Indizies) Performance rauskitzeln.

Was auch zum Thema Weiterbildung gehört, wenn eine Abfrage "ungeschickt" formuliert wurde, kann die im Extremfall auch einen SQL-Server in die Knie zwingen. face-smile

Wo wir dann wieder bei der Qualität von Softwareentwicklung sind und unsere Argumente gar kein Gegensatz darstellen müssen. face-smile

mrtux
Biber
Biber 05.07.2009 um 14:55:02 Uhr
Goto Top
Moin alle,

es wäre schade, wenn dieser durchaus interessante Thread durch Spekulationen, urban legends und unzulässige Verallgemeinerungen vor einer Annäherung an eine Lösung aus dem Ruder läuft.

Es sind (aus meiner Sicht) die beiden wichtigsten Vor-Klärungsfragen gestellt und verstanden worden:
Wie ist denn die Performance von dem Programm, wenn es auf einem der Clients lokal ausgefürt wird, also die Datenbankdatei nicht übers Netz geht? [von perseues ]

Wie ist denn die Programmierfirma auf den Bolzen gekommen, daß es am Server liegt ? Haben die eine Referenz-Installation auf einem anderem Netzwerk laufen, wo es schneller läuft ? [von BigWumpus]

Erst nach Antworten darauf lässt sich doch darüber nachdenken, wo wahrscheinlich der Flaschenhals ist und
  • ob sich die Performance verbessern lässt, ohne die Appz an sich überhaupt anzufassen
  • das Netzwerk suboptimal auf die Erfordernisse von einer MSAccess "Client/Server"-Lösung konfguriert ist
  • oder ob die Appz selbst vielleicht nur von jemand zusammengeklickt wurde, der SQLs noch heute als Fachbegriff für die Vermarktung eines Kino-Hits als Endlos-Serie hält.

Bitte lasst also itdienstleister erst mal recherchieren.

Wohlgemerkt - ich halte alle Kommentatoren hier für kompetent und erfahren, aber der Beitrag droht aus dem Ruder zu laufen.

Grüße
Biber
itdienstleister
itdienstleister 13.07.2009 um 01:51:30 Uhr
Goto Top
Zitat von @BigWumpus:
Wie ist denn die Programmierfirma auf den Bolzen gekommen, daß
es am Server liegt ? Haben die eine Referenz-Installation auf einem
anderem Netzwerk laufen, wo es schneller läuft ?

Wohl kaum ... das ist eine für den Kunden programmierte Individual-Software (Datenbank).

Zitat von @perseues:
Wenn die Clients wenig RAM und eine schlechte Netzanbindung haben und
die Datenbank mehrere hundert MB groß ist, kann es schon eng
werden.

Ich habe jetzt nachgesehen:
Die Datenbank/Anwendung besteht aus einer mdw und zwei mdb's (6 und 16MB groß).


Leider konnte ich die Performance noch nicht testen, wenn die DB am Client lokal liegt.

Grüße, FFK
60730
60730 25.07.2009 um 00:26:07 Uhr
Goto Top
Servus,

was ist denn nun aus deiner Recherche geworden?

  • Und als Nachfrage, sind da auch bilder in die DB eingebunden?
  • Komprimieren/Reparieren der Access DB durchgeführt?

Gruss
itdienstleister
itdienstleister 25.07.2009 um 13:37:52 Uhr
Goto Top
Zitat von @60730:
was ist denn nun aus deiner Recherche geworden?

Ich war noch nicht beim Kunden vor Ort.
Konnte daher die Performance noch nicht testen wenn alle Dateien am Client liegen.

* Und als Nachfrage, sind da auch bilder in die DB eingebunden?

Nein.

* Komprimieren/Reparieren der Access DB durchgeführt?

Nein.
(Da es nicht meine Anwendung ist, sehe ich auch weiterhin von solchen Möglichkeiten ab - das gibt Ärger mit dem anderen Dienstleister)

Wie ich aber schon am 13.07. geschrieben habe:
Die Datenbank/Anwendung besteht aus einer mdw und zwei mdb's (6 und 16MB groß).
Also nicht gerade gigantisch viel ...

Ich halte Euch auf dem Laufenden wenn sich etwas neues ergibt!

Grüße, FFK
60730
60730 27.07.2009 um 09:59:15 Uhr
Goto Top
Servus,

(Da es nicht meine Anwendung ist, sehe ich auch weiterhin von solchen Möglichkeiten ab - das gibt Ärger mit dem anderen Dienstleister)

ganz ehrlich - das ist eine ganz schlechte Einstellung...

Rede mit dem anderen Dienstleister, wenn du einen neuen Server aufgestellt hast (und der ne andere IP/ anderen Namen - als der vorgänger hat) - was ich leider annehmen muß - weils nicht geschrieben steht.

Und du dir die Dbs nicht angesehen hast/willst - wer sagt dir dann, dass intern nicht ein Weg hart verdrahtet war und jetzt via x y oder z aussen rum aufgelöst werden muß - und so die performance in den Keller zieht?

Gruß
itdienstleister
itdienstleister 27.07.2009 um 17:03:52 Uhr
Goto Top
Ganz ehrlich - Du bist auch ein professioneller Nörgler!

Außerdem hast Du im Zitat nicht alles erfasst!
Ich sagte nicht, daß ich nicht mit dem anderen Dienstleister rede.
Ich sagte nur, daß ich nicht in fremden Datenbanken herumkomprimiere/repariere.

Der neue Server hat die gleiche IP und den gleichen Namen wie der alte.

Laut dem anderen Dienstleister (der kein Profi-Programmierer ist) liegt es "am Server und an der Arbeitsspeicherauslastung am Server".
Das kommt mir aber komisch vor - daher meine Fragen.

Grüße, FFK
NetWolf
NetWolf 16.08.2009 um 23:53:03 Uhr
Goto Top
Hallo FFK,

mal was grundsätzliches zu Access-Datenbanken.

Für eine Access-DB ist die Zugriffsgeschwindigkeit der Server-Festplatte und das Netzwerk entscheidend. Der RAM-Speicher des Servers wird gar nicht von Access genutzt!

Ein Backend auf dem Server dient nur als Datenspeicher, mehr nicht!
Regelmäßiges Defrag auf dem Server ist zwingend notwendig! Es steigert die Performance bei DBs erheblich! Bitte nicht das vom Server verwenden!!!

Wie schon gesagt wurde: regelmäßiges Komprimieren der DB ist genau so wichtig und gut für die Performance.

Komprimieren und anschließendes Defragmentieren ist optimal.

Aber:
Bei 90% aller Performance-Probleme ist die schlechte Programmierung die Bremse.
Häufig hilft auch die Anpassung der Grundeinstellungen in Access am Client.

Clients mit vollem TEMP-Verzeichnis, nicht defragmentiert und nur mit 512 KB Ram sind tödlich langsam bei Datenbanken. Beim Client wichtig: RAM und schnelle Festplatte (für die Auslagerung der Daten wenn diese die RAM-Kapazität übersteigen).

Netzwerktechnisch solltest du keine dynamischen IPs haben. Die Performance kann durch manuelles umstellen auf Fullduplex gesteigert werden (je nach verwendetem Switch). QoS sollte ausgeschaltet sein!

Auch Antivirusprogramme (und dann noch auf beiden Seiten) können die Performance erheblich belasten!!
Tipp1: deaktivieren hilft da nicht, nur deinstallieren
Tipp2: Norton, Kaspersky, McAffee sind als Performancebremsen bekannt

btw die Größe der DB-Dateien auf dem Client haben keine Auswirkungen. Das Frontend holt ja nur die Daten und zeigt sie an. Da aber per Programmierung definiert werden kann/muss wie viel Daten geholt werden, ist das das Entscheidende.

ym2c

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)
60730
60730 17.08.2009 um 13:08:07 Uhr
Goto Top
Servus Wolfgang,

ich muß an dieser Stelle meinem Ruf als Professioneller Nörgler alle Ehre machen - sonst macht es ein anderer und bezweifelt dein Fachwissen face-wink

Oder andersherum ich kaufe ein M und verschenke ein K face-wink

Zitat von @NetWolf:
Hallo FFK,

Clients mit vollem TEMP-Verzeichnis, nicht defragmentiert und nur mit
512 MB Ram sind tödlich langsam bei Datenbanken. Beim Client
wichtig: RAM und schnelle Festplatte (für die Auslagerung der
Daten wenn diese die RAM-Kapazität übersteigen).

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

zurück
NetWolf
NetWolf 17.08.2009 um 22:35:36 Uhr
Goto Top
Hallo Timo,

ich würde das nie als Fachwissen bezeichnen, es ist halt die Erfahrung face-wink

Konstruktive Kritik ist immer willkommen. Nur so kann man sich weiter entwickeln und aus seinen Fehlern lernen.

Mein Motto:
Wo gearbeitet wird, passieren Fehler. Wo keine Fehler passieren .....


Grüße noch aus Schönberg (Lübeck)
Wolfgang
(Netwolf)