Hybride Tabellen erstellen

Dieses Thema bietet eine Übersicht über das Erstellen von Hybridtabellen in Snowflake.

Bemerkung

Um eine Hybridtabelle zu erstellen, müssen Sie ein aktives Warehouse haben, das als aktuelles Warehouse Ihrer Sitzung angegeben ist. Es können Fehler auftreten, wenn beim Erstellen einer Hybridtabelle kein aktives Warehouse angegeben wird. Weitere Informationen dazu finden Sie unter Verwenden von Warehouses.

CREATEHYBRIDTABLE-Optionen

Sie können eine Hybridtabelle mit einer der folgenden Methoden erstellen.

  • CREATE HYBRID TABLE. Das folgende Beispiel erstellt eine Hybridtabelle mit einer erforderlichen PRIMARY KEY-Einschränkung, fügt einige Zeilen ein, löscht eine Zeile und fragt die Tabelle ab:

    CREATE OR REPLACE HYBRID TABLE application_log (
      id NUMBER PRIMARY KEY AUTOINCREMENT,
      col1 VARCHAR(20),
      col2 VARCHAR(20) NOT NULL
      );
    
    INSERT INTO application_log (col1, col2) VALUES ('A1', 'B1');
    INSERT INTO application_log (col1, col2) VALUES ('A2', 'B2');
    INSERT INTO application_log (col1, col2) VALUES ('A3', 'B3');
    INSERT INTO application_log (col1, col2) VALUES ('A4', 'B4');
    
    SELECT * FROM application_log;
    
    UPDATE application_log SET col2 = 'B3-updated' WHERE id = 3;
    
    DELETE FROM application_log WHERE id = 4;
    
    SELECT * FROM application_log;
    
    Copy
  • CREATE HYBRID TABLE :.. AS SELECT (CTAS) oder CREATE HYBRID TABLE … LIKE. Beispiel:

    CREATE OR REPLACE HYBRID TABLE dept_employees (
      employee_id INT PRIMARY KEY,
      department_id VARCHAR(200)
      )
    AS SELECT employee_id, department_id FROM company_employees;
    
    Copy

Laden von Daten

Bemerkung

Da der primäre Speicher für Hybridtabellen ein Zeilenspeicher ist, haben Hybridtabellen in der Regel einen größeren Speicherplatzbedarf als Standardtabellen. Der Hauptgrund für den Unterschied ist, dass spaltenförmige Daten für Standardtabellen oft eine höhere Komprimierung erzielen. Weitere Informationen zu den Speicherkosten finden Sie unter Kosten für Hybridtabellen.

Optimiertes Massenladen

Sie können Daten in großen Mengen in Hybridtabellen laden, indem Sie sie entweder aus einem Stagingbereich oder aus anderen Tabellen kopieren (mit CTAS, COPY INTO <Tabelle> oder INSERT INTO. … SELECT).

Die Optimierung von Massenladungen hängt davon ab, ob die Tabelle frisch erstellt wurde, ohne dass jemals Datensätze geladen wurden, oder ob sie mit einer CTAS-Abfrage erstellt wurde.

Wenn eine Hybridtabelle leer ist, verwenden alle drei Lademethoden (CTAS, COPY, und INSERT INTO. .. SELECT) optimiertes Massenladen, um den Ladevorgang zu beschleunigen. Nachdem die Tabelle geladen wurde, gilt die normale INSERT-Leistung. Sie können immer noch inkrementelle Batch-Ladungen mit den Operationen COPY und INSERT INTO. .. SELECT durchführen, aber diese sind in der Regel weniger effizient. Massenladegeschwindigkeiten von ca. 1 Million Datensätzen pro Minute sind üblich, können aber je nach Struktur der Tabelle stark variieren (z. B. sind größere Datensätze langsamer zu laden). Das optimierte Massenladen wird in einem zukünftigen Release um die Unterstützung von inkrementellem Batch-Laden erweitert.

Sie können die Statistics-Informationen in Snowsight-Abfrageprofilen überprüfen, um festzustellen, ob der Massenlade-Schnellpfad verwendet wurde. Number of rows inserted wird als Number of rows bulk loaded bezeichnet, wenn der Schnellpfad verwendet wird. Diese CTAS-Operation lädt zum Beispiel 200.000 Zeilen in eine neue Tabelle:

CTAS-Abfrageprofil, das das optimierte Massenladen verwendet

Ein nachfolgendes inkrementelles Batch-Laden in dieselbe Tabelle würde kein optimiertes Massenladen verwenden.

Weitere Informationen zu Abfrageprofilen finden Sie unter Abfrageprofile für Hybridtabellen analysieren und Abfrageaktivität mit Abfrageverlauf überwachen.

Achtung

CTAS-Befehle unterstützen keine FOREIGN KEY-Einschränkungen. Wenn Ihre Hybridtabelle FOREIGN KEY-Einschränkungen erfordert, verwenden Sie COPY oder INSERT INTO. … SELECT, um die Tabelle zu laden.

Bemerkung

Andere Methoden zum Laden von Daten in Snowflake-Tabellen (z. B. Snowpipe) werden derzeit nicht unterstützt.

Fehler bei der Indexerstellung während des Ladens

Die Indexgrößen sind in der Breite begrenzt. Wenn Sie Indizes für Spalten in einer Hybridtabelle erstellen, insbesondere Indizes für eine große Anzahl von Spalten, kann jeder Befehl, der die Tabelle lädt (einschließlich CTAS, COPY oder INSERT INTO. .. SELECT), den folgenden Fehler zurückgeben. In diesem Fall enthält die Tabelle einen Index namens IDX_HT100_COLS:

The value is too long for index "IDX_HT100_COLS".

Dieser Fehler tritt auf, weil der zeilenbasierte Speicher eine Beschränkung der Größe der Daten (und Metadaten) vorsieht, die pro Datensatz gespeichert werden können. Um die Datensatzgröße zu verringern, versuchen Sie, die Tabelle zu erstellen, ohne größere Spalten (wie breite VARCHAR-Spalten) als indizierte Spalten anzugeben. Sie können auch versuchen, Indizes für weniger Spalten zu erstellen.

Sie können auch versuchen, INCLUDE-Spalten für sekundäre Indizes zu verwenden, wenn Sie eine Hybridtabelle oder einen Index für eine Hybridtabelle erstellen. Weitere Informationen dazu finden Sie unter INCLUDE-Spalten.