Amazon Redshift non supporterà più la creazione di nuovi Python a UDFs partire dal 1° novembre 2025. Se vuoi usare Python UDFs, crea la UDFs data precedente a quella data. Python esistente UDFs continuerà a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Best practice per le prestazioni RLS
Di seguito sono riportate le best practice per garantire prestazioni migliori da Amazon Redshift su tabelle protette da RLS.
Sicurezza degli operatori e delle funzioni
Quando si eseguono query su tabelle protette da RLS, l'utilizzo di determinati operatori o funzioni può portare a un peggioramento delle prestazioni. Amazon Redshift classifica operatori e funzioni come sicuri o non sicuri per l'esecuzione di query su tabelle protette da RLS. Una funzione o un operatore è classificato come sicuro per RLS quando non ha effetti collaterali osservabili a seconda degli input. In particolare, una funzione o un operatore sicuro per RLS non può essere uno dei seguenti:
-
Emette un valore di input, o qualsiasi valore dipendente dal valore di input, con o senza un messaggio di errore.
-
Non riesce o restituisce errori che dipendono dal valore di input.
Gli operatori RLS non sicuri includono:
-
Operatori aritmetici: +, -, /, *, %.
-
Operatori di testo: LIKE e SIMILAR TO.
-
Operatori cast.
-
UDFs.
Utilizza la seguente istruzione SELECT per verificare la sicurezza degli operatori e delle funzioni.
SELECT proname, proc_is_rls_safe(oid) FROM pg_proc;
Amazon Redshift impone delle limitazioni sull'ordine di valutazione dei predicati utente contenenti operatori e funzioni non sicuri per RLS durante la pianificazione di query su tabelle protette da RLS. Le query che fanno riferimento a operatori o funzioni non sicure per RLS, durante l'esecuzione di query su tabelle protette da RLS possono causare una riduzione delle prestazioni. Le prestazioni possono peggiorare in modo significativo quando Amazon Redshift non è in grado di inviare predicati non sicuri per RLS nelle scansioni della tabella di base per sfruttare le chiavi di ordinamento. Per ottenere prestazioni migliori, evita le query che utilizzano predicati RLS non sicuri che sfruttano una chiave di ordinamento. Per verificare che Amazon Redshift sia in grado di disattivare operatori e funzioni, è possibile utilizzare le istruzioni EXPLAIN in combinazione con l'autorizzazione di sistema EXPLAIN RLS.
Caching dei risultati
Per ridurre il tempo di esecuzione delle query e migliorare le prestazioni del sistema, Amazon Redshift memorizza i risultati di certi tipi di query nella memoria sul nodo principale.
Amazon Redshift utilizza i risultati nella cache per una nuova query che esegue la scansione delle tabelle protette da RLS quando si verificano tutte queste condizioni per le tabelle non protette e quando si verificano tutte queste altre condizioni:
-
La tabella o le visualizzazioni nella policy non sono state modificate.
-
La policy non usa una funzione che deve essere valutata a ogni esecuzione, come GETDATE o CURRENT_USER.
Per prestazioni migliori, evita di utilizzare predicati di policy che non soddisfano le condizioni di cui sopra.
Per ulteriori informazioni sulla memorizzazione nella cache dei risultati in Amazon Redshift, consulta Caching dei risultati .
Policy complesse
Per prestazioni migliori, evita di utilizzare policy complesse con query secondarie che uniscono più tabelle.