Index vs. Partition

20

Warum können Leistungsverbesserungen nicht nur mit Indizes erzielt werden, sodass andere Techniken wie die Tabellenpartitionierung erforderlich werden? Die Frage bezieht sich nur auf die Leistung. Natürlich können verschiedene Partitionen in verschiedene Tablespaces gestellt werden. Dies hat andere Auswirkungen, die mit Indizes nicht erreicht werden können.

Oder anders ausgedrückt, nur in Bezug auf die Leistung: Können mit Indizes dieselben Leistungsverbesserungen erzielt werden wie mit der Partitionierung von Tabellen?

Paweloque
quelle
2
Anstatt sich das Indizieren und Partitionieren als Entweder-Oder-Lösung zur Leistungsverbesserung vorzustellen, sollten Sie sich beides als Werkzeuge vorstellen, die einzeln oder zusammen verwendet werden können, um Leistungsverbesserungen in Ihrer Datenbank zu erzielen.
ScottCher

Antworten:

18

Nein, bei der Partitionierung können einige Tabellensuchen auf eine bestimmte Partition beschränkt werden. Indizes sind in der Regel nutzlos, wenn Sie mehr als 2 bis 4 Prozent der Tabellendaten zurückgeben. Wenn Ihre Auswahlkriterien die Lokalisierung der Abfrage auf eine bestimmte Partition zulassen, müssen die anderen Partitionen nicht gescannt werden.

Möglicherweise kann das Optimierungsprogramm die Tabellensuche für einige Partitionen und Indizes für andere verwenden. Ich habe keine Erklärungspläne gesehen, die darauf hinweisen, dass dies geschieht.

Wenn Sie viele historische Daten haben, können Abfragen für aktuelle Daten erstellt werden, um die Partitionen, die berücksichtigt werden, auf diejenigen zu beschränken, die aktuelle Daten enthalten.

BillThor
quelle
3
Ich, du erstellst Partitionen. Achten Sie darauf, für jede Partition das richtige Speichergerät auszuwählen. Legen Sie die eigentliche Datenpartition auf ein Hochgeschwindigkeitslaufwerk und die ältere auf einen anderen Typ.
Nico
7

Um direkt auf Ihre letzte Frage zu antworten: Nein, ich glaube nicht, dass sie gleichwertig sind. Stellen Sie sich eine sehr große Tabelle vor (zig GB), die nach den Daten eines Tages durchsucht werden muss. Wenn Sie tägliche Partitionen verwenden, scannen Sie nur die Daten dieses Tages ohne Platzverlust, während ein Index eine separate Struktur ist, die möglicherweise nicht genügend Informationen enthält (und auch Platz beansprucht, was bei großen Datenbanken von Belang ist) oder nicht selektiv genug.

Auf jeden Fall konkurrieren Indizes und Partitionen nicht um die gleichen Vorteile in Bezug auf Nutzung und Leistung. Sie sollten das Guthaben in Ihrer Datenbank finden.

Marian
quelle