Frage

Wir haben ein Fenster MFC-Anwendung, die gegen eine Access-Datenbank auf einem Firmenserver geschrieben wird. Der db ist nicht so groß: 19 MB. Es gibt höchstens 2-3 Benutzer es zu jeder Zeit erreichbar. Es wird in einer Fabrikumgebung verwendet, in denen Zugriffsgeschwindigkeit (oder deren Mangel) über das Intranet bemerkbar, da es Teil der Herstellungszeit für unsere Widgets ist.

Das Szenario ist folgende: wie jedes Widget abgeschlossen ist, es einen Datensatz in der db bekommt .. bis zum Ende des Jahres ist die db größer und für einen Datensatz der Suche dauert länger und länger. Die Lösung ist bisher etwa einmal im Jahr manuell ältere Einträge in eine Archivtabelle zu bewegen.

Wir sind Nacharbeiten andere Teile dieser App jetzt, und es wäre ein guter Zeitpunkt, um einen anderen db zu bewegen, wenn wir es tun werden.

Es ist mein Verständnis, dass, wenn wir SQL verwenden, würde die Suchzeit nach oben nicht wie die Tabelle größer wird, weil die gesamte .mdb nicht über das Netzwerk jedes Mal gesendet werden muss. Ist das richtig? Hat jemand einen Einblick darüber, ob es sich lohnen könnte es die Mühe (Zeit und Geld) zu gehen, der zu einem neuen db migrieren, oder sollte ich nur mehr Funktionalität der Anwendung hinzufügen, die wir jetzt haben, und vielleicht automatisch die älteren Einträge entfernt werden von Zeit zu Zeit, und zusätzliche Einrichtungen für die App in den älteren Datensätze hinzufügen zu erhalten, wenn erforderlich?

Vielen Dank für jede Weisheit können Sie teilen ..

War es hilfreich?

Lösung

Da Ihre Datenbank klein und sehr wenige Anwender sind, kann ich nicht einen soliden Fall für die Migration machen. Ich würde auf jeden Fall ein Skript einrichten alte Aufzeichnungen auf einer regelmäßigeren Basis zu archivieren (archiviere nicht in gleiche db, würde dies etwas Niederlage den Zwecks). Aber auch sicherstellen, dass zwei Dinge richtig sind als gut.

  1. INDIZES. Wenn Ihre Abfragen starten zu verlangsamen, stellen Sie sicher, dass Sie die richtige Indizes http://support.microsoft.com/kb/304272
  2. Ihre Netzwerkverbindung zwischen Computer ist schnell. Upgrade vielleicht auf Gigabit-Karten und Router? setzt möglicherweise die db auf einem SCSI-Laufwerk (RAID 10 für die Geschwindigkeit und Redundanz)

Werfen fortschrittliche Technologie auf einfache Problemen ist ein teurer Weg zu gehen und nicht immer die Antwort!

Andere Tipps

Vor allem der Information, dass die gesamte Tabelle und die gesamte Datenbank über das Netzwerk übertragen werden, ist einfach falsch. Wenn die Abfragen indiziert sind, dann gehen die Suchzeiten sollten nicht so viel über die Zeit.

Wie andere haben die Ausgaben der Zeit + Geld Setup erwähnt und pflegen und dann jemanden warten und verwalten und die Datenbankserver unterstützen sicherlich hier eine Möglichkeit. Beachten Sie jedoch, dass eine JET-basierte Anwendung auf SQL Server in vielen Fällen einfach migrieren langsamer läuft, und in der Tat SQL Server ist langsamer als JET, wenn kein Netzwerk beteiligt ist.

Also, ich würde einige Zeit in Anspruch nehmen feststellen, warum die Dinge so viel verlangsamen, und auch zu prüfen, wie sich die Indizierung ist Setup.

Also, nur im Kopf behalten, dass es reine Folklore und Mythos, dass die ganzen Tabellen und ganze Datenbank werden das Netzwerk übertragen über. Dieses Konzept ist nur an den meisten Leuten wirklich keine Computer-Ausbildung zu haben und nicht zu wissen und zu verstehen, wie der JET Daten Motor funktioniert.

Ich würde wahrscheinlich zu jeder Microsoft SQL Server 2008 R2 Express Edition (kostenlos) oder MySQL (kostenlos) bewegen, wenn beide dort Finanzierung und die Zeit ist in einer Datenzugriffsschicht zu setzen. Da Sie von einem Remote-Server werden machen Anfragen werden und nicht auf Daten auf der lokalen Workstation-Betriebs dieser Schritt sehr von der Entwicklung Standpunkt beteiligt ist.

Allerdings sollten Sie analysieren, ob seine kostengünstiger Ihren Archivierungsprozess auszuführen vierteljährlich oder monatlich, und nur die Archiv-Datenbank auf SQL Server 2008 R2 Express Edition bewegen. (Sie können die Microsoft SQL Server Management Studio-Client-Tools auf Workstations installieren und Abfrage der Archivdatenbank für eine schnellere Berichte über historische Daten ohne Ihre gesamte Produktionsanwendung zu Umschreiben, ähnliche Lösungen gibt es für den Einsatz von MySQL oder anderen OSS / freie RDBMS).

Ich habe cilents mit 300 mb Datenbanken, obwohl sie aus anderen Gründen zu SQL Server sein upsizing sollten. 19 Mb ist relativ klein. Wenn die Leistung ist schlimm genug, dass die Archivierung beschleunigt die Dinge dann die Indizes für alle Ihre Sortier- und Auswahlfelder in den Tabellen überprüfen. Albert hat Ihnen eine gute URL dort zu überprüfen.

Entire MDB-Dateien gehen Sie nicht den Draht. Es sei denn, Sie fehlen Indizes.

Statt der Versand die DB über das Netzwerk an den Client und dann Abfragen durchführen, könnten Sie stattdessen einen kleinen Wrapper auf dem Server schreiben, dass Griffe Anfragen, Blicke auf das Ergebnis in der Access-DB (unter Verwendung von SQL + den Access ODBC-Treiber) und gibt das Ergebnis zurück. Dies vermeidet den Aufwand einer großen Migration Sie nicht benötigen und kommt noch loszuwerden, das Grundproblem der Benutzer auftritt.

Der Umzug in eine „richtige“ Datenbank-Lösung ist die beste langfristige Lösung, aber wenn Ihre Bedürfnisse skalieren linear und langsam über die nächsten 30 Jahre, ist es schwer, eine teure Migration zu rechtfertigen. Das heißt, wenn Sie wirklich erwarten, Rampe, oder wollen mehr „zukunftssicher“, die Migration jetzt sein wird wahrscheinlich Geld sparen / Zeit.

Es ist mein Verständnis, dass, wenn wir Verwendung von SQL, würde die Suchzeit nicht steigen als die Tabelle größer, weil bekommt die gesamte .mdb muss nicht sein über das Netzwerk jedes Mal gesendet. ist das richtig?

Diese allgemeine Idee ist für fast alle Datenbanken wahr. Die Idee einer Datenbank ist Ihre Anwendung von den tatsächlichen Daten zu trennen. Die Daten befinden sich in einem Datenbankserver. Ihre Anwendung nicht.

hat jemand eine Einsicht über ob es könnte sich lohnen, um zu gehen die Schwierigkeiten (Zeit und Geld) von Migration auf eine neue db

Ja. Nachdem dies viele Male vorgeschlagen. Es ist teuer. Es ist kompliziert. Ihre MS-Access-Datenbank wird nie besser oder schneller.

Andere Datenbankserver (und kann) immer schneller und immer ausgefeilter. Schließlich sind das Senden Sie nicht MDB-Dateien über ein Netzwerk mehr. Die Einschränkungen werden reduziert. Sie sind mit Standard-SQL über ODBC arbeiten. Jede Datenbank wird am Ende von ODBC arbeiten. Sie können Anbieter abfeuern, um besser, schneller, billiger Produkte. Sobald Sie mit Access stoppen Sie Entscheidungen.

So oder Stopp mit Access jetzt oder planen mit ihm für immer leiden. Und Remake jedes Jahr diese Entscheidung bis zum Ende der Zeit.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top