Frage

Ich bin interessiert, um herauszufinden, ob es ein Performance-Vorteil ist es, eine numerische Spalte zu partitionieren, die oft das Ziel einer Abfrage. Im Moment habe ich eine materialisierte Ansicht, die ~ 50 Millionen Datensätze enthält. Wenn ein regelmäßigen b-Baum-Index mit und durch diese numerische Spalte Suche erhalte ich ein Kosten von 7 und Abfrageergebnissen in etwa 0,8 Sekunden (mit nicht gefülltem Cache). eine globale Hash-Partition (mit 64 Partitionen) für diese Spalte bekomme ich einen Preis von 6 und Abfrageergebnissen in etwa 0,2 Sekunden (wieder mit nicht gefülltem Cache) Nach der Zugabe.

Meine erste Reaktion ist, dass die partitionierten Index die Leistung meiner Abfrage verbessert hat. Allerdings merke ich, dass dies nur ein Zufall sein kann und völlig abhängig zu sein suchten auf den Werten sein könnte, oder andere, die ich bin mir nicht bewusst. Also meine Frage ist: ein Leistungsvorteil von knapp ein eine vollständige Palette Scan tun, ist es durch die Kosten zu scannen out-gewogen, um eine globale Hash-Partition in eine numerische Spalte auf einem großen Tisch oder die Kosten für die Bestimmung, welche Indexpartitionen zum Hinzufügen nicht-indizierten Partition?

Ich bin sicher, dass dies, wie viele Oracle Fragen können mit beantwortet werden ein „es kommt.“ :) Ich habe Interesse an lernen, welche Faktoren sollte ich die Vorteile der einzelnen Ansätze zu bestimmen, in Betracht ziehen.

Danke!

War es hilfreich?

Lösung

Ich bin mir ziemlich sicher, dass Sie diese Referenz bei Ihrer Recherche gefunden - partitionierten Tabellen und Indizes . Jedoch habe ich einen Link zu geben, wenn jemand interessiert ist, ist dies ein sehr gutes Material zum Thema Partitionierung.

Auf den Punkt - partitionierten Index zerfällt nur den Index in Stücke (16 in Ihrer Situation) und die Daten verteilt auf ihre Hash-Partitionierungsschlüssel abhängig. Wenn Sie es verwenden möchten, Oracle „berechnet“ der Hash des Schlüssels und bestimmen, in dem Abschnitt mit der Suche fortzusetzen.

Zu wissen, wie Index Suche Werke, auf wirklich große Daten Ich denke, es ist besser, den partitionierten Index wählen, um den Indexbaum zu verringern Sie Traverse (regulärer Index). Es hängt wirklich von den Daten, die in der Tabelle ist (wie regelmäßiger Indexbaum besteht) und ist Hashing und direkter Sprung Knoten schneller als vom Startknoten regulärer Baum Traverse zu senken.

Schließlich müssen Sie mit den Testergebnissen mehr sicher sein. Wenn eine Technik, bessere Ergebnisse auf Ihre genaue Daten als einige andere gibt, gebe dir keine Sorgen, sie umzusetzen.

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