Amazon Redshift wird UDFs ab dem 1. November 2025 die Erstellung von neuem Python nicht mehr unterstützen. Wenn Sie Python verwenden möchten UDFs, erstellen Sie das UDFs vor diesem Datum liegende. Bestehendes Python UDFs wird weiterhin wie gewohnt funktionieren. Weitere Informationen finden Sie im Blogbeitrag
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Bewährte Methoden für RLS-Leistung
Im Folgenden finden Sie bewährte Methoden, um eine bessere Leistung von Amazon Redshift auf Tabellen zu gewährleisten, die durch RLS geschützt sind.
Sicherheit von Operatoren und Funktionen
Bei der Abfrage von RLS-geschützten Tabellen kann die Verwendung bestimmter Operatoren oder Funktionen zu Leistungseinbußen führen. Amazon Redshift klassifiziert Operatoren und Funktionen entweder als sicher oder unsicher für die Abfrage von RLS-geschützten Tabellen. Eine Funktion oder ein Operator wird als RLS-sicher eingestuft, wenn sie abhängig von den Eingaben keine beobachtbaren Nebenwirkungen hat. Insbesondere darf eine RLS-sichere Funktion oder ein Operator nicht einer der folgenden sein:
-
Gibt einen Eingabewert oder jeden vom Eingabewert abhängigen Wert mit oder ohne Fehlermeldung aus.
-
Schlägt fehl oder gibt Fehler zurück, die vom Eingabewert abhängen.
Zu den RLS-unsicheren Operatoren gehören:
-
Arithmetische Operatoren — +, -, /, *, %.
-
Textoperatoren – LIKE und SIMILAR TO.
-
Cast-Operatoren.
-
UDFs.
Verwenden Sie die folgende SELECT-Anweisung, um die Sicherheit von Operatoren und Funktionen zu überprüfen.
SELECT proname, proc_is_rls_safe(oid) FROM pg_proc;
Amazon Redshift schränkt die Reihenfolge der Auswertung von Benutzerprädikaten ein, die RLS-unsichere Operatoren und Funktionen enthalten, wenn Abfragen für RLS-geschützte Tabellen geplant werden. Abfragen, die auf RLS-unsichere Operatoren oder Funktionen verweisen, können beim Abfragen von RLS-geschützten Tabellen zu Leistungseinbußen führen. Die Leistung kann sich erheblich verschlechtern, wenn Amazon Redshift RLS-unsichere Prädikate nicht auf Basistabellen-Scans verschieben kann, um Sortierschlüssel zu nutzen.. Vermeiden Sie für eine bessere Leistung Abfragen mit RLS-unsicheren Prädikaten, die einen Sortierschlüssel nutzen. Um zu überprüfen, ob Amazon Redshift in der Lage ist, Operatoren und Funktionen weiterzugeben, können Sie EXPLAIN-Anweisungen in Kombination mit der Systemberechtigung EXPLAIN RLS verwenden.
Ergebnis-Zwischenspeicherung
Um die Laufzeit von Abfragen zu reduzieren und die Systemleistung zu verbessern, stellt Amazon Redshift die Ergebnisse bestimmter Abfragetypen in den Speicher auf dem Führungsknoten.
Amazon Redshift verwendet zwischengespeicherte Ergebnisse für eine neue Abfrage, die RLS-geschützte Tabellen scannt, wenn alle Bedingungen für ungeschützte Tabellen zutreffen und wenn alle der folgenden Bedingungen zutreffen:
-
Die Tabellen oder Ansichten in der Richtlinie wurden nicht geändert.
-
Die Richtlinie verwendet keine Funktion, die jedes Mal ausgewertet werden muss, wenn sie ausgeführt wird, wie z. B. GETDATE oder CURRENT_USER.
Um eine bessere Leistung zu erzielen, sollten Sie die Verwendung von Richtlinienprädikaten vermeiden, die die oben genannten Bedingungen nicht erfüllen.
Weitere Informationen zum Zwischenspeichern von Ergebnissen in Amazon Redshift finden Sie unter Ergebnis-Zwischenspeicherung .
Komplexe Richtlinien
Vermeiden Sie für eine bessere Leistung die Verwendung komplexer Richtlinien mit Unterabfragen, die mehrere Tabellen verknüpfen.