Entwerfen von Handlern unter Berücksichtigung der Snowflake-bedingten Einschränkungen

Um die Stabilität in der Snowflake-Umgebung sicherzustellen, hat Snowflake die folgenden Einschränkungen für Handler-Code definiert. Wenn nicht anders angegeben, werden diese Einschränkungen bei der Ausführung des Handler-Codes erzwungen, nicht bei der Erstellung.

Unter diesem Thema:

Vermeiden eines zu hohen Verbrauchs an Arbeitsspeicher

Vermeiden Sie Folgendes, um nicht große Mengen an Arbeitsspeicher zu verbrauchen:

  • Große Datenwerte. Dazu können sowohl binäre Werte als auch große Arrays, Objekte oder Variant-Werte gehören.

    Snowflake konvertiert die Werte zwischen SQL-Datentypen und den entsprechenden Typen in der Handler-Sprache. Weitere Informationen dazu finden Sie unter Zuordnung von Datentypen zwischen SQL und Handler-Sprachen.

  • Zu große Stapeltiefe. Snowflake hat einfache Funktionsaufrufe mit einer Verschachtelungstiefe von 50 Ebenen ohne Fehler getestet. Die praktische Maximalgrenze hängt davon ab, wie viele Informationen im Stapel abgelegt werden.

Wenn der Handler-Code zu viel Arbeitsspeicher verbraucht, wird ein Fehler zurückgegeben. Das jeweilige Limit kann sich ändern.

Vermeiden von Algorithmen, die pro Aufruf sehr viel Zeit benötigen

Wenn die Handler-Ausführung zu lange dauert, bricht Snowflake die SQL-Anweisung ab und gibt einen Fehler an den Benutzer zurück. Dieses Limit begrenzt die Auswirkungen (und Kosten) von Fehlern wie Endlosschleifen.

Keine Verwendung von Bibliotheken, die Sicherheitslücken aufweisen könnten

Obwohl Ihr Handler Funktionen in externen Bibliotheken nutzen kann, deaktivieren Snowflake-Sicherheitseinschränkungen einige Funktionen, z. B. das Schreiben in Dateien. Weitere Informationen zu Bibliothekseinschränkungen finden Sie unter Sicherheitsverfahren für UDFs und Prozeduren.