In einer kleinen Artikelserie beschäftigt sich Jonathan Lewis mit den Änderungen im Bereich der Histogramme im neuen Oracle-Release 12c:
- 12c histograms: liefert eine Zusammenfassung zu den Veränderungen/Verbesserungen, die in 12c eingeführt wurden. Meine Zusammenfassung dieser Zusammenfassung wäre:
- Erweiterung des bisher nur für basic column stats verfügbaren approximate NDV Mechanismus auf frequency histograms.
- Bereitstellung eines neuen Typs von fequency histograms: "Top-N histogram" (die in vielen Fällen height-balanced histograms ersetzen).
- Erhöhung der maximalen Bucket-Anzahl auf 2000 (der default bleibt aber 254).
- Bereitstellung eines neuen Typs von height-balanced histograms: "hybrid histogram".
- 12c Histograms pt.2: erklärt den neuen Mechanismus zur Erzeugung von frequency histograms und die Implementierung der Top-N frequency histograms.
- der für die Erzeugung von frequency histograms in 12c verwendete approximate NDV Mechanismus geht folgendermaßen vor: zu jedem erzeugten hash value wird im Rahmen des Table Scans die erste rowid und die Gesamtanzahl der Vorkommen festgehalten. Wenn die Anzahl der unterschiedlichen hash values am Ende des Scans unterhalb der Anzahl vorgesehener Buckets liegt (also 254 oder 2000), dann können die zu den hash values gehörigen Werte per rowid lookup ermittelt werden.
- wenn die Anzahl der erforderlichen Buckets (d.h. die Anzahl der ermittelten hash values) größer ist als die Anzahl der möglichen Buckets kann Oracle in 12c an Stelle eines height-balanced histograms ein Top-N frequency histogram verwenden, sofern die meisten Daten einer überschaubaren Anzahl von Werten zugeordnet sind. In diesem Fall wird jeweils ein Bucket für den minimalen und den maximalen Wert reserviert und die übrigen N-2 buckets für die am häufigsten vorkommenden Werte verwendet. Das Verfahren sollte in geeigneten Fällen deutlich bessere Dienste leisten als ein height-balanced histogram.
- 12 Histogram fixes: mit Links auf ältere Artikel zum Verhalten in Extremfällen (mit langen Strings), das sich in 12c verändert hat, weil die Definition von ENDPOINT_ACTUAL_VALUE geändert wurde - was aber nicht alle Probleme löst.
Die Zusammenfassung weiterer Artikel werde ich bei Erscheinen - und Gelegenheit - ergänzen.
Keine Kommentare:
Kommentar veröffentlichen