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.
Mémoire RDS pour PostgreSQL
La mémoire RDS pour PostgreSQL se décompose en deux parties : la mémoire partagée et la mémoire locale.
Mémoire partagée dans RDS pour PostgreSQL
RDS pour 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 principales.
Mémoires tampons partagées
Le groupe de mémoires tampons partagées est une zone de mémoire RDS pour 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 pour 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 pour PostgreSQL écrit ultérieurement sur un stockage permanent. Le mécanisme WAL permet à RDS pour 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 pour 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 paramètre wal_level détermine la quantité d’informations écrites dans la mémoire tampon WAL, les valeurs possibles étant par exemple minimal, replica et logical.
Mémoire locale dans RDS pour PostgreSQL
Chaque processus dorsal 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.
Le paramètre work_mem indique la quantité de mémoire à utiliser par les tables de hachage et les opérations de tri internes avant d’écrire dans des fichiers 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 paramètre maintenance_work_mem spécifie 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 paramètre temp_buffers définit le nombre maximal de mémoires tampons temporaires utilisées 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.