2014-03-14 5 views

Antwort

14

Q1: Es gibt kein explizites Limit in the docs. In der Praxis sind einige Operationen O (n) auf der Anzahl der Tabellen; erwarten Sie, dass die Planungszeiten zunehmen, und Probleme mit Dingen wie Autovacuum, wenn Sie zu vielen Tausenden oder Zehntausenden von Tabellen in einer Datenbank kommen.

Q2: Es hängt von der Abfrage ab. Im Allgemeinen sind große Gewerkschaften eine schlechte Idee. Tabellenvererbung funktioniert ein wenig besser, aber wenn Sie constraint_exclusion verwenden, führt dies zu stark erhöhten Planungszeiten.

Diese beiden Fragen deuten auf ein zugrunde liegendes Problem mit Ihrem Design hin. Sie sollten nicht brauchen massive Anzahl von Tabellen und riesigen Gewerkschaften.

Mit dem Kommentar in der anderen Antwort sollten Sie wirklich nur ein paar Tabellen erstellen. Sie scheinen eine Tabelle pro Telefonnummer zu erstellen, was unsinnig ist, und darüber hinaus Ansichten pro Nummer zu erstellen. Tun Sie das nicht, es führt zu falschen Daten und erschwert oder erschwert die Zusammenarbeit. Indizes, where-Klauseln und Joins ermöglichen es Ihnen, die Daten effektiver zu verwenden, wenn sie logisch in ein paar Tabellen strukturiert sind. Ich schlage vor, grundlegende relationale Modellierung zu studieren.

Wenn Sie später Probleme mit der Skalierbarkeit haben, können Sie sich partitioning ansehen, aber dafür werden Sie nicht Tausende von Tabellen benötigen.

+0

Vielen Dank. – Meem

+0

Die größte Datenbank, die ich je gesehen habe, war ein ERP-System von JD Edwards (glaube ich). Es hatte ungefähr 20.000 Tabellen, die auf Oracle laufen. Aber das ist definitiv ein Ausreißer. –

+0

@ MikeSherrill'CatRecall 'Es ist nicht allzu ungewöhnlich, viel höhere Tabellenzahlen zu sehen, dank der Verwendung von 'search_path' für die Partitionierung von armen Menschen, wo das Schema pro Kunde geklont wird. –

2

Beide sind im praktischen Sinne unbegrenzt.

Die Anzahl der Tabellen, die eine Datenbank enthalten kann, ist durch den Speicherplatz auf Ihrem Festplattensystem beschränkt. Eine Datenbank mit mehr als ein paar Tausend Tabellen ist jedoch eher Ausdruck einer inkorrekten Analyse Ihrer Anwendungsdomäne. Gleiches gilt für Gewerkschaften: Wenn Sie mehr als eine Handvoll Tabellen zusammenführen müssen, sollten Sie sich Ihre Tabellenstruktur ansehen. Ein praktisches Szenario, wo dies passieren kann, ist mit Postgis: viele Tabellen mit ähnlichen Attributen, die in einer einzigen Ansicht verbunden werden könnten (das ist ein Fehler in der Gestaltung von Postgis IMHO), aber das würde in der Regel behandelt werden Anwendungsseite (zB ein GIS).

Können Sie Ihr Szenario erklären, wo Sie eine sehr große Anzahl von Tabellen benötigen, die auf einmal abgefragt werden müssen?

+0

Szenario ist so: Ich möchte eine Datenbank zum Beispiel als "Call Details Recorder" erstellen. Hier möchte ich die Nummerntabellen für jede angerufene Nummer und Turmnummern anders speichern, die auch in Millionen sein sollten. Und ich möchte auch Ansichten für jede angerufene Nummer separat für weitere Quries erstellen. – Meem

+1

Also wenn ich dich richtig verstehe, willst du Handygespräche speichern, aufzeichnen welche Nummer eine andere Nummer angerufen und durch welche Türme diese Anrufe registriert wurden? Wenn ja, dann möchten Sie eine einzelne Tabelle für die Türme, eine einzelne Tabelle für alle Telefonnummern mit Anrufernamen und andere Details, die Sie haben.Beide Tabellen haben einen Primärschlüssel und dann machen Sie eine dritte Tabelle, die Anrufer-P-Taste, Empfänger-P-Taste, Turm-P-Taste, Anrufzeit, Dauer usw. aufzeichnet. Das Erstellen der Ansichten ist dann sehr einfach. Wo, glaubst du, brauchst du sehr viele Tische? – Patrick

+0

@ user3382347 Ja, das klingt, als ob du vier oder fünf Tische brauchst, nicht Tausende. Erstellen Sie keine Sichten für jede Zahl, verwenden Sie eine SQL-Funktion oder eine einfache 'Where'-Klausel. Möglicherweise müssen Sie [Ihre Tabellen partitionieren] (http://www.postgresql.org/docs/current/static/ddl-partitioning.html) skalieren, aber dafür benötigen Sie (oder wollen) nicht Tausende von Tabellen . –

Verwandte Themen