JIT-Statistik

Das System generiert automatisch und in einer für Benutzer transparenten Weise eine Just-in-time-Statistik (JIT-Statistik) auf der Basis von Benutzertabellen, um das Optimierungsprogramm bei der Planungsoptimierung zu unterstützen.

Die JIT-Statistik wird nicht für Systemtabellen, externe Tabellen oder virtuelle Tabellen erstellt. Die JIT-Statistik verbessert die Selektivitätsschätzungen, wenn eine Tabelle eine ungleiche Datenverteilung aufweist oder wenn komplexe Spalten-/Joineinschränkungen vorliegen. Außerdem verwendet das System die JIT-Statistik, um zu vermeiden, dass umfangreiche Tabellen, die auf der Basis von verfügbaren Statistikdaten als zu klein eingestuft wurden, im Broadcastbetrieb übertragen werden. Der Aufwand für diese während des Betriebs erstellte Statistik ist im Vergleich zur insgesamt verbesserten Abfrageleistung und Gesamtabfragezeit vernachlässigbar.

Die JIT-Statistik verwendet Sampler-Scan-Funktionalität und Zonenmapinformationen zur bedingten Erfassung mehrerer Einzelinformationen:
  • Die Anzahl Zeilen, die für die Zieltabelle gescannt werden
  • Die Anzahl Extents, die für die Zieltabelle gescannt werden
  • Die maximale Anzahl Extents, die für die Zieltabelle in den Datenausschnitten mit der größten ungleichen Verteilung gescannt werden
  • Die auf jeden Join angewendete Anzahl Zeilen, die für die Zieltabelle gescannt werden
  • Die Anzahl eindeutiger Werte für eine beliebige Zieltabellenspalte, die bei der nachfolgenden Join- oder GROUP BY-Verarbeitung verwendet wird

Diese Informationen werden bedingt angefordert und verwendet, um die Anzahl der aus einer Tabellensuche oder einer Join- oder GROUP BY-Operation resultierenden Zeilen zu schätzen.

Hinweis: JIT-Statistiken machen die Ausführung des Befehls GENERATE STATISTICS nicht überflüssig. Während die JIT-Statistik bei der Zeilenschätzung unterstützt, gibt es Situationen, in denen vom GENERATE STATISTICS-Befehl berechnete Kataloginformationen in nachfolgenden Berechnungen verwendet werden, um die Zeilenschätzungen zu ergänzen. Der GENERATE STATISTICS-Prozess erfasst abhängig von der Tabellengröße keine Streuung, da der JIT-Statistikscan sie während der Verarbeitung nach Bedarf schätzt.
Das System führt die JIT-Statistik automatisch für Benutzertabellen aus, wenn es die folgenden Bedingungen erkennt:
  • Tabellen mit mehr als 5.000.000 Datensätzen.
  • Abfragen, die mindestens eine Spalteneinschränkung enthalten.
  • Tabellen, die an einem Join beteiligt sind oder für die es eine zugehörige materialisierte Ansicht gibt. Die JIT-Statistik wird in materialisierte Ansichten integriert, um sicherzustellen, dass die exakte Anzahl Extents gescannt wird.

Die System führt die JIT-Statistik sogar im EXPLAIN-Modus aus. Zur Überprüfung, ob die JIT-Statistik ausgeführt wurde, können Sie die Ausgabe von EXPLAIN VERBOSE prüfen und nach Kardinalitätsschätzungen suchen, die mit JIT markiert sind.