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.
La mémoire RDS for PostgreSQL se décompose en deux parties : la mémoire partagée et la mémoire locale.
Mémoire partagée dans RDS for PostgreSQL
RDS for PostgreSQL alloue de la mémoire partagée au démarrage de l'instance. La mémoire partagée se décompose en sous-zones. Les sections suivantes décrivent les plus importantes.
Mémoires tampons partagées
Le groupe de mémoires tampons partagées est une zone de mémoire RDS for PostgreSQL qui contient toutes les pages actuellement ou précédemment utilisées par les connexions d'applications. Une page correspond à la version mémoire d'un bloc de disque. Le groupe de mémoires tampons partagées met en cache les blocs de données lus sur le disque. Le groupe réduit la nécessité de relire les données à partir du disque, ce qui améliore l'efficacité de la base de données.
Chaque table et chaque index est stocké sous la forme d'un tableau de pages de taille fixe. Chaque bloc contient plusieurs tuples, qui correspondent à des lignes. Un tuple peut être stocké sur n'importe quelle page.
Le groupe de mémoires tampons partagées dispose d'une mémoire limitée. Si une nouvelle demande requiert une page qui n'est pas en mémoire, et qu'il n'y a plus de mémoire disponible, RDS for PostgreSQL expulse une page moins fréquemment utilisée pour répondre à la demande. La politique d'expulsion est implémentée par un algorithme de balayage horaire.
Le paramètre shared_buffers
détermine la quantité de mémoire que le serveur consacre à la mise en cache des données. La valeur par défaut est définie sur {DBInstanceClassMemory/32768}
octets, en fonction de la mémoire disponible pour l'instance de base de données.
Mémoires tampons WAL (Write-Ahead Log)
Une mémoire tampon WAL (Write-Ahead Log) contient des données de transaction que RDS for PostgreSQL écrit ultérieurement sur un stockage permanent. Le mécanisme WAL permet à RDS for PostgreSQL d'effectuer les opérations suivantes :
-
Récupérer des données après une défaillance
-
Réduire les I/O disque en évitant les écritures fréquentes sur disque
Quand un client modifie des données, RDS for PostgreSQL écrit les modifications dans la mémoire tampon WAL. Lorsque le client émet une commande COMMIT
, le processus d'écriture WAL écrit les données de transaction dans le fichier WAL.
Le wal_level
paramètre détermine la quantité d'informations écrites dans le WAL, avec des valeurs possibles telles que minimal
replica
, etlogical
.
Mémoire locale dans RDS for PostgreSQL
Chaque processus backend alloue de la mémoire locale pour le traitement des requêtes.
Rubriques
Zone de mémoire de travail
La zone de mémoire de travail contient des données temporaires pour les requêtes qui effectuent des opérations de tri et de hachage. Par exemple, une requête contenant une clause ORDER BY
effectue un tri. Les requêtes utilisent des tables de hachage dans les jointures de hachage et les agrégations.
work_mem
Paramètre indiquant la quantité de mémoire à utiliser par les opérations de tri internes et les tables de hachage avant d'écrire sur des fichiers de disque temporaires, mesurée en mégaoctets. La valeur par défaut est de 4 Mo. Plusieurs sessions peuvent s'exécuter simultanément et chacune peut exécuter des opérations de maintenance en parallèle. La mémoire de travail totale utilisée peut donc être un multiple du paramètre work_mem
.
Zone de mémoire des travaux de maintenance
La zone de mémoire des travaux de maintenance met les données en cache pour les opérations de maintenance. Ces opérations incluent l'opération VACUUM, la création d'un index et l'ajout de clés étrangères.
Le maintenance_work_mem
paramètre indique la quantité maximale de mémoire à utiliser par les opérations de maintenance, mesurée en mégaoctets. La valeur par défaut est de 64 Mo. Une session de base de données ne peut exécuter qu'une seule opération de maintenance à la fois.
Zone de mémoire tampon temporaire
La zone de mémoire tampon temporaire met en cache les tables temporaires pour chaque session de base de données.
Chaque session alloue des mémoires tampons temporaires en fonction des besoins jusqu'à la limite que vous spécifiez. Lorsque la session se termine, le serveur efface le contenu des mémoires tampons.
Le temp_buffers
paramètre définit le nombre maximum de tampons temporaires utilisés par chaque session, mesuré en mégaoctets. La valeur par défaut est de 8 Mo. Avant la première utilisation de tables temporaires au sein d'une session, vous pouvez modifier la valeur temp_buffers
.