2012-04-11 12 views
0

Ich entwickle eine Protokolldatenbank, die IDs der Komponenten werden in diesem Fall nicht von der Datenbank selbst bestimmt, sondern von dem System, das den Bericht sendet. Die System-ID ist ein eindeutiger varchar und die ID der Komponente wird vom System bestimmt (an einem weit entfernten Ort), so dass die Eindeutigkeit gewährleistet ist, wenn der Primärschlüssel der Komponente system_id + component_id ist.Varchar und Composite Primärschlüssel in MySQL?

Ich frage mich, ob dieser Ansatz effizient sein wird. Ich könnte automatisch inkrementierte Ganzzahlen als ID verwenden, aber das würde bedeuten, dass ich vor dem Einfügen Auswahloperationen ausführen müsste, um diese generierte ID zu erhalten, anstatt die bereits bekannte String-ID zu verwenden, die das System bereitstellt.

Die Datenbank wird klein sein, nicht mehr als ein paar Dutzend Systeme mit jeweils einigen Dutzend Komponenten und vielleicht einige tausend Komponenten-Updates (eine andere Tabelle). Alte Updates werden regelmäßig in eine Datei ausgelagert und aus der Datenbank entfernt, so dass sie niemals "groß" wird.

Irgendwelche Empfehlungen?

Antwort

1

Ich bin sicher, Sie werden feststellen, dass Tabellen mit mehreren Millionen Zeilen mit varchar() - Schlüsseln gut funktionieren.

Es ist einfach genug zu testen. Importieren Sie einfach Ihre Daten.

+0

Ich habe einige Tests und die Datenbank funktioniert gut mit Hunderttausenden von Component und Component_Update Zeilen (zufällig generiert). Es hat irgendwo um 1mb für jede 10 tausend Reihen auf jedem Tisch gemessen, so dass für die Größen, die ich erwarte, das in Ordnung ist. Es erspart mir die Aufgabe, mehr Joins durchzuführen und pro Anfrage auszuwählen. Ich habe die Größen der IDs auf 32 und 64 Zeichen begrenzt, aber Objektnamen sind in der Regel unter 16. – elite5472

1

Ich würde in Richtung automatisch inkrementierte Ganzzahlen als Primärschlüssel neigen und Indizes auf System_id und Component_id setzen. Ihre Auswahl vor dem Einfügen ist sehr günstig und schnell.

Verwandte Themen