Documentation PostgreSQL 9.4.26 > Annexes > Modules supplémentaires fournis > pg_prewarm | |
pg_freespacemap | pgrowlocks |
Le module pg_prewarm fournit un moyen pratique de charger des données de relations dans le cache de données du système d'exploitation ou dans le cache de données de PostgreSQL™.
pg_prewarm(regclass, mode text default 'buffer', fork text default 'main', first_block int8 default null, last_block int8 default null) RETURNS int8
Le premier argument correspond à la relation qui doit être préchargée. Le second argument correspond à la méthode de préchargement à utiliser, comme cela sera vu plus bas. Le troisième argument correspond au type de fichier à précharger (généralement main). Le quatrième argument correspond au numéro du premier bloc à précharger (NULL est accepté comme synonyme de zéro). Le cinquième argument correspond au dernier numéro de bloc à précharger (NULL signifie de précharger jusqu'au dernier bloc trouvé dans la relation). La valeur retournée correspond au nombre de blocs préchargés.
Il y a trois méthodes de préchargement disponibles. prefetch envoie une requête de prélecture asynchrone au système d'exploitation si celui-ci le supporte ou sinon renvoie une erreur. read lit l'intervalle de blocs demandé. Contrairement à prefetch, toutes les plateformes et options de compilation le supportent, mais cette méthode peut être plus lente. buffer lit l'intervalle de blocs demandé pour le charger dans le cache de données de la base.
Il est à noter qu'avec n'importe laquelle de ces méthodes, tenter de précharger plus de blocs que'il est possible de mettre en cache -- par le système d'exploitation en utilisant prefetch ou read, ou par PostgreSQL™ en utilisant buffer -- aura probablement pour effet d'expulser du cache les blocs de numéro inférieur au fur et à mesure que les blocs de numéros supérieurs seront lus. De plus, le préchargement de données apprécie qu'aucune protection contre l'expulsion de données du cache ne soit présente. Il est donc possible que d'autres activités du système d'exploitation puissent évincer du cache les données fraîchement préchargées peu de temps après leur préchargement. Pour toutes ces raisons, le préchargement est typiquement plus utile au démarrage, quand les caches sont majoritairement vides.
Robert Haas <rhaas@postgresql.org>