Oui, il est possible d'effacer à la fois le cache postgres des tampons partagés ET le cache du système d'exploitation. La solution ci-dessous est pour Windows ... d'autres ont déjà donné la solution linux.
Comme beaucoup de gens l'ont déjà dit, pour vider les tampons partagés, vous pouvez simplement redémarrer Postgres (pas besoin de redémarrer le serveur). Mais cela ne videra pas le cache du système d'exploitation.
Pour effacer le cache du système d'exploitation utilisé par Postgres, après avoir arrêté le service, utilisez l'excellent RamMap ( https://technet.microsoft.com/en-us/sysinternals/rammap ), de l'excellent Sysinternals Suite. Une fois que vous avez exécuté RamMap, cliquez simplement sur "Vider" -> "Vider la liste d'attente" dans le menu principal.
Redémarrez Postgres et vous verrez maintenant que votre prochaine requête sera très lente en raison de l'absence de cache.
Vous pouvez également exécuter le RamMap sans fermer Postgres, et vous obtiendrez probablement les résultats "sans cache" que vous voulez, car comme les gens l'ont déjà dit, les tampons partagés ont généralement peu d'impact par rapport au cache du système d'exploitation. Mais pour un test fiable, je préfère arrêter les postgres comme tout avant de vider le cache du système d'exploitation pour m'en assurer.
Remarque: AFAIK, je ne recommande pas d'effacer les autres choses en plus de "Liste de veille" lorsque vous utilisez RamMap, car les autres données sont en quelque sorte utilisées, et vous pouvez potentiellement causer des problèmes / perdre des données si vous faites cela. N'oubliez pas que vous effacez la mémoire non seulement utilisée par les fichiers postgres, mais également par toute autre application et système d'exploitation.
Cordialement, Thiago L.