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.
Utilisation d'une instance de lecteur dédiée pour les analyses
Pour les charges de travail gourmandes en analyses, exécutez vos requêtes de table étrangère sur une instance de lecteur Aurora dédiée afin qu'elles n'interrompent pas la charge de travail OLTP de votre rédacteur. Lorsque vous configurez ce lecteur, tenez compte des points suivants.
-
Ajuster
shared_buffers: les requêtes portant sur des tables étrangères ne sont pas utilisées. Dans le lecteurshared_buffers, vous pouvez donc les réduireshared_bufferset les augmenterquery_mempour libérer de la mémoire disponible par requête. -
Priorité de basculement : étant donné que le lecteur est optimisé pour les analyses plutôt que pour le trafic transactionnel, il est considéré comme un mauvais rédacteur s'il est promu lors d'un basculement. Attribuez-lui le niveau de promotion 15 (la priorité la plus basse) afin qu'Aurora promeuve d'abord un lecteur orienté vers les transactions. Aurora peut toujours en faire la promotion en dernier recours si aucune autre instance n'est disponible.
-
Point de terminaison de l'instance : connectez les clients d'analyse au point de terminaison de l'instance du lecteur ou à un point de terminaison personnalisé plutôt qu'au point de terminaison du lecteur du cluster, qui équilibre la charge entre tous les lecteurs et envoie des requêtes de table étrangères aux instances adaptées à d'autres charges de travail.
Gestion des requêtes de longue durée adressées aux lecteurs
Long-running les requêtes de table étrangères sur un lecteur affectent à la fois le rédacteur et le lecteur.
-
Impact sur le rédacteur : une requête de longue durée dans une table étrangère sur un lecteur empêche le rédacteur de nettoyer un tuple mort. Pendant l'exécution de la requête, le rédacteur ne peut pas récupérer les tuples morts que son aspirateur élimine normalement. Ils s'accumulent et dégradent les performances du rédacteur. Comme les requêtes de tables étrangères peuvent être exécutées pendant des minutes ou des heures, cet effet est plus prononcé sur un lecteur d'analyse.
-
Impact sur le lecteur : une requête de table étrangère accède également aux tables de catalogue locales et peut se joindre à des tables PostgreSQL classiques. Elle épingle donc les tampons de pages sur le lecteur, comme toute autre requête. Lorsque ces tampons sont bloqués, les opérations DDL ou vacuum effectuées sur le graveur peuvent déclencher des conflits de réplication (capture instantanée, verrouillage ou épingle de la mémoire tampon) qui annulent la requête ou redémarrent le lecteur. Comme les requêtes de tables étrangères ont tendance à s'exécuter plus longtemps, elles sont plus susceptibles de rencontrer ces conflits.
Pour limiter cet effet, configurez statement_timeout le lecteur d'analyse pour limiter la durée d'exécution d'une seule requête, et surveillez oldest_reader_feedback_xid_age le rédacteur dans Database Insights ou Amazon CloudWatch. Pour obtenir une version guidée de ce diagnostic et savoir comment arrêter la requête bloquante, consultez la section Résolution des bloqueurs de vide identifiables dans Aurora PostgreSQL dans le guide de l'utilisateur Amazon Aurora.