Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Voici les bonnes pratiques pour garantir de meilleures performances d’Amazon Redshift sur les tables protégées par RLS.
Sécurité des opérateurs et des fonctions
Lors de l’interrogation de tables protégées par RLS, l’utilisation de certains opérateurs ou de certaines fonctions peut entraîner une dégradation des performances. Amazon Redshift classe les opérateurs et les fonctions comme sécurisés ou non sécurisés pour interroger les tables protégées par RLS. Une fonction ou un opérateur est classé comme étant sécurisé par RLS lorsqu’il ne présente aucun effet secondaire observable en fonction des entrées. En particulier, une fonction ou un opérateur sécurisé par RLS ne peut pas correspondre à l’un des cas suivants :
-
Fournit une valeur d’entrée, ou toute valeur qui dépend de la valeur d’entrée, avec ou sans message d’erreur.
-
Echoue ou renvoie des erreurs qui dépendent de la valeur d’entrée.
Les opérateurs non sécurisés par RLS comprennent :
-
Les opérateurs arithmétiques — +, -, /, *, %.
-
Les opérateurs de texte – LIKE et SIMILAR TO.
-
Les opérateurs de distribution.
-
UDFs.
Utilisez l’instruction SELECT suivante pour vérifier la sécurité des opérateurs et des fonctions.
SELECT proname, proc_is_rls_safe(oid) FROM pg_proc;
Amazon Redshift impose des restrictions sur l’ordre d’évaluation des prédicats de l’utilisateur contenant des opérateurs et des fonctions non sécurisés par RLS lors de la planification de requêtes sur des tables protégées par RLS. Les requêtes faisant référence à des opérateurs ou des fonctions non sécurisés par RLS peuvent entraîner une dégradation des performances lors de l’interrogation de tables protégées par RLS. Les performances peuvent se dégrader de manière significative lorsqu’Amazon Redshift ne parvient pas à déléguer les prédicats non sécurisés par RLS aux analyses de la table de base pour tirer parti des clés de tri. Pour de meilleures performances, évitez les requêtes utilisant des prédicats non sécurisés par RLS qui tirent parti d’une clé de tri. Pour vérifier qu’Amazon Redshift est capable de déléguer des opérateurs et des fonctions, vous pouvez utiliser des instructions EXPLAIN en association avec l’autorisation système EXPLAIN RLS.
Mise en cache du résultat
Pour raccourcir le temps d’exécution des requêtes et améliorer les performances du système, Amazon Redshift met en cache les résultats de certains types de requêtes dans la mémoire du nœud principal.
Amazon Redshift utilise les résultats mis en cache pour une nouvelle requête analysant les tables protégées par RLS si l’ensemble des conditions pour les tables non protégées et les éléments suivants sont satisfaits :
-
Les tables ou les vues incluses dans la politique n’ont pas été modifiées.
-
La politique n’utilise pas une fonction qui nécessite une évaluation à chaque exécution telle que GETDATE ou CURRENT_USER.
Pour de meilleures performances, évitez d’utiliser des prédicats de politique qui ne satisfont pas les conditions ci-dessus.
Pour plus d’informations sur la mise en cache des résultats dans Amazon Redshift, consultez Mise en cache du résultat .
politiques complexes
Pour de meilleures performances, évitez d’utiliser des politiques complexes avec des sous-requêtes qui rejoignent plusieurs tables.