0 / 0
Zurück zur englischen Version der Dokumentation
COLLECT_STATISTICS gespeicherte Prozedur in der Data Virtualization
Letzte Aktualisierung: 26. Nov. 2024
COLLECT_STATISTICS gespeicherte Prozedur in der Data Virtualization

Sammelt Statistiken für virtualisierte Tabellen in der Data Virtualization. Der Optimierer Data Virtualization verwendet diese Statistiken, um die optimalen Zugriffspläne für die effiziente Verarbeitung Ihrer Abfragen zu ermitteln. Schema: DVSYS.

Mit mehr Tabellenstatistiken kann das Optimierungsprogramm bessere Entscheidungen treffen, um die bestmöglichen Zugriffspläne bereitzustellen. Wenn Sie COLLECT_STATISTICS für eine Tabelle ausführen, werden nachfolgende Abfragen für diese Tabelle in der Regel deutlich schneller ausgeführt. Weitere Informationen finden Sie unter Sammeln von Statistiken in der Data Virtualization.

Wichtig: Verwenden Sie den Befehl ANALYZE (anstelle der Prozedur COLLECT_STATISTICS ), um Statistikdaten zu virtualisierten Tabellen über Objektspeicher zu erfassen. Weitere Informationen finden Sie unter Befehl ANALYZE. Um festzustellen, welche virtualisierten Tabellen über Objektspeicher erstellt werden, können Sie virtualisierte Objekte nach Typ filtern. Wählen Sie Object Storage, Tabelleoder Ansicht im Menü Filter in Daten > Data virtualization > Virtualisierte Datenaus.

Berechtigung

Um die Prozedur ' COLLECT_STATISTICS ausführen zu können, müssen Sie ein Data Virtualization Manager oder Engineer sein. Weitere Informationen finden Sie unter Verwalten von Rollen für Benutzer in der Data Virtualization.

Um Statistiken zu sammeln, müssen Sie über die entsprechenden Berechtigungen an der entfernten Datenquelle und in der Data Virtualization verfügen. .

Eingabeparameter

Virtschema
Der Typ dieses erforderlichen Parameters ist VARCHAR (128). Gibt den Schemanamen der virtualisierten Tabelle an.
Virtname
Der Typ dieses erforderlichen Parameters ist VARCHAR (128). Gibt den Namen der virtualisierten Tabelle an.
Virtcolumns
Der Typ dieses optionalen Parameters ist VARCHAR (32672). Gibt eine durch Kommas getrennte Liste mit Namen der Spalten an, für die Statistikdaten erfasst werden. Ein Nullwert gibt an, dass Statistikdaten für alle Spalten erfasst werden. Eine leere Zeichenfolge gibt an, dass keine Spaltenstatistikdaten erfasst werden. In diesem Fall wird nur die Tabellenkardinalität erfasst. Wenn ein Spaltenname Sonderzeichen enthält, muss er in Anführungszeichen eingeschlossen werden.
collection_type
Der Typ dieses erforderlichen Parameters ist SMALLINT. Gibt den Typ der Statistikerfassung an Gültige Werte sind 1 (Typremote-catalog ) und 2 (Typremote-query ):
fern-Katalog
Dieser Typ der Statistikerfassung wird nur für virtualisierte Tabellen in fernen Datenquellen unterstützt, die eine lokale Methode der Statistikerfassung unterstützen. Statistiken, die in den Katalogtabellen der entfernten Datenquelle gespeichert sind, werden abgerufen und dann im Statistikkatalog Data Virtualization gespeichert.Es ist wichtig sicherzustellen, dass genaue Statistikdaten in der fernen Datenquelle verfügbar sind. Der remote-catalog-Typ der Statistikerfassung wird für gruppierte Tabellen nicht unterstützt.
Ferne Abfrage
Dieser Typ der Statistikerfassung verwendet SQL-Abfragen für die virtualisierte Tabelle, um die Statistikdaten zu berechnen.Dieser Typ kann ressourcenintensiv sein und lange dauern, bis die Ausführung abgeschlossen ist, wenn die virtualisierte Tabelle viele Zeilen oder Statistikdaten für viele Spalten erfasst. Um die Leistung zu verbessern und Ressourcen zu sparen, können Sie Statistiken mit Datensampling sammeln, indem Sie die Option TABLESAMPLE in der gespeicherten Prozedur COLLECT_STATISTICS in der Data Virtualization angeben oder den Befehl " ANALYZE für Datenquellen im Cloud Object Storage verwenden.
Optionen
Der Typ dieses optionalen Parameters ist VARCHAR (32672). Gibt eine durch Kommas begrenzte Liste mit zusätzlichen Parametern an
TABLESAMPLE
Gibt einen Doppelwert zwischen 0 und 99 einschließlich an. Der Wert stellt den Prozentsatz der Tabelle dar, für die eine Stichprobe erstellt werden soll, wenn Statistikdaten berechnet werden. Der Standardwert 0 gibt an, dass keine Stichprobenentnahme erfolgen soll. Diese Option ist nur mit dem Statistikerfassungstyp remote-query gültig.
STICHPROBENSCHWELLENWERT
Gibt einen ganzzahligen Wert größer als 0an. Der Wert stellt die Mindestanzahl von Zeilen dar, die eine Datenquelle enthalten muss, bevor die Stichprobenentnahme (sofern angegeben) verwendet werden kann. Der Standardwert ist 1000. Wenn die Anzahl der Zeilen kleiner als dieser Schwellenwert ist, wird bei der Berechnung der Spaltenstatistik keine Stichprobe verwendet. Diese Option ist nur mit dem Statistikerfassungstyp remote-query gültig.

Ausgabeparameter

Diagnose
Der Typ dieses Parameters ist VARCHAR (32672). Stellt eine Diagnoseausgabe dar, wenn ein Fehler auftritt, und eine Zusammenfassung der erfassten Statistikdaten mit abgekürzten Ergebnissen.

Hinweise zur Verwendung

  • Führen Sie die Prozedur COLLECT_STATISTICS entweder direkt oder über den Data Virtualization aus, wenn Sie wesentliche Änderungen an den Daten in der Remote-Datenquelle vornehmen.
  • Wenn ein Spaltenname Sonderzeichen enthält, muss er in Anführungszeichen eingeschlossen werden.
  • Wenn die ferne Datenquelle Tools zum Zusammenstellen lokaler Statistikdaten unterstützt, müssen Sie sicherstellen, dass lokale Statistikdaten erfasst werden und dass der Typ remote-catalog zum Erfassen von Statistikdaten für die virtualisierte Tabelle verwendet wird.
  • Wenn die ferne Datenquelle keine Tools zum Zusammenstellen lokaler Statistikdaten unterstützt, ist der Typ remote-query die einzige verfügbare Option. Wenn die virtualisierte Tabelle viele Zeilen enthält, verwenden Sie die Option TABLESAMPLE. A sampling rate of 20% is recommended in most cases.
  • Wenn Sie die Option TABLESAMPLE nicht angeben, hat die Option SAMPLING_THRESHOLD keine Auswirkung.
  • Wenn Sie die Option TABLESAMPLE angeben und die Anzahl der Zeilen in der virtualisierten Tabelle kleiner als SAMPLING_THRESHOLD (Standardwert 1000) ist, findet keine Stichprobenentnahme statt, da die resultierende Statistik nicht optimal wäre.
  • Wenn Sie die Option TABLESAMPLE angeben, ist die Statistikerfassung möglicherweise nicht optimal, wenn die Stichprobenrate zu niedrig ist. Eine Erhöhung der Stichprobenrate verbraucht jedoch mehr Ressourcen und verringert die Leistung der Statistikerfassung.
  • Wenn Sie die Option TABLESAMPLE angeben, ist die Statistikerfassung möglicherweise nicht optimal, wenn die virtualisierte Tabelle eine begrenzte Anzahl von Zeilen enthält. Erhöhen Sie in diesem Fall den Wert TABLESAMPLE oder erstellen Sie keine Datenstichprobe.
  • Wenn die virtualisierte Tabelle auf eine Sicht in der fernen Datenquelle verweist, ist der Typ remote-query die einzige verfügbare Option und die Option TABLESAMPLE wird nicht unterstützt.
  • Wenn Sie die Option TABLESAMPLE mit einer Stichprobenrate nahe bei 100 angeben, die Statistikerfassung jedoch weiterhin nicht optimal ist, sollten Sie eine Änderung des Werts für SAMPLING_THRESHOLD in Betracht ziehen.
  • Für Spalten des Typs LOB wird nur die Statistik NUMNULLS erfasst.

Beispiele

Die folgenden Beispiele verwenden virtualisierte Tabellen über Tabellen, die Teil der Datenbank SAMPLE in IBM Db2®sind. Weitere Informationen finden Sie unter Datenbank SAMPLE.

  • Mit dem Typ remote-catalog können Sie Statistikdaten für alle Spalten in der Tabelle DEPARTMENT erfassen.
    call dvsys.collect_statistics('SAMPLE', 'DEPARTMENT', null, 1, null, ?)
    Value of output parameters
    --------------------------
    Parameter Name  : DIAGS
    Parameter Value : Collected statistics for table "SAMPLE  "."DEPARTMENT":
    Table Cardinality = 14
    Column "LOCATION" [CHAR(16)]:  colcard=1, numnulls=14, highkey="", lowkey=""
    Column "ADMRDEPT" [CHAR(3)]:  colcard=3, numnulls=0, highkey="E01", lowkey="A00"
    Column "DEPTNAME" [VARCHAR(36)]:  colcard=14, numnulls=0, highkey="SPIFFY COMPUTER SERVICE DIV.", lowkey="BRANCH OFFICE F2"
    Column "MGRNO" [CHAR(6)]:  colcard=9, numnulls=6, highkey="000100", lowkey="000020"
    Column "DEPTNO" [CHAR(3)]:  colcard=14, numnulls=0, highkey="I22", lowkey="B01"
    
    Return Status = 0
  • Mit dem Typ remote-query können Sie Statistikdaten für alle Spalten in der Tabelle DEPARTMENT erfassen.
    call dvsys.collect_statistics('SAMPLE', 'DEPARTMENT', null, 2, null, ?)
    Value of output parameters
    --------------------------
    Parameter Name  : DIAGS
    Parameter Value : Collected statistics for table "SAMPLE  "."DEPARTMENT":
    Table Cardinality = 14
    Column "LOCATION" [CHAR(16)]:  colcard=1, numnulls=14, highkey="", lowkey=""
    Column "ADMRDEPT" [CHAR(3)]:  colcard=3, numnulls=0, highkey="E01", lowkey="A00"
    Column "DEPTNAME" [VARCHAR(36)]:  colcard=14, numnulls=0, highkey="SUPPORT SERVICES", lowkey="ADMINISTRATION SYSTEMS"
    Column "MGRNO" [CHAR(6)]:  colcard=9, numnulls=6, highkey="000100", lowkey="000010"
    Column "DEPTNO" [CHAR(3)]:  colcard=14, numnulls=0, highkey="J22", lowkey="A00"
    
    Return Status = 0
  • Verwenden Sie den Typ remote-query , um Statistikdaten für einige der Spalten in der Tabelle DEPARTMENT zu erfassen.
    call dvsys.collect_statistics('SAMPLE', 'DEPARTMENT', 'DEPTNO,DEPTNAME,LOCATION', 2, null, ?)
    Value of output parameters
    --------------------------
    Parameter Name  : DIAGS
    Parameter Value : Collected statistics for table "SAMPLE  "."DEPARTMENT":
    Table Cardinality = 14
    Column "LOCATION" [CHAR(16)]:  colcard=1, numnulls=14, highkey="", lowkey=""
    Column "DEPTNAME" [VARCHAR(36)]:  colcard=14, numnulls=0, highkey="SUPPORT SERVICES", lowkey="ADMINISTRATION SYSTEMS"
    Column "DEPTNO" [CHAR(3)]:  colcard=14, numnulls=0, highkey="J22", lowkey="A00"
    
    Return Status = 0
  • Verwenden Sie den Typ remote-query , um nur Statistiken zur Tabelle DEPARTMENT zu erfassen.
    call dvsys.collect_statistics('SAMPLE', 'DEPARTMENT', '', 2, null, ?)
    Value of output parameters
    --------------------------
    Parameter Name  : DIAGS
    Parameter Value : Collected statistics for table "SAMPLE  "."DEPARTMENT":
    Table Cardinality = 14
    
    Return Status = 0
  • Verwenden Sie den Typ remote-query , um zu versuchen, Statistikdaten für eine Spalte zu erfassen, die nicht in der Tabelle DEPARTMENT definiert ist.
    call dvsys.collect_statistics('SAMPLE', 'DEPARTMENT', 'DEPTNO,FIRSTNME', 2, null, ?)
    Value of output parameters
    --------------------------
    Parameter Name  : DIAGS
    Parameter Value : ERROR: VALIDATE COLUMN FILTER LIST -- Invalid column "FIRSTNME" in virtColumns
    
    Return Status = 0
  • Verwenden Sie den Typ remote-catalog , um Statistikdaten zu erfassen, wenn der ferne Katalog keine Statistikdaten für die lokale Tabelle (DEPARTMENT) enthält.
    call dvsys.collect_statistics('SAMPLE', 'DEPARTMENT', null, 1, null, ?)
    Value of output parameters
    --------------------------
    Parameter Name  : DIAGS
    Parameter Value : WARNING: No statistics found in remote catalog for table "SAMPLE  "."DEPARTMENT"
    
    Return Status = 0
  • Verwenden Sie den Typ remote-catalog , um Statistikdaten zu erfassen, wenn Spalten mit Sonderzeichen angegeben werden.
    call dvsys.collect_statistics('SAMPLE', 'SpecialChars', '"Col,1","Col""2"', 2, null, ?)
    Value of output parameters
    --------------------------
    Parameter Name  : DIAGS
    Parameter Value : Collected statistics for table "SAMPLE  "."SpecialChars":
    Table Cardinality = 4
    Column "Col,1" [INTEGER]:  colcard=3, numnulls=0, highkey="3", lowkey="1"
    Column "Col"2" [INTEGER]:  colcard=3, numnulls=1, highkey="2", lowkey="1"
    
    Return Status = 0
  • Verwenden Sie den Typ remote-catalog und eine Stichprobenrate von 20%, um Statistikdaten für alle Spalten in der Tabelle SALES zu erfassen. Der Tabelle SALES wurden zusätzliche Zeilen hinzugefügt, um die Stichprobenentnahme zu erleichtern.
    call dvsys.collect_statistics('SAMPLE', 'SALES', null, 2, 'TABLESAMPLE=20', ?)
    Value of output parameters
    --------------------------
    Parameter Name  : DIAGS
    Parameter Value : Collected statistics for table "SAMPLE  "."SALES":
    Table Cardinality = 1304
    Column "SALES_DATE" [DATE]:  colcard=247, numnulls=0, highkey="2007-03-31", lowkey="2005-12-31"
    Column "SALES_PERSON" [VARCHAR(15)]:  colcard=3, numnulls=0, highkey="LUCCHESSI", lowkey="GOUNOT"
    Column "SALES" [INTEGER]:  colcard=19, numnulls=0, highkey="19", lowkey="1"
    Column "REGION" [VARCHAR(15)]:  colcard=4, numnulls=0, highkey="Quebec", lowkey="Manitoba"
    
    Return Status = 0
  • Verwenden Sie den Typ remote-catalog , eine Auswahlrate von 20% und einen Schwellenwert SAMPLING_THRESHOLD von 40 Zeilen, um Statistikdaten für alle Spalten in der EMP-Tabelle zu erfassen, die standardmäßig 42 Zeilen enthält. Wenn SAMPLING_THRESHOLD nicht angegeben wird, wird die Option TABLESAMPLE ignoriert, da der Standardstichprobenschwellenwert 1000 Zeilen beträgt.
    call dvsys.collect_statistics('SAMPLE', 'EMP', null, 2, 'TABLESAMPLE=20,SAMPLING_THRESHOLD=40', ?)
    Value of output parameters
    --------------------------
    Parameter Name  : DIAGS
    Parameter Value : Collected statistics for table "SAMPLE  "."EMP":
    Table Cardinality = 42
    Column "EDLEVEL" [SMALLINT]:  colcard=5, numnulls=0, highkey="19", lowkey="12"
    Column "PHONENO" [CHAR(4)]:  colcard=10, numnulls=0, highkey="8953", lowkey="1793"
    Column "SEX" [CHAR(1)]:  colcard=2, numnulls=0, highkey="M", lowkey="F"
    Column "FIRSTNME" [VARCHAR(12)]:  colcard=11, numnulls=0, highkey="VINCENZO", lowkey="DIAN"
    Column "MIDINIT" [CHAR(1)]:  colcard=10, numnulls=0, highkey="V", lowkey=" "
    Column "BIRTHDATE" [DATE]:  colcard=11, numnulls=0, highkey="2003-05-26", lowkey="1955-09-15"
    Column "COMM" [DECIMAL(9,2)]:  colcard=11, numnulls=0, highkey="4220.00", lowkey="1272.00"
    Column "SALARY" [DECIMAL(9,2)]:  colcard=11, numnulls=0, highkey="96170.00", lowkey="31840.00"
    Column "LASTNAME" [VARCHAR(15)]:  colcard=9, numnulls=0, highkey="YAMAMOTO", lowkey="ADAMSON"
    Column "WORKDEPT" [CHAR(3)]:  colcard=6, numnulls=0, highkey="E21", lowkey="A00"
    Column "HIREDATE" [DATE]:  colcard=9, numnulls=0, highkey="2006-02-23", lowkey="1979-08-17"
    Column "BONUS" [DECIMAL(9,2)]:  colcard=4, numnulls=0, highkey="800.00", lowkey="300.00"
    Column "EMPNO" [CHAR(6)]:  colcard=9, numnulls=0, highkey="200340", lowkey="000050"
    Column "JOB" [CHAR(8)]:  colcard=5, numnulls=0, highkey="OPERATOR", lowkey="CLERK   "
    
    Return Status = 0
Generative KI-Suche und -Antwort
Diese Antworten werden von einem großen Sprachmodell in watsonx.ai basierend auf dem Inhalt der Produktdokumentation generiert. Weitere Informationen