AC97 DB bei Mehrfachzugriff quälend langsam!

Ich setze eine wirlich kleine Access97 DB im Netzwerk ein. Die Tabellen-Datei hat knapp 500 kb und das Frontend liegt auf dem jeweiligen Client (Größe ca. 2,5 MB).
Sobald sich zwei oder mehr Benutzer allerdings angemeldet haben kommen wahnsinnig lange Wartezeiten auf.
Als Server dient ein PII 400 mit 512 MB Ram und Raid 5 Controller. Sollte also schnell genug sein, für diese Datenbank - zumal auch noch ein 100’er Netzwerk.

Wie kann ich die Datenbank schneller machen? Biete Access da von Haus aus schon Möglichkeiten?

Ich setze eine wirlich kleine Access97 DB im Netzwerk ein.

Sobald sich zwei oder mehr Benutzer allerdings angemeldet
haben kommen wahnsinnig lange Wartezeiten auf.

Wie kann ich die Datenbank schneller machen? Biete Access da
von Haus aus schon Möglichkeiten?

So viel ich weiß ist Access von Haus aus nicht mehrbenutzerfähig. Eigentlich ist Access per Definition einer Datenbank keine Datenbank.

Peter

Hallo

Da nützt Dir ein guter Server gar nichts, da Access keine Client/Server Datenbank ist. Wenn Du Performance gewinnen willst musst Du entweder Deine Abfragen optimieren oder einen DB-Server einsetzen (SQLServer)

gruss, Giuseppe

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo.
Was Guiseppe und Peter geschrieben haben, stimmt im Prinzip.
Eine ganz kleine Optimierungsmöglichkeit hätte ich noch anzubieten : Access stellt nicht, wie ein richtiges DBMS, datensatzweise Informationen zur Verfügung, sondern blockweise, was im Extremfall den gesamten Datenbestand bedeuten kann. Es könnte! wirklich nur das! helfen, wenn Du die Datensatzsperrung auf „Keine“ schaltest, oder auch auf „bearbeiteter Datensatz“; das hängt davon ab, auf welche Blöcke die Benutzer im einzelnen zugreifen. Falls es nicht erforderlich ist, daß ständig der aktuelle Bestand vorgehalten wird, könntest Du noch mit Replikationen arbeiten … aber das ist schon nicht mehr ganz trivial (Aufwand/Nutzen???). Notfalls Mehl an [email protected].
Gruß, kw

Als Server dient ein PII 400 mit 512 MB Ram und Raid 5
Controller. Sollte also schnell genug sein, für diese
Datenbank - zumal auch noch ein 100’er Netzwerk.

Und was läuft auf dem Server? Windows NT Server (Domänen- oder Member-Group-Server), Windows 9x, Linux oder Novell?
Wir haben die Erfahrung gemacht, dass der fetteste NT-Server nichts taugt, wenn er falsch konfiguriert ist. Beispiel:
http://support.microsoft.com/support/kb/articles/Q19…

Also am besten einen Windows-98-Rechner als „Pseudo-Server“…

Gruß Tobias

Dummes Geschwafel!!!

So viel ich weiß ist Access von Haus aus nicht
mehrbenutzerfähig.

Doch, vollständig!

Eigentlich ist Access per Definition einer Datenbank keine Datenbank.

Dummes Geschwafel, von Leuten, die keine Ahnung von der Macht von Access haben. Access ist eine vollständige Datenbank mit RDBMS und die schnellste Programmieroberfläche, die ich im DB-Bereich kenne!

Alex

Netzwerkkonfiguration/Hardwareausstattung…Sind Deine 512 MB bereits mit dem Management der Platten und des Netzwerks ausgelastet? Du weißt, daß bei NT der RAM von der Plattengröße abhängig sein sollte…

Wieviel L2-Cache hat der Proz? Entscheidend bei Datenbanken!

Versuch’ mal Deine Transaktionen an die Datenbasis mit
application.begintrans und .committrans etc. abzufedern.
Den Vorschlag mit der Replikation zu arbeiten, würd’ ich mir gut überlegen. Bedeutet einen Heidenaufwand!

Eigentlich ist Access per Definition einer Datenbank keine Datenbank.

Dummes Geschwafel, von Leuten, die keine Ahnung von der Macht
von Access haben. Access ist eine vollständige Datenbank mit
RDBMS und die schnellste Programmieroberfläche, die ich im
DB-Bereich kenne!

Naja. Wir sprechen hier nicht über die Programmieroberfläche, die ich durchaus schätze, sondern über die Performancefrage bei Mehrbenutzerzugriffen. Da hat Access architekturbedingt eben riesige Schwächen.
Das allergrößte Problem ist, daß das sog. RDBMS auf Filebasis arbeitet, so daß, egal welche Daten benötigt werden, die Arbeit immer vom Client erledigt werden muß. Damit ist eine Optimierung auf Zugriffsebene unmöglich.

Schönen Gruß auch

J.

Gut, soweit richtig, aber Access als Nicht-Datenbank und Nicht-Mehrbenutzerfähig zu bezeichnen ist nun wirklich „Dummes Geschwafel“.
Und was hindert Dich denn eine stärkere Datenbank auf den Server zu legen, von Oracle bis MS SQLS etc. hast Du doch jede Wahl? Die haben dann auch Engines, die Dir die Arbeit der Clients abnehmen.
Nenn’ mir doch mal eine Datenbank, die in der unteren Datentechnik und für kleine, schnelle dirty-quick-kills, so schnell und einfach mit einer solch bequemen Oberfläche und tiefen MS-Office-Integration zu programmieren ist???

Noch folgende Hinweise: Zugriffe kannst Du mittels Transaktionen enorm beschleunigen, sofern die Änderungen nicht allzuviele DS betreffen und… aber dazu gibt es Quellen genug…
Die sorgfältige Optimierung von Abfragen lohnt sich meist.
Der sorgfältige Aufbau des Datenmodels bei konsequenter Durchbrechung (!) des ERM lohnt sich auch. Ich meine damit, daß es sich nicht immer lohnt, für jeden mehrfach vorkommenden Eintrag eine eigene Tabelle mit Verweis, Indizierung (die übrigens auch enorm beschleunigt), etc. pp. anzulegen. Meist reicht es, wenn der eine Eintrag dann doch mal geändert werden soll, dies mit einer distinct Abfrage abzurufen und mit einer Änderungsabfrage oder VBA zu ändern. Diese Vorgehensweise beschleunigt enorm, da dadurch einige Joins gespart werden.
Eine weitere Beschleunigung kannst Du erreichen, indem die Drop-Down und Listenfelder wegläßt (oder erst wenn sie wirklich benötigt werden, mit Daten füllst). Die behindern jede Datensatzoperation immens.

Grüße

Alex

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Und was hindert Dich denn eine stärkere Datenbank auf den
Server zu legen, von Oracle bis MS SQLS etc. hast Du doch jede
Wahl?

Nichts, tu ich auch. Nur hilft das den Fragesteller weniger, bzw. bestätigt das, was die Antworter gepostet haben: nimm eine richtige Datenbank, dann hast Du die Probleme nicht.

Nenn’ mir doch mal eine Datenbank, die in der unteren
Datentechnik und für kleine, schnelle dirty-quick-kills, so
schnell und einfach mit einer solch bequemen Oberfläche und
tiefen MS-Office-Integration zu programmieren ist???

Vielleicht Delphi, wobei ich es zugegebenermaßen nicht kenne. Und nochmal: es geht hier nicht um quick-dirty-kills, sondern um eine (ich unterstelle mal) mit viel Arbeit erstellte Lösung, die dann im Mehrbenutzerbetrieb versagt.

Noch folgende Hinweise: Zugriffe kannst Du mittels
Transaktionen enorm beschleunigen, sofern die Änderungen nicht
allzuviele DS betreffen und… aber dazu gibt es Quellen
genug…

…und mir brauchst Du sie nicht zu erklären. Führ Dir aber folgendes vor Augen: diese Möglichkeiten (und viele andere auch) hast Du unter einem richtigen RDBMS auch; vergleichst Du nach der Optimierung die Performance beider Systeme, dann bleibt Access eben weit abgeschlagen im Hintergrund - aus den genannten Gründen.

Die sorgfältige Optimierung von Abfragen lohnt sich meist.


… Die behindern
jede Datensatzoperation immens.

Ja, ohne Frage. Und doch wirst Du nie die Performance eines DB-Servers hinkriegen. Und Du wirst immer gewaltige Schwierigkeiten im Mehrbenutzerbetrieb haben; so gewaltige, daß Dir der Umstieg irgendwann nicht erspart bleibt.

Gruß

J.

Hi Carsten,

ja es gibt Möglichkeiten, schau doch mal bei MS unter:

http://www.microsoft.com/IntlKB/Germany/Support/kb/D…

nach, dort sind diese beschrieben.

mfg yeTTi

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]