Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Zugriff auf Datenbank extrem langsam
Parn - Do 19.04.12 09:13
Titel: Zugriff auf Datenbank extrem langsam
Hallo zusammen,
ich habe ein Programm geschrieben, das auf eine Datenbank zugreift, die sich auf einem Netzlaufwerk befindet.
In der Bedienoberfläche befindet sich ein DataGridView Fenster, in dem die Datensätze via BindingSource eingefügt werden.
Das hat in den Tests mit nur ~10 Einträgen in der Datenbank auch alles wunderbar funktioniert. Jetzt habe ich jedoch ~1000 Einträge in der Datenbank und nun ist die Anzeige selbiger im Programm extrem langsam. Das dauert ca. 10s, auch wenn ich die Tabelle nur nach einer anderen Spalte sortieren lasse.
Das Programm ist immer noch exakt das selbe. Die einzige Änderung war in der Anzahl der DB Einträge.
Ich habe das Programm versuchsweise ebenfalls auf das Netzlaufwerk gelegt, jedoch hat sich das ebenfalls nicht positiv auf das Problem ausgewirkt.
Woran kann das liegen? 1000 Einträge in einer DB sind ja eigentlich noch nicht wirklich viel.
Bin für jeden konstruktiven Rat dankbar!
mf Parn
Ralf Jansen - Do 19.04.12 09:37
Zitat: |
1000 Einträge in einer DB sind ja eigentlich noch nicht wirklich viel. |
Das hängt davon ab was für eine Datenbank du benutzt. Wahrscheinlich hier ein Desktopdatenbank (Access etc.). Dort liegt die Logik für die Sql Abfrage im Treiber der Datenbank also im Prozessraum der Anwendung die diesen Treiber hostet. Wenn du also eine SQL Operation ausführst ala 'gib mir einen Datensatz aus Tabelle soundso' dann kann der Treiber nix anderes machen als sich im Prinzip das Datenbankfile komplett zu ziehen die Tabellendaten raus holen und alles wieder wegzuwerfen was er nicht braucht. Da also die gesamten Daten ständig über die Leitung gehen kann das nicht wirklich schnell sein. Die Daten einer Desktopdatenbank sollte man immer nur da ablegen wo auch der Prozess läuft. Wenn du Anwendung und Daten im Netz verteilst solltest du lieber auf einen Serverdatenbank mit einem entsprechenden Serverprozess setzen oder gleich eine mehrschichtige Anwendung schreiben mit eigenem Serverprozess.
Parn - Do 19.04.12 10:07
Hallo Ralf und danke für die schnelle Antwort.
In der Tat verwende ich eine MS Access DB.
Leider habe ich hier nur ein normales Netzlaufwerk zur Verfügung.
Und die DB sollte dort auch tatsächlich liegen.
Man sollte von ~5 PCs über die WindowsForms Applikation darauf zugreifen können.
Was würdest du mir empfehlen?
Ralf Jansen - Do 19.04.12 10:12
Zitat: |
Was würdest du mir empfehlen? |
Bei einer verteilten 2-schichtigen Access Multiuseranwendung? Ein dickes Fell ;)
Empfehlungen wäre eine Serverdatenbank oder eben ein eigener Serverprozess der den Zugriff auf die Accessdatenbank regelt und so nah wie möglich am Datenbankfile läuft. Also am besten auf dem gleichen Server.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!